任务是获得pretrained cnn inceptionv3模型的每层输出。 例如,我将图像提供给该网络,我不仅要获得其输出,还要获得每个图层的输出(逐层)。
为了做到这一点,我必须知道每个图层输出的名称。对于最后一层和前一层,这很容易做到:
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上,但只有前一个和最后一个图层的名称,这些名称也可以在来源的评论中找到(' pool_3:0',' softmax:0')
获取名称的明显方法是绘制模型图。但事实并非如此because graph-drawing tool simply crashes。 还有issue与此相关。
我也尝试过:
所以,也许有人参加了这个预先训练过的模型实施和'航运'正在阅读stackoverflow。
或许有人已经为这个模型提供了分层名称。 请与我和ml社区分享。提前谢谢!
答案 0 :(得分:2)
已在List of tensor names in graph in Tensorflow
中询问(并回答)基本问题用您的方法回答您的问题(2) - 这确实有效(我已经完成了)。如果我不得不猜测,您可能不会使用类似字典的结构来存储节点,因此如果多个节点从同一节点获取输入(就像在初始模型中发生了很多),则插入该输入节点在您要存储/访问的事物列表中多次。如果你只注意每个节点访问一次,它应该基本上立即运行而没有内存问题。