Tensorboard 提高准确度得分
Posted
技术标签:
【中文标题】Tensorboard 提高准确度得分【英文标题】:Tensorboard bump in accuracy score 【发布时间】:2018-10-14 15:17:00 【问题描述】:我一直在使用 Tensorflow 训练我的 Inception ResNet V2,并通过 TensorBoard 记录准确度/损失等。
现在,当我今天恢复训练时,在恢复之前停止的检查点时,我的准确率几乎立即(在几个全局步骤中)从 86% 提高到 97%。
查看损失图时,它似乎还在逐渐降低,但准确度有这个巨大的提升。对此有明显/合乎逻辑的解释吗? 我在第 21 个 epoch(在 20 停止)恢复了训练,每个 epoch 有 1339 个全局步数。
【问题讨论】:
训练集的大小是多少?你在平滑精度吗? 训练大小为16k图像,我使用正常的tf.contrib准确率,每一步都保存到tensorboard 【参考方案1】:那是因为您使用的是流式准确度,它会累积从时间开始以来的所有统计数据——嗯,是训练时间。
在您停止训练之前,流式传输准确度一直在返回自开始以来的平均准确度。
当您恢复训练时,流式准确度操作已重置,现在输出您恢复训练后的平均准确度。它要高得多,因为当您的模型较弱时,它不会与较早的较低准确度值进行平均。
我实际上posted something yesterday 讨论了如何不时重置流指标以避免这种持续积累。
【讨论】:
感谢您对您之前帖子的参考,将研究它!【参考方案2】:我认为贡献的准确性是问题所在。
https://github.com/tensorflow/tensorflow/issues/9498。
它不会重置,因此您的准确度基本上是该点所有准确度的平均值。当您重新加载图表时,此运行平均值已重置。好消息,您的网络训练得很好。
【讨论】:
【参考方案3】:正如@P-Gn 在接受的答案中指出的那样,这是因为 tf.metrics 都是设计的流式指标。
您可以重置流指标,或者,如果您只关心单个批次的准确性,您可以使用简单的函数:
def non_streaming_accuracy(predictions, labels):
return tf.reduce_mean(tf.cast(tf.equal(predictions, labels), tf.float32))
【讨论】:
以上是关于Tensorboard 提高准确度得分的主要内容,如果未能解决你的问题,请参考以下文章