Deep learning Pytorch中的验证丢失是否正确?

Deep learning Pytorch中的验证丢失是否正确?,deep-learning,pytorch,Deep Learning,Pytorch,对于如何计算验证损失,我有点困惑?验证损失是在一个历元结束时计算的,还是在批次迭代期间也应监控损失? 下面我有一台使用running_loss的计算机,这是成批累积的,但我想看看这是否是正确的方法 def验证(加载器、模型、标准): 正确=0 总数=0 运行损耗=0.0 model.eval() 使用手电筒。无梯度() 对于i,枚举(加载器)中的数据: 输入、标签=数据 输入=输入。到(设备) 标签=标签。到(设备) 输出=模型(输入) 损失=标准(输出、标签) _,预测=火炬最大值(输出数据,

对于如何计算验证损失,我有点困惑?验证损失是在一个历元结束时计算的,还是在批次迭代期间也应监控损失? 下面我有一台使用running_loss的计算机,这是成批累积的,但我想看看这是否是正确的方法

def验证(加载器、模型、标准):
正确=0
总数=0
运行损耗=0.0
model.eval()
使用手电筒。无梯度()
对于i,枚举(加载器)中的数据:
输入、标签=数据
输入=输入。到(设备)
标签=标签。到(设备)
输出=模型(输入)
损失=标准(输出、标签)
_,预测=火炬最大值(输出数据,1)
总数+=标签。大小(0)
正确+=(预测==标签).sum().item()
运行损耗=运行损耗+损耗。项()
平均值精度=(100*正确/总计)
平均值损失=(运行损失)
#平均值精度=精度(输出、标签)
打印('验证精度:%d%%'%(平均值精度))
打印(“验证损失:”,平均值损失)
下面是我正在使用的训练块

def系列(装载机、型号、标准、优化器、epoch): 正确=0 运行损耗=0.0 i_max=0 对于i,枚举(加载器)中的数据: 总损耗=0.0 #打印('批=',i) 输入、标签=数据 输入=输入。到(设备) 标签=标签。到(设备) optimizer.zero_grad() 输出=模型(输入) 损失=标准(输出、标签) loss.backward() optimizer.step() 运行损失+=损失。项目() 如果i%2000==1999: 打印(“[%d,%5d]损失:%.3f%”(历元+1,i+1,运行\u损失/2000)) 运行损耗=0.0 打印(‘已完成培训’) 返回平均值损失、平均值精度
您可以根据需要在验证中评估您的网络。它可以是每个历元,或者如果因为数据集太大而成本太高,则可以是每个
N
历元

您所做的似乎是正确的,您计算了整个验证集的损失。您可以选择除以其长度,以使损失正常化,因此如果您将验证集增加一天,则比例将相同