日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Tensorflow 模型加载及部分变量初始化

發布時間:2025/4/16 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Tensorflow 模型加载及部分变量初始化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在做預訓練部分圖模型,將這部分圖模型重新加載到一個新的圖中,并加入一些新的op。下面是一些遇到的問題,調試方法以及解決方案。

1、從已有圖中restore參數

saver_restore = tf.train.import_meta_graph(meta_path_restore) saver_restore.restore(sess,<checkpoint path>)

2、通過tensor的名字獲取變量

input_y = saver_restore.get_tensor_by_name('name:0')

P.S.在實驗過程中,我自己嘗試了一種方法,在外部創建會話,直接將需要加載的參數通過會話加載進來也是可以的。

sess = tf.Session() model1= Model1(Session=sess, restore='Model1參數path') model2= Model2(Session=sess, restore='Model2參數path')

這樣也是可行的,但是如果加入其它操作的話會出現attempting to use uninitialized value。出現這個問題的原因是在部分加載變量后,添加了其它操作,同時又沒有做對未賦值變量做initialize。解決辦法

1、先添加需要的其它操作,然后運行

tf.global_variables_initializer()

隨后對部分參數加載。這里需要注意,如果是最后執行global_variables_initializer()的話,之前所有的賦值操作都會被覆蓋掉,也即之前做的所有操作都是無意義的。

2、加載參數后,加入新的操作,最后對沒有初始化的部分參數進行初始化操作。

uninit_vars=[] for var in tf.all_variables():try:sess.run(var)except tf.errors.FailedPreconditionError:uninit_vars.append(var) init_new_vars_op = tf.initialize_variables(uninit_vars) sess.run(init_new_vars_op)

這里使用的是部分參數初始化,通過這種方法就可以避免需要加載參數后再加入其他操作無法初始化參數的問題。

附加一個可以用于查看參數變量的代碼,方便調試使用:

var = tf.trainable_variables() value = sess.run(var) for v in value:print(v)

另https://blog.csdn.net/ying86615791/article/details/76215363這篇寫的也很好,可供參考。

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的Tensorflow 模型加载及部分变量初始化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。