Tensorflow Contrib Metrics 总是返回 0.0

我第一次尝试使用 contrib 中的指标,但没有成功使其工作。

以下是我尝试使用的指标以及它们的实现方式:

y_pred_labels = y[:, 1]y_true_labels = tf.cast(y_[:, 1], tf.int32)with tf.name_scope('auc'):        auc_score, update_op_auc = tf.contrib.metrics.streaming_auc(        predictions=y_pred_labels,         labels=y_true_labels    )    tf.summary.scalar('auc', auc_score)with tf.name_scope('accuracy_contrib'):      accuracy_contrib, update_op_acc = tf.contrib.metrics.streaming_accuracy(        predictions=y_pred_labels,         labels=y_true_labels    )    tf.summary.scalar('accuracy_contrib', accuracy_contrib)with tf.name_scope('error_contrib'):    error_contrib, update_op_error = tf.contrib.metrics.streaming_mean_absolute_error(        predictions=y_pred_labels,         labels=y_[:, 1] ## Needs to use float32 and not int32    )    tf.summary.scalar('error_contrib', error_contrib)

这段代码执行得很完美,在执行过程中我得到了以下结果:

########################################Accuracy at step 1000: 0.633333 # 这是由另一个未显示的代码计算得到的Accuracy Contrib at step 1000: (0.0, 0.0)AUC Score at step 1000: (0.0, 0.0)Error Contrib at step 1000: (0.0, 0.0)########################################

这是输入数据的格式:

y_pred_labels = [0.1, 0.5, 0.6, 0.8, 0.9, 0.1, ...] # 表示二元概率y_true_labels = [1, 0, 1, 1, 1, 0, 0, ...] # 表示真实类别 {0或1}y_[:, 1]      = [1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, ...] # 与 y_true_labels 相同,但格式化为 float32

我认为我已经在官方文档中了解到,在某些条件下这是正常行为…然而,我无法获取我的指标值。


其次,我注意到有两个指标被称为:streaming_accuracystreaming_auc,它们与“非流式”准确率或 AUC 指标的行为有何不同?如果有必要,是否有办法使其成为“非流式”的?


回答:

我刚刚遇到了同样的问题。并发现:

您需要在运行指标操作(如 sess.run(auc_score))的同时运行 update_op(如 sess.run(update_op_auc))。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注