繁体   English   中英

PyTorch 中的神经网络、损失和优化器是如何连接的?

[英]How are neural networks, loss and optimizer connected in PyTorch?

我已经看到了这个问题的答案,但我仍然完全不明白。 据我所知,这是最基本的设置:

net = CustomClassInheritingFromModuleWithDefinedInitAndForward()
criterion = nn.SomeLossClass()
optimizer = optim.SomeOptimizer(net.parameters(), ...)
for _, data in enumerate(trainloader, 0):
    inputs, labels = data
    optimizer.zero_grad()
    outputs = net(inputs)
    loss = criterion(outputs, labels)
    loss.backward()
    optimizer.step()

我不明白的是:

优化器用 net.parameters() 初始化,我认为这是网络的内部权重。

损失不会访问这些参数,也不会访问网络本身。 它只能访问网络的输出和输入标签。

优化器也不访问损失。

因此,如果损失仅适用于输出而优化器仅适用于 net.parameters,那么它们如何连接?

优化器用 net.parameters() 初始化,我认为这是网络的内部权重。

这是因为优化器会在训练期间修改您的网络参数。

损失不会访问这些参数,也不会访问网络本身。 它只能访问网络的输出和输入标签。

损失仅计算预测和真相之间的误差。

优化器也不访问损失。

它访问在loss.backward期间计算的张量

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM