大佬教程收集整理的这篇文章主要介绍了纠正 Pytorch 中的验证损失?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我对如何计算验证损失有点困惑?验证损失是在一个时期结束时计算的,还是应该在批次迭代期间也监控损失? 下面我有使用 running_loss 的计算机,它正在批量累积 - 但我想看看它是否是正确的方法?
def valIDate(loader,model,criterion):
correct = 0
@R_928_10586@l = 0
running_loss = 0.0
model.eval()
with torch.no_grad():
for i,data in enumerate(loader):
inputs,labels = data
inputs = inputs.to(devicE)
labels = labels.to(devicE)
outputs = model(inputs)
loss = criterion(outputs,labels)
_,preDicted = torch.max(outputs.data,1)
@R_928_10586@l += labels.size(0)
correct += (preDicted == labels).sum().item()
running_loss = running_loss + loss.item()
mean_val_accuracy = (100 * correct / @R_928_10586@l)
mean_val_loss = ( running_loss )
#mean_val_accuracy = accuracy(outputs,labels)
print('ValIDation Accuracy: %d %%' % (mean_val_accuracy))
print('ValIDation Loss:',mean_val_loss )
下面是我正在使用的训练块
def Train(loader,criterion,optimizer,epoch):
correct = 0
running_loss = 0.0
i_max = 0
for i,data in enumerate(loader):
@R_928_10586@l_loss = 0.0
#print('batch=',i)
inputs,labels = data
inputs = inputs.to(devicE)
labels = labels.to(devicE)
optimizer.zero_grad()
outputs = model(inputs)
loss = criterion(outputs,labels)
loss.BACkWARD()
optimizer.step()
running_loss += loss.item()
if i % 2000 == 1999:
print('[%d,%5d] loss: %.3f' % (epoch + 1,i + 1,running_loss / 2000))
running_loss = 0.0
print('finished Training')
return mean_val_loss,mean_val_accuracy
您可以根据需要在验证中评估您的网络。它可以是每个时期,或者如果由于数据集庞大而成本太高,则可以是每个 N
时期。
您所做的似乎是正确的,您计算了整个验证集的损失。您可以选择除以它的长度以对损失进行归一化,因此如果有一天增加验证集,规模将相同。
以上是大佬教程为你收集整理的纠正 Pytorch 中的验证损失?全部内容,希望文章能够帮你解决纠正 Pytorch 中的验证损失?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。