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) - 是的!我真的忘了重复条目的可能性。你的回答帮了我很多! –

相关问题