### 预训练的Inception v3模型(TensorFlow)的层名称 [重复]

任务是获取预训练的CNN Inception v3模型的每层输出。例如,我将一张图片输入到这个网络中,我不仅想得到它的输出,还想得到每一层的输出(按层)。

为了做到这一点,我必须知道每一层输出的名称。对于最后一层和倒数第二层来说,这很容易做到:

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

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

但如果我想获取的不仅仅是最后一层和倒数第二层的输出,还有倒数第三层、倒数第四层等,获取这个模型任何一层的输出呢?

那么我就必须知道层的名称。Stack Overflow上已经问过类似的问题,但只有倒数第二层和最后一层的名称,这些名称在源代码的注释中也可以找到(’pool_3:0′, ‘softmax:0’)

获取名称的明显方法是绘制模型的图。但情况并非如此,因为图形绘制工具简单地崩溃了。还有一个相关问题

我也尝试过:

  1. 打印所有图节点名称,并仅使用节点名称的信息构建图。但节点名称相当神秘。此外,由于Inception v3架构,节点之间的连接并不那么明显。因此,如果不知道节点之间的连接,这种方法就像破解恩尼格玛密码一样困难 🙂
  2. 然后我尝试使用自己编写的工具绘制这个模型的图(获取给定节点的所有输入(例如,’pool_3:0’),然后获取’pool_3:0’的所有输入的每个输入,等等。这个方法对简单的模型有效。但当我尝试在图像识别教程中的Inception v3实现上使用它时,我的RAM使用了16 GB,然后是10 GB的交换空间,然后我就不再深入探究了。可能是图中有循环(但如果网络是前馈的,怎么会这样呢?)

所以,可能参与这个预训练模型实现和“发布”的人正在阅读Stack Overflow。

或者可能有人已经获得了这个模型的按层名称。请与我和机器学习社区分享。提前感谢!


回答:

基础问题已经在TensorFlow中图中的张量名称列表中被问过(并回答过)。

关于你方法(2)的担忧,我的回答是:这是有效的(我已经做过)。如果我不得不猜测,你可能没有使用类似字典的结构来存储节点,所以如果多个节点从同一个节点获取输入(在Inception模型中经常发生),你会将该输入节点多次插入到你的存储/访问列表中。如果你注意只访问每个节点一次,那应该会立即运行而不会出现内存问题。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注