变量 (Variable)(已经和tensor合并为一类)

什么是 Variable

Tensor是Pytorch的一个完美组件(可以生成高维数组),但是要构建神经网络还是远远不够的,我们需要能够计算图的Tensor,那就是Variable。Variable是对Tensor的一个封装,操作和Tensor是一样的,但是每个Variable都有三个属性,Varibale的Tensor本身的.data,对应Tensor的梯度.grad,以及这个Variable是通过什么方式得到的.grad_fn。

Variable 计算, 梯度

import torch
from torch.autograd import Variable

x_tensor=torch.randn(10,5)
y_tensor=torch.randn(10,5)
# 将 tensor 变成 Variable
x=Variable(x_tensor,requires_grad=True)# 默认 Variable 是不需要求梯度的,
# 所以我们用这个方式申明需要对其进行求梯度
y=Variable(y_tensor,requires_grad=True)
z = torch.sum(x + y)


print(z.data)# z 中的 tensor 数值
print(z.grad_fn)#通过grad_fn知道了其是通过 Sum 这种方式得到的

# 求 x 和 y 的梯度
z.backward()# 模拟z 的误差反向传递

print(x.grad)
print(y.grad)
#通过.grad我们得到了 x 和 y 的梯度
发布了20 篇原创文章 · 获赞 16 · 访问量 1739

猜你喜欢

转载自blog.csdn.net/komorebi6/article/details/104224843