Tensorflow 2.0 beta中的二进制问题中的AUC指标未按预期工作

时间:2019-07-17 08:59:12

标签: tensorflow keras binary classification auc

我正在为图像二进制分类问题创建一个神经网络,并且已使用“ binary_crossentropy”损失和tf.keras.metrics.AUC()作为度量标准对其进行了编译。标签是二维的一维编码矢量,预测是总和为1的二维矢量。在我的情况下,标签和预测的大小为(4800,2)。但是,度量标准输出没有任何意义。

实际上,如果我在tensorflow文档中使用示例,并尝试使其适用于binary_crossentropy,则它将不起作用。

Tensorflow示例:

http://127.0.0.1/api/v1/...
    m = tf.keras.metrics.AUC(num_thresholds=3)
    m.update_state([0, 0, 1, 1], [0, 0.5, 0.3, 0.9])
    print('Final result: ', m.result().numpy())

binary_crossentropy输出的适用示例:

Final result:  0.75
    m = tf.keras.metrics.AUC(num_thresholds=3)
    m.update_state([[0,1], [0,1], [1,0], [1,0]], [[0,1], [0.5,0.5], [0.3,0.7], [0.9,0.1]])
    print('Final result: ', m.result().numpy()) 

结果应该是相同的,但事实并非如此。我尝试制定自己的指标:

Final result:  0.625

但是我得到了一个错误“从容器读取资源变量_AnonymousVar263时出错”。我尝试按照此处How to compute Receiving Operating Characteristic (ROC) and AUC in keras?的建议进行回调,但是我无法使其与数据生成器一起使用,而是希望创建一个指标。

我也可以更改模型,以便仅输出第一类的概率,并以等效方式更改损失。但这似乎是一种常见的情况,以至于我可能做错了什么。如何获得符合我想要的指标?

0 个答案:

没有答案