在Tensorflow Estimator打印损失时使用的数据集是什么?

在使用Tensorflow Estimator时,它会在Python控制台上每100步打印一次全局步数和损失值(此外,它还会打印学习率、交叉熵和我的评估指标MAE,这些值会被打印在不同的行上,我认为这是由于某些包装函数所致,这些函数并不属于原始的Estimator API,因为我使用的是Google开发者的ResNet实现)。打印内容如下所示:

    I0530 19:20:42.748463 10964 tf_logging.py:116] learning_rate = 3.552962e-05, cross_entropy = 2.2080934, MAE = 5.135024 (62.295 sec)       I0530 19:20:42.749458 10964 tf_logging.py:116] loss = 2.2080934, step = 76066 (62.295 sec)

我的问题是,计算的是什么损失(或者计算的是什么MAE)?
是在特定步骤的日志记录发生时仅针对一个例子的损失吗?
是在特定步骤的日志记录发生时针对一个批次的损失吗?
还是整个训练集的损失?

另外,如果我的假设有误,请纠正我。我在这个领域还是新手。
谢谢。


回答:

tf.Estimator会自动为损失和全局步数设置一个LoggingTensorHook。据推测,你运行的代码为其他值(学习率、交叉熵(这实际上就是损失)和MAE)设置了单独的钩子,这就是为什么它们会被打印在不同的行上。

至于用于生成这些值的数据:它是“当前”的数据批次,即在进行日志记录的步骤中使用的数据批次。因此,在你提出的三个选项中,第二个选项是正确的。

这可以通过源代码确认,因为钩子会在运行后进行日志记录,接收到最后一次session.run()调用的结果(每次只获取一个批次)到run_values中。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

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