gpt4 book ai didi

pytorch - 在 PyTorch 中打印每个时期的验证损失

转载 作者:行者123 更新时间:2023-12-04 07:39:05 25 4
gpt4 key购买 nike

我想在每个时期打印模型的验证损失,获取和打印验证损失的正确方法是什么?
是不是这样:

criterion = nn.CrossEntropyLoss(reduction='mean')
for x, y in validation_loader:
optimizer.zero_grad()
out = model(x)
loss = criterion(out, y)
loss.backward()
optimizer.step()
losses += loss

display_loss = losses/len(validation_loader)
print(display_loss)
或者像这样
criterion = nn.CrossEntropyLoss(reduction='mean')
for x, y in validation_loader:
optimizer.zero_grad()
out = model(x)
loss = criterion(out, y)
loss.backward()
optimizer.step()
losses += loss

display_loss = losses/len(validation_loader.dataset)
print(display_loss)
或者是其他东西?谢谢你。

最佳答案

不!!!!
enter image description here
在任何情况下都不应使用验证/测试数据训练模型(即调用 loss.backward() + optimizer.step() )!!!
如果要验证模型:

model.eval()  # handle drop-out/batch norm layers
loss = 0
with torch.no_grad():
for x,y in validation_loader:
out = model(x) # only forward pass - NO gradients!!
loss += criterion(out, x)
# total loss - divide by number of batches
val_loss = loss / len(validation_loader)
注意如何 optimizer与在验证集上评估模型无关。
您不会根据验证数据更改模型 - 仅对其进行验证。

关于pytorch - 在 PyTorch 中打印每个时期的验证损失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67581589/

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