美文网首页
pytorch基础二(自动求导)

pytorch基础二(自动求导)

作者: 永远学习中 | 来源:发表于2018-12-01 22:51 被阅读0次

本人学习pytorch主要参考官方文档莫烦Python中的pytorch视频教程。
后文主要是对pytorch官网的文档的总结。
卷积神经网络的一个核心是差分,pytorch的一个核心包是自动求导autograd包。
该包能够自动对所有tensor中的操作进行自动差分。
torch.Tensor是这个包中的核心类。如果你将.requires_grad设置为True。当你完成运算并调用.backward()时,会自动求导。计算得到的梯度将会存放在.grad属性中。
可以通过调用.detach()方法停止计算。也可以通过with torch.no_grad():在某一代码块表示不进行计算。
对求导很重要的一个类是Function

自动求导

import torch
x = torch.ones(2, 2, requires_grad=True)
y = x + 2
print(y.grad_fn)
z = y * y * 3
out = z.mean()
#使用x对out求导
out.backward()
print(x.grad)
#output:
#<AddBackward object at #0x00000000023D7160>
#tensor([[4.5000, 4.5000],
 #       [4.5000, 4.5000]])

设置是否计算梯度

a = torch.randn(2, 2)
a = ((a * 3) / (a - 1))
print(a.requires_grad)
a.requires_grad_(True)
print(a.requires_grad)
print((a**2).requires_grad)

相关文章

网友评论

      本文标题:pytorch基础二(自动求导)

      本文链接:https://www.haomeiwen.com/subject/hmtdcqtx.html