问题标签 [tensorflow-slim]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
312 浏览

python - 在 TensorFlow 中编写摘要会导致对图的额外评估

使用 Tensorflow Supervisor 编写摘要会重新评估可能产生不良后果的图表。

这样的后果之一是改变随机状态,进而影响再现性。我写了一个小例子来演示这种影响。

在上面的示例中,我定义了两个具有相同图级随机种子的图。在第二张图中,我使用 tf.train.Supervisor 编写摘要。然后我通过评估每个图 N 次来生成 N 个随机数。带有摘要编写器的图表“跳过”了一些随机数;因此,取决于何时编写与全局步骤相关的摘要,您会得到随机不同的结果。

这种影响产生不良后果的另一个例子是,当您使用 Tensorflow 记录读取器进行批处理并使用 Supervisor 编写摘要时,由于额外的图形评估,每次摘要写入会消耗额外的一批数据。

这也会影响依赖于 Supervisor 的所有工具的行为,例如 Tensorflow-slim。

是否有一种传统的方式与主管沟通以在同一个图表评估中收集操作及其各自的摘要?我想可以通过定义操作及其摘要之间的依赖关系并传递summary_op=None.

0 投票
1 回答
618 浏览

python - 在张量流中将张量提供给图形时出现无效参数错误?

我在 Windows 10 上使用 tensorflow 版本 1.5。我正在使用从网站上获取的 Inception V4 网络的 Tensorflow slim 模型,使用它们的预训练权重并在最后添加我自己的层来分类 120 个不同的对象。这是完整的代码,除了包含导入模块和数据集路径的行。

我试图在训练操作步骤期间将正确的数据张量传递给图形的 feed_dict 并打印它们给我以下输出。

但它也输出以下错误:

0 投票
1 回答
619 浏览

python - TensorBoard + tensorflow.slim 一起工作

在低级 tensorflow API 上,我可以使用以下代码绘制直方图

最近我决定尝试slimAPI,我想知道如何在简单和更复杂的情况下管理我的 TensorBoard 图。

例如,如果我想在以下两个示例中绘制tf.summary.histogram权重的直方图 (as ) 和偏差的平均值 (as ),我会怎么做?tf.summary.scalar

简单的例子:

复杂的例子:

0 投票
0 回答
683 浏览

python - 使用步骤间隔而不是时间间隔(秒)保存 tensorflow-slim 模型

在 tensorflow api 中使用对象检测。在我之前的工作中,我曾经每隔n步检查当前步骤并保存我的模型,类似于此处提到的方法。

在这种情况下,尽管作者使用TensorFlow-Slim来执行训练。因此,他们使用 atf.train.Saver传递给执行训练的实际函数:slim.learning.train(). 虽然这个函数有一些关于使用参数写下训练模型的间隔的参数save_interval_secs,但它是时间相关的,而不是步骤相关的。

因此,由于tf.train.Saver此处提到的“被动”实用程序,并且仅使用提供的参数保存模型,这意味着不知道任何时间或步骤的概念,并且在对象检测代码中,控件通过TensorFlow-Slim传递,通过传递saver 作为参数,在这种情况下,如何实现逐步保存模型(每n 步而不是每x 秒)?

唯一的解决方案是挖掘苗条的代码并对其进行编辑(所有风险都来自于此)?还是有其他我不熟悉的选择?

PS1
我发现这里有一个关于这个选项的惊人相似的问题,不幸的是它没有任何答案。因此,由于我的问题仍然存在,我将保留这个问题以引起对该问题的一些兴趣。

PS2
查看slim.learning代码,我发现train()在传递参数后,它只是将控制权传递给supervisor.Supervisorwhich 引用tf.train.Supervisorwhich 有点奇怪,因为此类被认为已弃用。的supervisor文档字符串中也提到了slim.learning.

0 投票
1 回答
1005 浏览

tensorflow - 如何找到 tfslim 输出节点名称

在用 tensorflow 和 slim 训练了一些模型之后,我试图冻结模型和权重。但是我很难找到输出节点名称,这对于freeze_graph.freeze_graph().

我的输出层看起来像:

conv4_1 是 softmaxed 类,无论是否面对。bbox_pred 是边界框回归。

当我保存图表tf.train.write_graph(self.sess.graph_def, output_path, 'model.pb')并将 model.pb 作为文本打开时,我发现图表如下所示:

那么,问题来了,输出节点名称是什么?

