[英]How does PyTorch know to which neural network the training loss shall be propagated back if you have multiple neural networks?
[英]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.