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

问题描述 投票:0回答:1

我已经看到了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()初始化,我认为这是网络的内部权重。

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

Optimizer也不会丢失访问权限。

因此,如果损耗仅对输出有效,而优化器仅对net.parameter有效,如何连接它们?

python neural-network pytorch gradient-descent backpropagation
1个回答
0
投票

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

这是因为优化程序将在培训期间修改网络的参数。

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

损失只计算出预测和真实之间的误差。

Optimizer也不会丢失访问权限。

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

© www.soinside.com 2019 - 2024. All rights reserved.