本文参考:https://blog.csdn.net/u014061630/article/details/80698843
根据官方的说明,checkpoint有两个版本:1和2
在0.12版本tensorflow更新了checkpoint版本,默认情况下写入和读取的checkpoint都是新的V2版本,新版本能够在restore过程中显著降低内存峰值。
两种版本模型保存方式如下:
v1 | v2 |
---|---|
model.ckpt-66000 | model.ckpt-66000.index |
model.ckpt-66000.meta | model.ckpt-66000.meta |
model.ckpt-66000.data-00000-of-00001 |
版本1
版本1保存ckpt时,有两个文件model.ckpt-xxx(包含了参数名和参数值)和model.ckpt-xxx.meta(图结构)
要读取该ckpt时,路径按平常写法写
版本2
版本2保存模型时,有三个文件model.ckpt-xxx.data(参数值)、model.ckpt-xxx.index(参数名)、model.ckpt-xxx.meta(图结构)
要读取该ckpt时,路径按只写三个文件的公共部分
保存版本的选择
TF默认保存为v2格式,保存的checkpoint的版本可以在创建saver的时候指定
import tensorflow as tf
from tensorflow.core.protobuf import saver_pb2
# 保存成v1版本
saver = tf.train.Saver(write_version=saver_pb2.SaverDef.V1)
# 保存成v2版本
saver = tf.train.Saver(write_version=saver_pb2.SaverDef.V2)
从ckpt中恢复变量
虽然保存时有差别,但恢复时,两个版本都可以(但须注意不同版本的ckpt的路径书写方式不同)
v1
直接书写完整的ckpt文件的路径
v2
直接书写完整的ckpt文件的路径中的model.ckpt-xxx即可