验证集的作用就是在训练的过程中监测是否训练过度,即过拟合
一般可以默认验证集的损失函数值由下降转向上升(即最小值)处,模型的泛化能力最好
使用 copy.deepcopy
min_loss_val = 10 # 任取一个大数
best_model = None
min_epoch = 100 # 训练至少需要的轮数
for epoch in range(args.epochs):
loss_val, loss_acc = train(epoch)
if epoch > min_epoch and loss_val <= min_loss_val:
min_loss_val = loss_val
best_model = copy.deepcopy(model)
model = best_model