训练模型时,在众多训练好的模型中会有几个较好的模型,我们希望储存这些模型对应的参数值,避免后续难以训练出更好的结果,同时也方便我们复现这些模型,用于之后的研究。PyTorch提供了模型的保存与重载模块,包括torch.save()和torch.load(),以及pytorchtools中的EarlyStopping,这个模块就是用来解决上述的模型保存与重载问题
一、保存与重载模块
若希望保存/加载模型model的参数,而不保存/加载模型的结构,可以通过如下代码
其中state_dict是torch中的一个字典对象,将每一层与该层的对应参数张量建立映射关系
若希望同时保存/加载模型model的参数以及模型结构,而不保存/加载模型的结构,可以通过如下代码
为了获取性能良好的神经网络,训练网络的过程中需要进行许多对于模型各部分的设置,也就是超参数的调整。超参数之一就是训练周期(epoch),训练周期如果取值过小可能会导致欠拟合,取值过大可能会导致过拟合。为了避免训练周期设置不合适影响模型效果,EarlyStopping应运而生。EarlyStopping解决epoch需要手动设定的问题,也可以认为是一种避免网络发生过拟合的正则化方法
EarlyStopping的原理可