网站建设报价单,wild合成版是哪个网站做的,国家企业信用信息系统(全国),哪个网站专业做饲料Variable#xff08;变量#xff09;
autograd.Variable 是包的核心类. 它包装了张量, 并且支持几乎所有的操作. 一旦你完成了你的计算, 你就可以调用 .backward() 方法, 然后所有的梯度计算会自动进行.
你还可以通过 .data 属性来访问原始的张量, 而关于该 variable#…Variable变量
autograd.Variable 是包的核心类. 它包装了张量, 并且支持几乎所有的操作. 一旦你完成了你的计算, 你就可以调用 .backward() 方法, 然后所有的梯度计算会自动进行.
你还可以通过 .data 属性来访问原始的张量, 而关于该 variable变量的梯度会被累计到 .grad上去. Variable
还有一个针对自动求导实现来说非常重要的类 - Function.
Variable 和 Function 是相互联系的, 并且它们构建了一个非循环的图, 编码了一个完整的计算历史信息. 每一个 variable变量都有一个 .grad_fn 属性, 它引用了一个已经创建了 Variable 的 Function 除了用户创建的 Variable 之外 - 它们的 grad_fn is None .
如果你想计算导数, 你可以在 Variable 上调用 .backward() 方法. 如果 Variable 是标量的形式例如, 它包含一个元素数据, 你不必指定任何参数给 backward(), 但是, 如果它有更多的元素. 你需要去指定一个 grad_output 参数, 该参数是一个匹配 shape形状的张量.
import torch
from torch.autograd import Variable创建 variable变量:
x Variable(torch.ones(2, 2), requires_grad True)
print(x)variable变量的操作:
y x 2
print(y)y 由操作创建,所以它有 grad_fn 属性.
print(y.grad_fn)y 的更多操作
z y * y * 3
out z.mean()print(z, out)梯度
我们现在开始了解反向传播, out.backward() 与 out.backward(torch.Tensor([1.0])) 这样的方式一样
out.backward()但因 d(out)/dx 的梯度
print(x.grad)你应该得到一个 4.5 的矩阵. 让我们推导出 out Variable “oo”. 我们有 o14∑izio14∑izi, zi3(xi2)2zi3(xi2)2和 zi∣∣xi127zi|xi127. 因此, ∂o∂xi32(xi2)∂o∂xi32(xi2), 所以 ∂o∂xi∣∣xi1924.5∂o∂xi|xi1924.5.
你可以使用自动求导来做很多有趣的事情
x torch.randn(3)
x Variable(x, requires_grad True)y x * 2
while y.data.norm() 1000:y y * 2print(y)gradients torch.FloatTensor([0.1, 1.0, 0.0001])
y.backward(gradients)print(x.grad)