Tensorflow加载预训练模型和保存模型的实例加载预训练模型和保存模型的实例
使用tensorflow过程中,训练结束后我们需要用到模型文件。有时候,我们可能也需要用到别人训练好的模型,并在这个基础
上再次训练。这时候我们需要掌握如何操作这些模型数据。看完本文,相信你一定会有收获!
1 Tensorflow模型文件模型文件
我们在checkpoint_dir目录下保存的文件结构如下:
|--checkpoint_dir
| |--checkpoint
| |--MyModel.meta
| |--MyModel.data-00000-of-00001
| |--MyModel.index
1.1 meta文件文件
MyModel.meta文件保存的是图结构,meta文件是pb(protocol buffer)格式文件,包含变量、op、集合等。
1.2 ckpt文件文件
ckpt文件是二进制文件,保存了所有的weights、biases、gradients等变量。在tensorflow 0.11之前,保存在.ckpt文件中。
0.11后,通过两个文件保存,如:
MyModel.data-00000-of-00001
MyModel.index
1.3 checkpoint文件文件
我们还可以看,checkpoint_dir目录下还有checkpoint文件,该文件是个文本文件,里面记录了保存的最新的checkpoint文件以
及其它checkpoint文件列表。在inference时,可以通过修改这个文件,指定使用哪个model
2 保存保存Tensorflow模型模型
tensorflow 提供了tf.train.Saver类来保存模型,值得注意的是,在tensorflow中,变量是存在于Session环境中,也就是说,只
有在Session环境下才会存有变量值,因此,保存模型时需要传入session:
saver = tf.train.Saver()
saver.save(sess,"./checkpoint_dir/MyModel")
看一个简单例子:
import tensorflow as tf
w1 = tf.Variable(tf.random_normal(shape=[2]), name='w1')
w2 = tf.Variable(tf.random_normal(shape=[5]), name='w2')
saver = tf.train.Saver()
sess = tf.Session()
sess.run(tf.global_variables_initializer())
saver.save(sess, './checkpoint_dir/MyModel')
执行后,在checkpoint_dir目录下创建模型文件如下:
checkpoint
MyModel.data-00000-of-00001
MyModel.index
MyModel.meta
另外,如果想要在1000次迭代后,再保存模型,只需设置global_step参数即可:
saver.save(sess, ‘./checkpoint_dir/MyModel’,global_step=1000)
保存的模型文件名称会在后面加-1000,如下:
checkpoint
MyModel-1000.data-00000-of-00001
MyModel-1000.index
MyModel-1000.meta
评论0