最近在使用Tensorflow 實現DNN網絡時,遇到一些問題。目前網上關于Tensorflow的資料還比較少,現把問題和解決方法寫出來,僅供參考。
(1)將兩個子模型的輸出合并到一個通道,例如同時連接到一個全連接層如圖
合并方法為 tf.concat()函數。此函數需要兩個個參數 concat(0或1,[合并節點1,合并節點2] )。0 或 1 代表節點合并的方式:0 代表合并后列相同,行增加;1 代表合并后行相同,列增加。
上圖所示合并方法為: X_20 = tf.concat(1, [X_top, X_down]);
(2)加載預訓練好模型的部分參數。例如訓練完成了一個五層網絡,現在需要訓練好一個七層網絡,使用已訓練好的五層網絡參數初始化七層網絡的前五層。
首先,五層網絡保存模型時的參數變量名要和七層網絡的需要初始化的參數變量名保持一致。
然后,定義加載指定變量名的 tf.train.Saver()。
例如:
Saver在restore模型時就會只加載 W_fc1_I, W_fc2_I, b_fc1_I, b_fc2_I 這四個參數,并且初始化當前模型中變量名相同的變量。需要注意的是,其他參數也是需要初始化的,一種避免遺漏初始化變量的方法是首先使用 initialize_all_variables() 函數對所有參數進行初始化之后再調用 restore 函數初始化需要的部分參數。
此方法只是其中一種解決方法,僅供參考。
以上這篇Tensorflow 合并通道及加載子模型的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。
新聞熱點
疑難解答