任务描述
本关任务:
本关提供了一个张量变量tensor ,根据所给的张量创建 Variable 变量v,同时要求同学们掌握 Variable 的相关属性,例如如何获得 Variable 的 data 属性。
相关知识
之前我们学习” Pytorch 之 Tensor “中提过, Pytorch和 Numpy 有很多相似之处,而 Pytorch 与其最不同的地方在于 Pytorch 提供了自动求导功能,也就是可以自动计算出用户所需的参数的梯度,这个操作由另外一个基本元素提供——Variable。
本质上Variable和Tensor没有区别,多数情况下,将Tensor替换为Variable,代码一样会正常的工作。不过Variabel会放入一个计算图(computational graph),这个图将所有的计算步骤 (节点) 都连接起来,进行前向传播,反向传播以及自动求导。在最后进行误差反向传递时,一次性将所有 Variable 里面的梯度都计算出来,而Tensor 就没有这个能力啦。
autograd.Variable 是这个包中最核心的类。 它包装了一个 Tensor,并且几乎支持所有定义在其上的操作。一旦完成了运算,用户可以调用 .backward()来自动计算出所有的梯度,可以通过属性 .data 来访问原始的Tensor,而关于Variable的梯度则集中于 .grad 属性中。
创建 Variable
在创建之前,首先要引入相应的包,如下列代码所示:
import torch
from torch.autograd import Variable
基本形式:
Variable(data, requires_grad=True)
参数说明:
data: 任意的 tensor 类
requires_grad:是否参与误差反向传播, 是否计算计算梯度
应用示例:
tensor = torch.FloatTensor([[1,2],[3,4]])
variable = Variable(tensor, requires_grad=True)
输出结果:
Variable containing:
1 2
3 4
[torch.FloatTensor of size 2x2]
Variable 数据
利用variable.data可获取 Variable 中的张量。
应用示例:
print(variable.data)
输出结果:
1 2
3 4
[torch.FloatTensor of size 2x2]
任务描述
本关要求掌握Variable 的基本属性及其意义,如requires_grad属性标记着该Variable 是否需要求导。
本关任务:
本关提供了一个32位浮点型的张量 x,要求同学们根据 x创建一个Variable类型的变量 y, y是由 x 的平方计算得到,并输出y的Requires Gradiet属性和Gradient属性。
相关知识
Variable 形式的数据, 在很多时候是用不了的( 比如想要用 plt 画图 ), 所以我们要转换一下, 将它变成 tensor 形式。
Variable 数据
之前我们学习了利用.data访问 Variable 的 Tensor,可以在此基础上利用 numpy() 转换为 numpy 类型。
应用示例:
print(variable.data.numpy())
输出结果:
[[ 1. 2.]
[ 3. 4