TensorFlow:是否有计算和更新前 k 个准确度的指标?
TensorFlow: Is there a metric to calculate and update top k accuracy?
目前tf.contrib.metrics.streaming_accuracy
只能计算top 1的准确率,不能计算top k。作为解决方法,这就是我一直在使用的方法:
tf.reduce_mean(tf.cast(tf.nn.in_top_k(predictions=predictions, targets=labels, k=5), tf.float32))
但是,这并没有给我一种方法来计算每个批次的平均流准确度,这对于获得稳定的评估准确度很有用。我目前正在通过使用它的 numpy 输出手动计算这个流式传输的前 5 名准确度,但这意味着我将无法在张量板上可视化这个指标。
有没有一种方法可以通过创建一个 accuracy_update 函数来实现更简单的实现,或者是否有一个现有的函数已经这样做了?
谢谢。
您可以将您对 tf.contrib.metrics.streaming_accuracy
的使用替换为较低级别的 tf.metrics.mean
,顺便说一句,最终由 streaming_accuracy
使用 - 您会发现它们各自的相似之处文档。
例如(未测试)
tf.metrics.mean(tf.nn.in_top_k(predictions=predictions, targets=labels, k=5))
对于每批次的前 k 个准确率,这也有效。
k_val=3
accs = []
for each_bach in range(batch_size):
acc = tf.keras.metrics.top_k_categorical_accuracy(y_true=tf_class1[each_bach], y_pred=tf_class2[each_bach], k=k_val)
accs.append(acc)
acc_data_per_batch = tf.reduce_mean(accs)
tf.keras.metrics.top_k_categorical_accuracy returns K.mean(
nn.in_top_k(y_pred, math_ops.argmax(y_true, 轴=-1), k), 轴=-1) 每批
目前tf.contrib.metrics.streaming_accuracy
只能计算top 1的准确率,不能计算top k。作为解决方法,这就是我一直在使用的方法:
tf.reduce_mean(tf.cast(tf.nn.in_top_k(predictions=predictions, targets=labels, k=5), tf.float32))
但是,这并没有给我一种方法来计算每个批次的平均流准确度,这对于获得稳定的评估准确度很有用。我目前正在通过使用它的 numpy 输出手动计算这个流式传输的前 5 名准确度,但这意味着我将无法在张量板上可视化这个指标。
有没有一种方法可以通过创建一个 accuracy_update 函数来实现更简单的实现,或者是否有一个现有的函数已经这样做了?
谢谢。
您可以将您对 tf.contrib.metrics.streaming_accuracy
的使用替换为较低级别的 tf.metrics.mean
,顺便说一句,最终由 streaming_accuracy
使用 - 您会发现它们各自的相似之处文档。
例如(未测试)
tf.metrics.mean(tf.nn.in_top_k(predictions=predictions, targets=labels, k=5))
对于每批次的前 k 个准确率,这也有效。
k_val=3
accs = []
for each_bach in range(batch_size):
acc = tf.keras.metrics.top_k_categorical_accuracy(y_true=tf_class1[each_bach], y_pred=tf_class2[each_bach], k=k_val)
accs.append(acc)
acc_data_per_batch = tf.reduce_mean(accs)
tf.keras.metrics.top_k_categorical_accuracy returns K.mean( nn.in_top_k(y_pred, math_ops.argmax(y_true, 轴=-1), k), 轴=-1) 每批