我已经看到了这个问题的答案,但我仍然完全不明白。据我所知,这是最基本的设置: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()我不明白的是:Optimizer是用net.parameters()初始化的,我认为这是net的内部权重。损失不会访问这些参数,也不会访问网络本身。它只能访问网络的输出和输入标签。优化器也不会访问丢失。那么,如果损失只适用于输出,而优化器仅适用于net.parameters,那么它们如何连接呢?
1 回答
当年话下
TA贡献1890条经验 获得超9个赞
Optimizer是用net.parameters()初始化的,我认为这是net的内部权重。
这是因为优化器将在训练期间修改网络的参数。
损失不会访问这些参数,也不会访问网络本身。它只能访问网络的输出和输入标签。
损失仅计算预测与真实值之间的误差。
优化器也不会访问丢失。
它访问在loss.backward
添加回答
举报
0/150
提交
取消