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