保存深度学习模型

当我们训练好模型之后,想要保存下来,以pytorch为例:

有两种选择:

保存方式1

torch.save(model.state_dict(), 'mymodel.pth') # 只保存模型权重参数,不保存模型结构

model为训练好的模型,'mymodel.pth'为保存路径。

调用方式1

model = My_model(*args, **kwargs) #这里需要重新模型结构,My_model

model.load_state_dict(torch.load('mymodel.pth'))#这里根据模型结构,调用存储的模型参数

model.eval()

保存方式2

torch.save(model, mymodel.pth) # 保存整个model的状态

调用方式2

model=torch.load(mymodel.pth)#这里已经不需要重构模型结构了,直接load就可以

model.eval()

我一般选用方式2,这样调用的时候,不需要再复现模型,然后才能在模型中调用参数

不同格式的保存文件

ckpt格式:

一般情况下,用TensorFlow时保存模型都使用ckpt格式的模型文件;

依赖TensorFlow,只能在其框架下使用。

恢复模型之前需要再定义一遍网络结构,才能把变量的值恢复到网络中。

pytorch模型保存格式

即后缀名为.pt, .pth, .pkl的pytorch模型文件(它们并不是在格式上有区别,只是后缀不同而已)

pth文件是python中存储文件的常用格式;keras中则是使用.h5文件。

PB格式

优点:

它具有语言独立性,可独立运行,封闭的序列化格式,任何语言都可以解析它,它允许其他语言和深度学习框架读取、继续训练和迁移TensorFlow的模型。

它的主要使用场景是实现创建模型与使用模型的解耦,使得在推理过程中不用像ckpt格式那样重新定义一遍网络。

保存BP文件的时候,模型的变量都会变成固定的,导致模型的大小会大大较少,适合在手机端运行。

精彩内容

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: