【Tensorflow筆記0.2 踩坑】tensorflow加載pretrained_model時遇到的bug解決方案

問題概述

下面是在facenet中加載pretrained_model時遇到的一些錯誤:
錯誤1:tensorflow.python.framework.errors_impl.InvalidArgumentError exception str() failed
錯誤2:tf.train.get_checkpoint_state(checkpoint_dir) return none type
錯誤3:tf.train.latest_checkpoint(“model/”) return none

錯誤1解決方案:
[1]中的方法是在當我們自己的訓練集class數量和作者當初的訓練集class數量相同時纔有效,然而我們在實際開發時不可能恰好和作者的訓練集class數量相同。下面是參考[2][3]給出的解決方案:
下面這個創建saver的方法在初次保存模型時可用,但在恢復模型時是不可用的。

saver = tf.train.Saver(tf.trainable_variables(), max_to_keep=3)

恢復模型時應該像下面這樣:

saver = tf.train.import_meta_graph('/home/***/models/20180402-114759/model-20180402-114759.meta')
saver.restore(sess, tf.train.latest_checkpoint('/home/***/models/20180402-114759'))

錯誤2、3解決方案:
參考[4]知道tensorflow預訓練模型有4部分組成:
這裏寫圖片描述
出現錯誤2、3的原因可能是由於缺少checkpoint文件,我們可以新建一個checkpoint文件並寫入如下內容:

model_checkpoint_path: "/home/master/dev/facerec/facenet/mydataset/models/20180402-114759/model-20180402-114759.ckpt-275"

至此,facenet加載pretrained_model時遇到的bug全部解決。

參考文獻

[1] 加載pretrained_model模型
[2] TensorFlow保存還原模型的正確方式,Saver的save和restore方法,親測可用
[3] Tensorflow 同時載入多個模型
[4] 【tensorflow】保存模型、再次加載模型等操作

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章