Pytorch PyTroch,梯度计算

Pytorch PyTroch,梯度计算,pytorch,gradient,Pytorch,Gradient,嗨,我正在努力理解pytorch的NN。 我对梯度计算有疑问 将torch.optim导入为optim create your optimizer optimizer = optim.SGD(net.parameters(), lr=0.01) ``` # in your training loop: optimizer.zero_grad() # zero the gradient buffers output = net(input) loss = criterion(output,

嗨,我正在努力理解pytorch的NN。 我对梯度计算有疑问

将torch.optim导入为optim

create your optimizer
optimizer = optim.SGD(net.parameters(), lr=0.01)


```
# in your training loop:
optimizer.zero_grad()   # zero the gradient buffers
output = net(input)
loss = criterion(output, target)
loss.backward()
optimizer.step()    # Does the update
```
从about代码中,我了解了loss.backward()计算梯度。 我不确定这些信息是如何与
优化器共享的,以更新梯度

有人能解释一下吗


提前谢谢

当您在此行中创建优化器时

optimizer = optim.SGD(net.parameters(), lr=0.01)
您提供了
net.parameters()
,其中包含将根据渐变更新的所有可学习参数

模型和优化器的连接只是因为它们共享相同的参数


PyTorch参数是张量。它们不再被称为变量。

当您在这行中创建优化器时

optimizer = optim.SGD(net.parameters(), lr=0.01)
您提供了
net.parameters()
,其中包含将根据渐变更新的所有可学习参数

模型和优化器的连接只是因为它们共享相同的参数


PyTorch参数是张量。它们不再称为变量。

渐变附加到模型内部的变量(通过调用
net.parameters()
访问)。调用
loss.backward()
时,将填充这些渐变。正如您的优化人员从
optim.SGD(net.parameters(),lr=0.01)
中了解到的参数一样,它可以直接访问每个参数及其相应的梯度并应用它们。梯度附加到模型内部的变量(通过调用
net.parameters()
访问)。调用
loss.backward()
时,将填充这些渐变。正如您的优化人员从
optim.SGD(net.parameters(),lr=0.01)
中了解到的参数一样,它可以直接访问每个参数及其相应的梯度并应用它们。