Tensorflow准确度在每个时期都达到峰值

qvtsj1bj  于 2023-10-23  发布在  其他
关注(0)|答案(1)|浏览(129)

我在GPU上运行tensorflow进行训练。我有一个1层GRU单元,批量大小为800,我做了10个epoch。我在tensorboard的精度图中看到了这个峰值,我不明白为什么。见图。

如果你计算峰值,它们是10,作为epoch的数量。我尝试了不同的配置,减少批量大小,增加层数,但峰值仍然存在。如果有帮助,你可以找到code here
我使用tf.RandomShuffleQueue来处理具有无限epoch的数据,并计算它应该执行多少步。我不认为问题在于我如何计算精度(在这里)。你有什么建议吗?

EDITmin_after_dequeue=2000

hwamh0ep

hwamh0ep1#

这似乎与每个时期的Tensorflow准确性峰值相同,但对于自定义指标。
我已经写了一个answer for it,但我可以在这里采用一般的想法。
我无法跟踪您更新/重置指标的确切位置,或者您在哪里注册它们。因此,我假设这可能是由tensorflow自动完成的。如果是这样,我相信您看到的问题是由平均值导致的指标伪影引起的。您可能可以通过使用

def on_batch_begin(batch, logs):
    model.reset_metrics()
    return

lambda_callback = tf.keras.callbacks.LambdaCallback(on_batch_begin=on_batch_begin)

在训练时,

model.fit(..., callbacks=[lambda_callback])

请注意,这显然会使所有指标仅报告每个epoch的最后一个训练批次丢失。

相关问题