2

我是 Pytorch 和机器学习的新手,我在本教程https://www.learnopencv.com/image-classification-using-transfer-learning-in-pytorch/中遵循本教程并使用我的自定义数据集。然后我在本教程中遇到了同样的问题,但我不知道如何在 pytorch 中提前停止,如果没有创建提前停止过程,你是否有更好的方法请告诉我。

4

2 回答 2

3

这就是我在每个时代所做的

val_loss += loss
val_loss = val_loss / len(trainloader)
if val_loss < min_val_loss:
  #Saving the model
  if min_loss > loss.item():
    min_loss = loss.item()
    best_model = copy.deepcopy(loaded_model.state_dict())
    print('Min loss %0.2f' % min_loss)
  epochs_no_improve = 0
  min_val_loss = val_loss

else:
  epochs_no_improve += 1
  # Check early stopping condition
  if epochs_no_improve == n_epochs_stop:
    print('Early stopping!' )
    loaded_model.load_state_dict(best_model)

不知道它有多正确(我从另一个网站的帖子中获取了大部分代码,但忘记了在哪里,所以我不能放参考链接。我只是稍微修改了一下),希望你觉得它有用,在案例我错了,请指出错误。谢谢

于 2020-05-30T09:35:40.743 回答
0

试试下面的代码。

     # Check early stopping condition
     if epochs_no_improve == n_epochs_stop:
        print('Early stopping!' )
        early_stop = True
        break
     else:
        continue
     break
if early_stop:
    print("Stopped")
    break
于 2020-02-13T03:53:58.670 回答