轉載請注明出處:
http://www.cnblogs.com/darkknightzh/p/7198773.html
參考網址:
http://stackoverflow.com/questions/41265035/tensorflow-why-there-are-3-files-after-saving-the-model
1. 保存模型
tensorflow中saver使用如下代碼保存模型時(假設程序位於/home/xxx/test,模型保存在/home/xxx/test/model。下面是簡化的代碼),使用下面的代碼:
saver = tf.train.Saver(tf.trainable_variables(), max_to_keep=3) saver.save(sess, 'model/model.ckpt', global_step=step, write_meta_graph=False) if not os.path.exists(' model/model.meta'): saver.export_meta_graph(metagraph_filename)
會保存下面這些文件:
每次都會保存.meta(可以判斷是否有該文件,如果沒有才保存)。
每次都會保存.ckpt-step.index和.ckpt-step.data-00000-of-00001文件(模型太大不清楚是否會有.ckpt-number.data-00000-of-00002等等文件)。
checkpoint文件內,會有下面的內容:
model_checkpoint_path: "/home/xxx/test/model/model.ckpt-16000" all_model_checkpoint_paths: "/home/xxx/test/model/model.ckpt-12000" all_model_checkpoint_paths: "/home/xxx/test/model/model.ckpt-14000"
2. 恢復模型參數,繼續訓練
當需要恢復某個模型的參數,繼續進行訓練時,可以使用下面的代碼:
saver.restore(sess, ‘model/model.ckpt-16000’)
這樣便可以恢復訓練時的最后一個模型參數。
不需要加上后綴.index或者.data-00000-of-00001。
3. 直接載入meta graph及模型參數
在測試時,可以通過下面的代碼直接通過meta graph構建網絡、載入訓練時得到的參數,並使用默認的session:
saver = tf.train.import_meta_graph(‘model/model.meta’)
saver.restore(tf.get_default_session(),’ model/model.ckpt-16000’)