注:本代码在jupyter notebook上运行
封面图片来源
1 一个简单的例子
作为一个演示例子,假设我们想对函数y=2xTX关于列向量求导。 首先,我们创建变量x并为其分配一个初始值。
import torch
x = torch.arange(4.0)
x
在我们计算y关于x的梯度之前,需要一个地方来存储梯度。 重要的是,我们不会在每次对一个参数求导时都分配新的内存。 因为我们经常会成千上万次地更新相同的参数,每次都分配新的内存可能很快就会将内存耗尽。 注意,一个标量函数关于向量x的梯度是向量,并且与x具有相同的形状。
x.requires_grad_(True) # 等价于x=torch.arange(4.0,requires_grad=True)
# 这行代码的作用是设置变量 x 需要梯度计算
print(x.grad) # 默认值是None
# 计算y
y = 2 * torch.dot(x, x)# 点积</