我已经看到了this question的答案,但我还是一点也不懂。据我所知,这是最基本的设置:
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()初始化的,我认为这是网络的内部权重
Loss不访问这些参数,也不访问网络本身。它只能访问网络的输出和输入标签
优化器也不会访问丢失
所以,如果loss只对输出有效,而optimizer只对net.parameters有效,那么它们如何连接呢
这是因为优化器将在培训期间修改网络的参数
损失只计算预测与事实之间的误差
它访问在
loss.backward
期间计算的张量相关问题 更多 >
编程相关推荐