PyTorch中的神经网络、损耗和优化器是如何连接的?

2024-09-29 21:56:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经看到了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有效,那么它们如何连接呢


Tags: 答案网络datanetlabelsnnthisoutputs
1条回答
网友
1楼 · 发布于 2024-09-29 21:56:53

Optimizer is initialized with net.parameters(), which I thought are internal weights of the net.

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

Loss does not access these parameters nor the net itself. It only has access to net's outputs and input labels.

损失只计算预测与事实之间的误差

Optimizer does not access loss either.

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

相关问题 更多 >

    热门问题