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

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

pytorch 关于深度学习模型的拷贝问题_第1张图片
所以现在的需求就是,在训练过程中最优的模型来测试测试集,并在测试前使用验证集训练一次模型。
起初是直接使用

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"))

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

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

你可能感兴趣的:(Pytorch,深度学习,Pytorch)