深度模型的保存及ckpt和pth的文件保存有什么区别?

    • 保存深度学习模型

当我们训练好模型之后,想要保存下来,以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格式的模型文件;

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

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

pytorch模型保存格式

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

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

PB格式

优点:

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

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

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

你可能感兴趣的:(python,计算机视觉)