2017-07-27 106 views
0

我想獲得瘦身vgg16網絡中fc6圖層的輸出,有沒有什麼好方法可以做到這一點?如何獲得SLIM vgg16網絡中某個圖層的輸出?

其實我已經想出了一個可能的解決方案,請幫我確認其正確性。

fc6層的輸出實際上是Relu op的結果,即激活函數。我通過執行tf.get_default_graph().get_operations()找到它的名字是vgg_16/fc6/Relu。那麼,也許tf.get_default_graph().get_tensor_by_name('vgg_16/fc6/Relu:0')的結果是我想要的?

回答

1

從我已經從圖像分割此Tensorflow代碼(link)這是如何可以在預定的TF-超薄模型的一個層提取的輸出中提取:如果正在使用另一個

from tensorflow.contrib.slim import nets 

    last_layer_logits, end_points = nets.vgg.vgg_16(img_batch, num_classes=num_classes) 

    # examples 
    pool4_features = end_points['vgg_16/pool4'] 
    fc8_features = end_points['vgg_16/fc8'] 

argscope實際vgg_16模型之上,你應該vgg_16 argscope前加入:

fc8_features = end_points['my_great_model_argscope/' + 'vgg_16/fc8'] 

希望這有助於!

+1

感謝您的解決方案。你的方法確實有效,我的方法也行。我不知道在TF-Slim模型中使用'end_points',而GitHub上的文檔根本沒有提到它的一個單詞! – Jim07

+1

在Tensorflow上玩了一段時間後,我發現TF-Slim對我來說是最好的解決方案,但是,缺少大量文檔。我已經從tensorflow/models庫中包含的IPython筆記本(https://github.com/tensorflow/models/blob/master/slim/slim_walkthrough.ipynb)中學到了很多東西。祝你好運! – RoccoLacatus

相關問題