预训练初始v3模型(tensorflow)的层名称

2024-03-28 18:41:34 发布

您现在位置:Python中文网/ 问答频道 /正文

任务是获取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上,但是只有pre-last和last层的名称,这些名称也可以在源代码的注释中找到(“pool_3:0”,“softmax:0”)

获取名称的明显方法是绘制模型的图形。但事实并非如此。 还有一个issue与此相关。

我也试过:

  1. 打印所有图形节点名称并仅使用节点名称中的信息构造图形。但是节点名非常神秘。另外,节点之间的连接也不是很明显,因为inception v3 architecture所以在不知道节点之间的连接的情况下,这种方法就像是打破了谜的代码:)
  2. 然后我试着用自己的书写工具画出这个模型的图(得到给定节点的所有输入(比如说“pool_3:0”),然后得到“pool_3:0”的每个输入的所有输入,等等。这种方法适用于简单的模型。但是,当我尝试使用它来实现图像识别教程中的inceptionv3时,我已经使用了16gb的RAM,然后10gb的swap,然后我就不再看引擎盖下面了。也许在图中有一些循环(但是如果网络是前馈的,怎么可能呢?)

所以,也许有人参与了这个预先培训的模型实现&;shipping&;正在阅读stackoverflow。

或者有人已经为这个模型取了层的名字。 请与我和我的社区分享。提前谢谢!


Tags: 方法name模型网络名称图形getby
1条回答
网友
1楼 · 发布于 2024-03-28 18:41:34

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

用你的方法来回答你的担心(2)-那确实有效(我已经做到了)。如果我不得不猜测,您可能不会使用类似字典的结构来存储节点,因此如果多个节点从同一个节点获取它们的输入(就像在inception模型中经常发生的那样),您可以将该输入节点多次插入到要存储/访问的内容列表中。如果只访问一次每个节点,那么基本上应该立即运行,而不会出现内存问题。

相关问题 更多 >