pytorch 关于深度学习模型的拷贝问题

调参调了很久,知道最近才发现自己的训练过程是错误的,我一直把验证集丢到模型里面去训练(手动蠢死)。不过还好,错处不大。不过为了防止你们也犯这样的错误,先贴上一张训练集,验证集和测试集在训练过程中的作用表格吧!

在这里插入图片描述
所以现在的需求就是,在训练过程中最优的模型来测试测试集,并在测试前使用验证集训练一次模型。
起初是直接使用

if val_loss < self.val_optimal_loss:
		self.optimal_model=self.model

结果发现最优的模型并没有被保存下来。
然后去检索 了一些深拷贝和浅拷贝的东西,写下来下面的代码。

if val_loss < self.val_optimal_loss:
 		self.optimal_model = copy.deepcopy(model)

结果发现模型是拷贝下来了,但是使用self.optimal_model进行训练的时候却没办法训练。(可能是因为这个model是我自定义的训练class的原因,不过这里就不深究了)
最后还是采用了

if val_loss < self.val_optimal_loss:  # 更新最小的loss值
           self.val_optimal_loss = val_loss
           torch.save(self.model.manhattan_lstm.state_dict(), 'model.pth')
self.model.manhattan_lstm.load_state_dict(torch.load("model.pth"))

如此,并成功完成了该需求。

参考博客:
机器学习系列(五)——训练集、测试集、验证集与模型选择

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值