Machine learning 方法:然后在整个集合上进行训练,只有到那时,才能在另一集合上进行评估。在某些情况下,由于计算时间的原因,您甚至不允许自己每个历元计算一次。相反,您将评估每n个时代。但这又取决于您的数据集大小、从该数据集中采样、批量大小和计算成本
对于训练损失,您可以跟踪每个更新步骤与每个历元的值。这将使您能够更好地控制模型是否独立于验证阶段学习Machine learning 方法:然后在整个集合上进行训练,只有到那时,才能在另一集合上进行评估。在某些情况下,由于计算时间的原因,您甚至不允许自己每个历元计算一次。相反,您将评估每n个时代。但这又取决于您的数据集大小、从该数据集中采样、批量大小和计算成本,machine-learning,deep-learning,pytorch,Machine Learning,Deep Learning,Pytorch,对于训练损失,您可以跟踪每个更新步骤与每个历元的值。这将使您能够更好地控制模型是否独立于验证阶段学习 编辑-作为不必为每个列车批次运行整个评估集的替代方法,您可以执行以下操作:洗牌验证并设置与列车集相同的批次大小 len(列车组)//batch\u size是每个历元的更新次数 len(validset)//batch_size是每个历元允许的求值次数 每个len(trainset)//len(validset)您可以在1 批处理 这允许您获得每个历元的反馈次数len(列车集)//len(
编辑-作为不必为每个列车批次运行整个评估集的替代方法,您可以执行以下操作:洗牌验证并设置与列车集相同的批次大小
是每个历元的更新次数len(列车组)//batch\u size
是每个历元允许的求值次数len(validset)//batch_size
- 每个
您可以在len(trainset)//len(validset)
批处理1
len(列车集)//len(有效集)
如果你将训练/有效比率设置为
0.1
,那么len(validset)=0.1*len(trainset)
,这是每个历元的十个部分评估。如果你能附加训练循环代码,它会更清晰。@Khalidaifullah添加了一些类似于我的代码。谢谢。很酷,我已经附上了一个答案,看看这是否有帮助。如果你能附上你的训练循环代码,它会更清晰。@Khalidaifullah添加了一些类似于我的代码。谢谢。很好,我已经附上了答案,看看是否有帮助。是的,我想是的。似乎没有别的办法。尝试这个,但会保持这个开放的情况下,有人有另一种方式。如果没有,我会在几天后选择这个答案。谢谢当然,我也想看看其他的方法。是的,我也这么认为。似乎没有别的办法。尝试这个,但会保持这个开放的情况下,有人有另一种方式。如果没有,我会在几天后选择这个答案。谢谢当然,我也想看看其他的方法。同意你所说的。这与超参数调优本身无关,正如您所提到的,我已经在使用epoch-wise-validation-loss来实现这一点。这是我试图对损失做的一个切点观察,通过训练样本/批次而不是整个时代,更好的做法是让损失的粒度更细一些。谢谢你的解释!明白了,我已经用另一种解决方案编辑了我的问题。同意你所说的。这与超参数调优本身无关,正如您所提到的,我已经在使用epoch-wise-validation-loss来实现这一点。这是我试图对损失做的一个切点观察,通过训练样本/批次而不是整个时代,更好的做法是让损失的粒度更细一些。谢谢你的解释!明白了,我已经用另一种解决方案编辑了我的问题。
running_loss = 0.0
for i, data in enumerate(trainloader, 0):
# get the inputs; data is a list of [inputs, labels]
inputs, labels = data
# zero the parameter gradients
optimizer.zero_grad()
# forward + backward + optimize
outputs = net(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
# print statistics
running_loss += loss.item()
with torch.no_grad():
for data in testloader:
images, labels = data
outputs = net(images)
_, predicted = torch.max(outputs.data, 1)
total += labels.size(0)
correct += (predicted == labels).sum().item()
# validation loss
batch_loss = error(outputs.float(), labels.long()).item()
loss_test += batch_loss
loss_test /= len(testloader)