计算张量流中AUC的正确方法

时间:2018-01-02 16:55:19

标签: python-3.x tensorflow machine-learning deep-learning auc

我在TensorFlow中计算曲线下面积(AUC)。 这是我的代码的一部分:

np.array(x).astype(np.float)

rekt = []
for m in x:
    rekt.append(float(m));

np.array(da[i]).astype(np.float)

print(np.corrcoef(rekt,da[i]))
output = np.corrcoef(rekt,da[i])

`

在上面的代码中, with tf.name_scope("output"): W = tf.Variable(tf.random_normal([num_filters_total, num_classes], stddev=0.1), name="W") b = tf.Variable(tf.constant(0.1, shape=[num_classes]), name="b") l2_loss += tf.nn.l2_loss(W) l2_loss += tf.nn.l2_loss(b) self.scores = tf.nn.xw_plus_b(self.h_drop, W, b, name="scores") self.softmax_scores = tf.nn.softmax(self.scores) self.predictions = tf.argmax(self.scores, 1, name="predictions") # CalculateMean cross-entropy loss with tf.name_scope("loss"): self.losses = tf.nn.softmax_cross_entropy_with_logits(labels=self.input_y,logits=self.scores) self.loss = tf.reduce_mean(self.losses) + l2_reg_lambda * l2_loss # Accuracy with tf.name_scope("accuracy"): correct_predictions = tf.equal(self.predictions, tf.argmax(self.input_y, 1)) self.accuracy = tf.reduce_mean(tf.cast(correct_predictions, "float"), name="accuracy") # AUC with tf.name_scope("auc"): self.auc = tf.metrics.auc(labels = tf.argmax(self.input_y, 1), predictions = self.predictions)` 是一个形状为input_y的张量,(batch_size,2)的形状为predictions。 因此,(batch_size,)labelspredictions变量的实际值为tf.metrics.auc。 我想知道它是否是计算AUC的正确方法? 我已尝试使用以下命令:

[0,1,1,1,0,0,...] 但这只给我零数字。

我注意到的另一件事是,虽然self.auc = tf.metrics.auc(labels = tf.argmax(self.input_y, 1), predictions = tf.reduce_max(self.softmax_scores,axis=1)) 在训练过程结束时非常稳定,但第一种方法计算的accuracy不断增加。那是对的吗? 感谢。

0 个答案:

没有答案