4

任務是獲取pretrained cnn inceptionv3模型的每層輸出。 例如,我向這個網絡提供一個圖像,我不僅要獲得它的輸出,還要獲得每個圖層的輸出(逐層)。預訓練初始v3模型(tensorflow)的圖層名稱

爲了做到這一點,我必須知道每個圖層輸出的名稱。這是很容易爲去年和前最後一層做:

sess.graph.get_tensor_by_name('pool_3:0') 
sess.graph.get_tensor_by_name('softmax:0') 

(名稱pool_3:0和SOFTMAX:0在相關模型的來源列出)

但是如果我想要得到的輸出不僅是最後一層還是最後一層,還有前置前置,前置前置前置等,這個模型的任何層的輸出?

然後我必須知道圖層名稱。類似的問題has been asked 在stackoverflow上,但只有名稱爲pre-last和last層,它們也可以在源代碼中註釋('pool_3:0','softmax:0')

顯而易見的方法獲取名稱是繪製模型的圖形。但情況並非如此because graph-drawing tool simply crashes。 也有一個issue與此相關。

我也試過:

  1. 要打印所有圖節點名稱和構建圖形只能用從節點名稱的信息。但節點名稱相當隱祕。另外節點之間的連接並不是那麼明顯,因爲inception v3 architecture所以不知道節點之間的連接,這種方法就好像打破了謎團的代碼:)
  2. 然後我試圖用自己寫的工具繪製這個模型的圖(獲得給定節點的所有輸入(比如'pool_3:0'),然後得到每個'pool_3:0'輸入的所有輸入等等。這種方法適用於簡單模型,但是當我嘗試將它用於inceptionv3從圖像識別教程的實現,我已經有16 GB的RAM使用,然後10 GB的交換,然後我只是停下來看看引擎蓋下。也許有一些週期圖(但如果網絡是如何前饋?)

所以,也許有人蔘加了這個預訓練的m odel實現&'shipping'正在讀取計算器。

或者也許有人已經得到了這個模型的圖層名稱。 請與我和ml社區分享。提前致謝!

回答

1

基地問題已經問(回答)在List of tensor names in graph in Tensorflow

要回答你的方法(2)您的關注 - 即不工作(我已經做到了)。如果我不得不猜測,你可能不會使用類似字典的結構來存儲節點,所以如果多個節點從同一個節點獲取輸入(就像在初始模型中發生的那樣),那麼可以插入該輸入節點多次存儲/訪問您的物品清單。如果你只注意訪問每個節點一次,那應該基本上立即運行而沒有內存問題。

+0

實際上,tensorflow附帶的pretrained inceptionv3模型缺少了model.txt文件。所以我已經問過我可以在哪裏下載model.txt文件,並將其發佈到您提到的問題的評論中。至於(2) - 是的!我真的忘了重複條目的可能性。你的回答幫了我很多! –

相關問題