各框架模型保存的格式汇总
https://blog.csdn.net/charlotte_android/article/details/93889130
Tensorflow
1、CheckPoint(.ckpt)
在训练 TensorFlow 模型时,每迭代若干轮需要保存一次权值到磁盘,称为“checkpoint”。这种格式文件是由 tf.train.Saver() 对象调用 saver.save() 生成的,只包含若干 Variables 对象序列化后的数据,不包含图结构,所以只给 checkpoint 模型不提供代码是无法重新构建计算图的。
载入 checkpoint 时,调用 saver.restore(session, checkpoint_path)。
2、GraphDef(.pb)
这种格式文件包含 protobuf 对象序列化后的数据,包含了计算图,可以从中得到所有运算符(operators)的细节,也包含张量(tensors)和 Variables 定义,但不包含 Variable 的值,因此只能从中恢复计算图,但一些训练的权值仍需要从 checkpoint 中恢复。.pb 为二进制文件,实际上 protobuf 也支持文本格式(*.pbtxt),但包含权值时文本格式会占用大量磁盘空间,一般不用。
Keras
1、保存整个模型(.h5)
model.save(filepath)将Keras模型和权重保存在一个HDF5文件中,该文件将包含:
模型的结构
模型的权重
训练配置(损失函数,优化器,准确率等)
优化器的状态,以便于从上次训练中断的地方
2、保存模型结构
model.to_jason()将模型序列化保存为json文件,里面记录了网络的整体结构, 各个层的参数设置等信息. 将json字符串保存到文件.
除了json格式,还可以保存为yaml格式的字符串,形式与JSON一样
3、保存模型权重(.h5)
经过调参后网络的输出精度比较满意后,可以将训练好的网络权重参数保存下来,可通过下面的代码利用HDF5进行保存:
model.save_weights(‘model_weights.h5’)
Pytorch
1、保存和加载整个模型(.pkl)
torch.save(model_object, ‘model.pkl’)
model = torch.load(‘model.pkl’)
2、仅保存和加载模型参数(推荐使用)
torch.save(model_object.state_dict(), ‘params.pkl’)
model_object.load_state_dict(torch.load(‘params.pkl’))
3、pytorch保存数据的格式为.t7文件或者.pth文件,或者.pkl格式,t7文件是沿用torch7中读取模型权重的方式