如何计算eval_metric_ops的中位数?

时间:2018-05-15 02:09:21

标签: tensorflow tensorflow-estimator

在使用Estimator接口评估我的张量流模型时,我想使用中值运算而不是均值。

我在model_function中使用此操作:

let data = [
  {
    prop1: ' text1 , text2 , text3 ',
    prop2: 'stuff1',
    prop3: 'stuff1',
    prop4: 'stuff1',
    prop5: 'https://www.stuff1.com'
  },

  {
    prop1: ' text1 , text2 , text3 ',
    prop2: 'stuff2',
    prop3: 'stuff2',
    prop4: 'stuff2',
    prop5: 'https://www.awefewfew.com'
  }
]
let res = data.reduce((re, obj) => {
  obj.prop1.split(',').forEach(val => {
    re.push(Object.assign({}, obj, { prop1: val.trim() }))
  })
  return re
}, [])
console.log(res)

我没有在tf.metrics包中找到替换tf.metrics.mean的中值函数。我可以自己计算,但eval_metric_ops需要一个(tensor,update_op)元组,我不确定应该是什么update_op。如何自己实施此指标?

谢谢!

编辑: 我还没有找到怎么做,但是在tensorflow github上有一个关于它的讨论:https://github.com/tensorflow/tensorflow/issues/5837

所以我将使用这个tf.contrib.metrics.streaming_concat来返回我的eval数据集上的完整数组:

如果mode == tf.estimator.ModeKeys.EVAL:     return tf.estimator.EstimatorSpec(mode = mode,loss = loss,eval_metric_ops = {“all_accuracies”:tf.contrib.metrics.streaming_concat(my_tensor)}) 并使用numpy计算中位数:

evaluation = estimator.evaluate(input_fn = myinput_fn,mode = tf.estimator.ModeKeys.EVAL,steps = None) 打印(np.median(评价[ 'all_accuracies'])) 我可以得到这样的最终准确度,但是在张量板训练期间我不会看到它,有关如何做的任何想法吗?

0 个答案:

没有答案