前言
我遇到了在同一個python腳本中加載兩個同樣的網(wǎng)絡(luò)結(jié)構(gòu),并且他們包含同樣的name的模塊翠忠,在tensorflow中如果name相同的模塊就會沖突鞠苟,要想解決問題,利用兩個graph分別包裹他們秽之,并且用兩個session來處理当娱。如果能帶來幫助很開心!
示例代碼
lefteye_graph = tf.Graph()
righteye_graph = tf.Graph()
with lefteye_graph.as_default():
.....net construct.......
sess_left = tf.Session(graph=lefteye_graph)
sess_left.run(tf.global_variables_initializer())
sess_left.run(tf.local_variables_initializer())
left_saver = tf.train.Saver(tf.global_variables())
graph = tf.get_default_graph()
left_saver.restore(sess_left, model_name)
...................
with righteye_graph.as_default():
...............
sess_right = tf.Session(graph=righteye_graph)
sess_right.run(tf.global_variables_initializer())
sess_right.run(tf.local_variables_initializer())
right_saver = tf.train.Saver()
right_saver.restore(sess_right, model_name)
graph = tf.get_default_graph()
..........................
sess_left.close()
sess_right.close()
代碼理解
其中的as_default()是必須的考榨,表示在該模塊中該圖作為默認(rèn)圖
遇到的問題
其間查閱了很多種寫法跨细,但是我一直遇到后面的graph報找不到某個tensor的錯誤,我的錯誤是因為代碼是從上個模塊copy然后修改的河质,后面在run中sess用成上面的冀惭,又由于tensorflow在with內(nèi)部的變量也作為全局變量震叙,所以不會提示錯誤,所以一直報錯散休。
最后看到鏈接中的文章認(rèn)為代碼一定沒錯誤媒楼,然后把后半部分移到前面去發(fā)現(xiàn)沒有定義的變量才發(fā)現(xiàn)問題
這篇文章寫得不錯