TensorFlow预训练模型在新图中权重部分加载
生活随笔
收集整理的這篇文章主要介紹了
TensorFlow预训练模型在新图中权重部分加载
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
首先對預訓練模型的scope一定要做好定義,不然恢復起來會比較麻煩。
這里使用tf.get_collection()
1、tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES,scope='name') tf.get_collection(key,scope=None )Args:
- key: The key for the collection. For example, the GraphKeys class contains many standard names for collections.
- scope: (Optional.) If supplied, the resulting list is filtered to include only items whose name attribute matches using re.match. Items without a name attribute are never returned if a scope is supplied and the choice or re.match means that a scope without special tokens filters by prefix.
Returns:
The list of values in the collection with the given name, or an empty list if no value has been added to that collection. The list contains the values in the order under which they were collected.
?tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES)用于獲取當前圖下,給定指定name的所有變量,并返回由這些變量構成的list。
2、申請saver
saver = tf.train.Saver(var_list=var)
這里表示當前的這個saver只對var中的變量進行恢復,其余的不管
3、載入之前預訓練的ckpt
saver.restore(sess,MODELPATH)這里表示指定恢復的變量的權重是從MODELPATH里面來的,MODELPATH是之前預訓練模型的ckpt
如果有多個這樣的scope需要恢復的話可以多次重復上述步驟
最后,代碼總結
var = tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES,scope='name1') saver.restore(sess,MODELPATH1)var = tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES, scope='name2') saver = tf.train.Saver(var_list=var)?
總結
以上是生活随笔為你收集整理的TensorFlow预训练模型在新图中权重部分加载的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Tensorflow 模型加载及部分变量
- 下一篇: tensorboard scalar图下