Keras训练循环如何过滤损失值?

我设置了一个如下所示的Keras模型(TensorFlow 1.2.1版本):

输出是一个简单的浮点向量,并且如期望的那样收敛。损失函数使用的是均方误差。示例输出如下:

 18/100 [====>.........................] - ETA: 30s - loss: 31.5118 19/100 [====>.........................] - ETA: 29s - loss: 30.7577 20/100 [=====>........................] - ETA: 29s - loss: 29.7815 21/100 [====>........................] - ETA: 28s - loss: 29.0535 22/100 [====>........................] - ETA: 28s - loss: 28.1963 23/100 [====>........................] - ETA: 28s - loss: 27.3314 24/100 [======>.......................] - ETA: 28s - loss: 26.7219 25/100 [======>.......................] - ETA: 28s - loss: 25.9702 26/100 [======>.......................] - ETA: 27s - loss: 25.4181 27/100 [=======>......................] - ETA: 27s - loss: 25.0638 28/100 [=======>......................] - ETA: 27s - loss: 24.6081 29/100 [=======>......................] - ETA: 26s - loss: 24.0928

损失似乎在稳步下降。然而,当我查看实际的损失值(keras.callbacks.LambdaCallback@on_batch_end)时,情况并非如此平滑:

25.47338328.05177920.51907513.20449320.7494621.24625425.61114913.19468213.26874415.40842217.18385111.23263714.49311510.196851

我尝试研究了Keras的源代码,但无法理解底层发生了什么。Keras是如何过滤实际损失值的?在源代码的哪里可以找到这些信息?

谢谢!


回答:

实际上,进度条中显示的是在打印时,截至当前epoch的所有批次的损失均值。(例如,2个批次后的前2个批次的均值,3个批次后的前3个批次的均值,依此类推)。因此,您可以通过计算前n个损失值的均值来获得第n个epoch后的打印值。您可以在这里阅读关于Progbar的定义。

Related Posts

L1-L2正则化的不同系数

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

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

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

f1_score metric in lightgbm

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

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

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

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

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

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

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

发表回复

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