首页 文章

预训练初始v3模型的层名称(tensorflow)[重复]

提问于
浏览
5

这个问题在这里已有答案:

任务是获得pretrained cnn inceptionv3模型的每层输出 . 例如,我将图像提供给此网络,我不仅要获得其输出,还要获得每个图层的输出(逐层) .

为了做到这一点,我必须知道每个图层输出的名称 . 对于last和last-last图层来说,这很容易做到:

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

(名称pool_3:0和softmax:0列在与模型相关的来源中)

但是,如果我想获得不仅是最后一层和前一层的输出,而且还要预先输出前,预先预先,等等,输出该模型的任何一层?

然后我必须知道图层名称 . 关于stackoverflow的类似问题has been asked,但是只有前一个和最后一个层的名称,这些名称也可以在源中的注释中找到('pool_3:0','softmax:0')

获取名称的明显方法是绘制模型图 . 但事实并非如此because graph-drawing tool simply crashes . 还有一个issue与此相关 .

我也尝试过:

  • 使用仅来自节点名称的信息打印所有图形节点名称和构造图形 . 但是节点名称非常神秘 . 节点之间的连接也不是那么明显,因为inception v3 architecture所以不知道节点之间的连接,这种方法就像打破了谜团的代码:)

  • 然后我尝试使用自己编写的工具绘制此模型的图形(获取给定节点的所有输入(例如,'pool_3:0'),然后获取'pool_3:0'等每个输入的所有输入 . 此方法适用于简单模型 . 但当我试图从图像识别教程中使用它进行inceptionv3实现时,我已经使用了16 GB的RAM,然后是10 GB的交换,然后我就停止了查看引擎盖 . 也许图中有一些周期(但是如果网络是前馈的话怎么可能?)

所以,也许参与这个预先训练过的模型实现和'运输'的人正在阅读stackoverflow .

或者也许有人已经为这个模型提供了分层名称 . 请与我和ml社区分享 . 提前致谢!

1 回答

  • 1

    List of tensor names in graph in Tensorflow已经提出(并回答了)基本问题

    回答你对你的方法的关注(2) - 这确实有效(我已经完成了) . 如果我不得不猜测,您可能不会使用类似字典的结构来存储节点,因此如果多个节点从同一节点获取输入(就像在初始模型中发生了很多),则插入该输入节点在您要存储/访问的事物列表中多次 . 如果你只注意每个节点访问一次,它应该基本上立即运行,没有内存问题 .

相关问题