gpt4 book ai didi

neural-network - 如何在 PyTorch 中仅在某些时候忽略损失

转载 作者:行者123 更新时间:2023-12-03 22:40:31 27 4
gpt4 key购买 nike

在 PyTorch 中训练神经网络时,我希望能够查看模型输出并决定特定输出是应该导致损失还是被忽略(= 零损失)。
通常的训练循环如下所示:

for (data, labels) in loader:
data, labels = data.to(device), labels.to(device)
optimizer.zero_grad()
logits = model(data)
loss = criterion(logits, labels)
loss.backward()
optimizer.step()
将某些损失归零的最佳方法是什么?
在计算标准之前,我应该让一些标签等于 logits 吗?
或者,我可以在调用 loss.backward() 之前计算它之后修改损失吗? (以及如何?我可以将它乘以零和一的掩码,或者将它往返到一个 numpy 数组并修改它等)
这里的用例是语义分割,有点。标签是一个粗略的图像,其中每个区域(对应于输入图像中的 32x32 块)可以是"is"、“否”或“模糊”。无论网络输出是什么,“模棱两可”的都不应该产生损失。在这种情况下,我知道应该从标签中直接忽略哪些损失;但我也想知道如何根据输出和标签忽略。

最佳答案

在训练网络时,如果验证损失减少,您可以保存最佳模型。
试试这个代码:

if valid_loss <= valid_loss_min:
print('Validation loss decreased ({:.6f} --> {:.6f}). Saving model ...'.format(valid_loss_min, valid_loss))
torch.save(model.state_dict(), 'model_name.pt')
valid_loss_min = valid_loss

关于neural-network - 如何在 PyTorch 中仅在某些时候忽略损失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62807467/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com