神经网络、损失和优化器在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()

我不明白的是:


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


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


优化器也不会访问丢失。


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


PIPIONE
浏览 117回答 1
1回答

当年话下

Optimizer是用net.parameters()初始化的,我认为这是net的内部权重。这是因为优化器将在训练期间修改网络的参数。损失不会访问这些参数,也不会访问网络本身。它只能访问网络的输出和输入标签。损失仅计算预测与真实值之间的误差。优化器也不会访问丢失。它访问在loss.backward
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python