Tensorflow:自定义错误聚合器

时间:2017-08-02 10:12:31

标签: python tensorflow

假设我们想要更改Abalone regression example,以便有一个额外的评估指标。名为pctWrong的指标等于错误为>的预测百分比。 1%: === pseudocode === pctWrong = countTrue(if (|y-y_hat|/y > 1%) True else False) / countTotal

=== Python ===
105 # Calculate additional eval metrics
106 eval_metric_ops = {
107     "rmse": tf.metrics.root_mean_squared_error(
108         tf.cast(labels, tf.float64), predictions),
109     "pctWrong": ???
110 }

您将如何定义此类指标?我找到了tf.metrics.percentage_below(),这可能会有所帮助,但我不知道如何使用它。特别是我不知道如何获得values参数。

1 个答案:

答案 0 :(得分:0)

更新:毕竟这并不困难。下面的代码有点粗糙,但它有效。

# Calculate additional eval metrics
ys = tf.cast(labels, tf.float64)
y_hats = predictions
losses = tf.divide(tf.abs(tf.subtract(ys, y_hats)), ys)
accuracies = -losses

eval_metric_ops = {
    "rmse": tf.metrics.root_mean_squared_error(tf.cast(labels, tf.float64), predictions),
    "pctWrong": tf.metrics.percentage_below(accuracies, -0.01)
}