在PyTorch中打印每个历元的验证损失

在PyTorch中打印每个历元的验证损失,pytorch,cross-entropy,Pytorch,Cross Entropy,我想打印每个历元中模型的验证损失,获取和打印验证损失的正确方法是什么 是这样的吗? 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_lo

我想打印每个历元中模型的验证损失,获取和打印验证损失的正确方法是什么

是这样的吗?

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)

还是别的什么?谢谢。


在任何情况下,您都不应使用验证/测试数据来训练您的模型(即调用
loss.backward()
+
optimizer.step()

如果要验证模型,请执行以下操作:

model.eval()#处理退出/批处理规范层
损失=0
使用手电筒。无梯度()
对于验证加载程序中的x、y:
out=模型(x)#仅向前传球-无坡度!!
损失+=标准(输出,x)
#总损失-除以批次数
val_损耗=损耗/长度(验证加载程序)
请注意,
optimizer
与在验证集上评估模型无关。
您不会根据验证数据更改模型-仅对其进行验证。

您从未使用验证/测试数据反向支持过吗!!!!!啊,对不起,我刚刚学习了深度学习,谢谢。@rubiks-这里的主要问题是,您理解为什么不能使用验证数据进行反向支持