tensorflow 只有编写层的方法才能设置“名称”,例如:

但我在 tensorflow slim 中找不到设置输出名称的方法。

谢谢!

0 投票
1 回答
978 浏览

python - 如何从 slim-tensorflow InceptionNet v3 模型的最后一层提取特征?

我微调了 slim-tensorflow 库中给出的 InceptionNet v3 模型。我在自己的数据集上训练了模型。现在,我有模型的 .ckpt 和 .meta 文件。

现在,据我了解,我有两种方法可以恢复模型和权重。首先,从这样的 .meta 文件中

第二种方法是调用模型并恢复检查点。像这样

现在,我认为就我的目的而言,第二种方式更容易。

现在,我的问题是,在恢复模型后,如何在给定 Image的情况下从最后一层到最后一层提取特征?我在这里包含了模型的屏幕截图模型层 发现的一个解决方案是这样的

在这里,我无法找出应该传递给 get_tenor_by_name(??) 的内容,以及如何在这里传递 sess.run?

谢谢你。请让我知道是否有其他方法可以恢复模型并获取功能。

0 投票
1 回答
4621 浏览

python - TF Slim:在自定义数据集上微调 mobilenet v2

我正在尝试在我的图像分类任务的自定义数据集上微调Mobilenet_v2_1.4_224模型。我正在关注本教程TensorFlow-Slim 图像分类库。我已经创建了 .tfrecord 训练和验证文件。当我尝试从现有检查点进行微调时,出现以下错误:

InvalidArgumentError(参见上面的回溯):分配需要两个张量的形状匹配。lhs shape= [1,1,24,144] rhs shape= [1,1,32,192] [[Node: save/Assign_149 = Assign[T=DT_FLOAT, _class=["loc:@MobilenetV2/expanded_conv_2/expand/weights"] , use_locking=true, validate_shape=true, _device="/job:localhost/replica:0/task:0/device:CPU:0"](MobilenetV2/expanded_conv_2/expand/weights, save/RestoreV2:149)]]

我使用的微调脚本是:

DATASET_DIR=G:\数据集

TRAIN_DIR=G:\Dataset\emotion-models\mobilenet_v2

CHECKPOINT_PATH=C:\Users\lenovo\Desktop\mobilenet_v2\mobilenet_v2_1.4_224.ckpt

我怀疑错误是由于最后两个参数“checkpoint_exclude_scopes”或“trainable_scopes”造成的。

我知道这两个参数被用于迁移学习,方法是移除最后 2 层并创建我们自己的 softmax 层用于自定义数据集分类。但我不确定我是否为他们传递了正确的价值观。

0 投票
0 回答
242 浏览

python - 如何从两个 tensorflow 模型中加载参数并输出一个模型文件?

假设我有两个 tensorflow 模型(A 和 B),它们的图形完全相同,但每一层的权重不同。我想将 A 中的层 conv1、conv2、conv3 和 B 中的层 conv4、conv5、conv6 合并到一个模型 C 中。模型 C 与 A 和 B 具有相同的结构,但权重不同。我知道如何使用以下代码从每个模型中单独加载层,并制作了两个单独的模型,每个模型仅包含 conv1、2、3 或 4、5、6。但我不知道如何用 conv1,2,3,4,5,6 构建模型 C。

我已经学习 tensorflow 几个月了,但还没有见过这样的东西。非常感谢!

0 投票
1 回答
342 浏览

python - 如何在 TensorFlow 中恢复模型

首先,我使用 tf.contrib.gan 训练了一个模型,如下所示,我能够训练模型。

然后我想评估模型。尝试通过以下方式恢复检查点时,

我得到了这个例外:

我正在使用 TF 1.7rc1

0 投票
0 回答
47 浏览

tensorflow - Slim Train API 不向用户提供控制以提取损失和准确度指标

我指的是Tensorflow提供的用于图像分类的train_image_classifier.py脚本。

脚本使用 slim.learning.train API 来启动训练,然后它会在内部处理所有事情。我的要求是在每 n 个 epoch(即 5 个)之后提取损失和准确度指标,并将其转储到数据库中以供以后分析。

但是由于 slim train API 的高级抽象,它不会返回损失/准确性信息。

有没有办法在给定数量的步骤/时期后利用训练过程并获得损失/准确度值?如果可能的话,请分享它的伪代码。

这对我真的很有帮助。

谢谢。