当前的 tf.contrib.metrics.streaming_accuracy
只能计算前1的准确率,而不能计算前k的准确率。作为解决方法,我一直在使用以下代码:
tf.reduce_mean(tf.cast(tf.nn.in_top_k(predictions=predictions, targets=labels, k=5), tf.float32))
然而,这并不能让我计算跨批次平均的流式准确率,而这对于获得稳定的评估准确率非常有用。我目前通过使用其numpy输出手动计算这种流式前5准确率,但这意味着我无法在tensorboard上可视化这个指标。
有没有通过创建一个accuracy_update函数来实现更简单的实现方法,或者是否已经存在一个能够做到这一点的函数?
谢谢。
回答:
你可以用更底层的 tf.metrics.mean
来替代 tf.contrib.metrics.streaming_accuracy
,顺便说一下,streaming_accuracy
最终也是使用了 tf.metrics.mean
—— 你会在它们各自的文档中发现相似之处。
例如(未经测试)
tf.metrics.mean(tf.nn.in_top_k(predictions=predictions, targets=labels, k=5))