python pytorch学习(二)

自动微分

pytorch所有网络核心是autograde自动求导包。autograde.Variable是包的核心类,它包装了张量,并且几乎支持所有的操作。可以调用.backward()方法,然后所有的梯度计算会自动完成。注意的是,通过.data属性来访问原始的张量。

引用:{

Variable 和 Function 是相互联系的, 并且它们构建了一个非循环的图, 编码了一个完整的计算历史信息. 每一个 variable(变量)都有一个 .grad_fn 属性, 它引用了一个已经创建了 Variable 的 Function (除了用户创建

的 Variable `` 之外 - 它们的 ``grad_fn is None ).

如果你想计算导数, 你可以在 Variable 上调用 .backward() 方法. 如果 Variable 是标量的形式(例如, 它包含一个元素数据), 你不必指定任何参数给 backward(), 但是, 如果它有更多的元素. 你需要去指定一个 grad_output 参数, 该参数是一个匹配 shape(形状)的张量。

}

#coding=utf-8
import torch
from torch.autograd import Variable

x = Variable(torch.ones(2,2),requires_grad=True)
print x

y = x + 2
print y

z = y*y*3
print z

out = z.mean()
print out

out.backward()
print x.grad

结果:

Variable containing:
 1  1
 1  1
[torch.FloatTensor of size 2x2]


Variable containing:
 3  3
 3  3
[torch.FloatTensor of size 2x2]


Variable containing:
 27  27
 27  27
[torch.FloatTensor of size 2x2]


Variable containing:
 27
[torch.FloatTensor of size 1]


Variable containing:
 4.5000  4.5000
 4.5000  4.5000
[torch.FloatTensor of size 2x2]

猜你喜欢

转载自blog.csdn.net/nanxiaoting/article/details/81056067
今日推荐