Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tensorflow 1.4 tf.metrics.auc用于auc计算_Python_Tensorflow_Auc - Fatal编程技术网

Python Tensorflow 1.4 tf.metrics.auc用于auc计算

Python Tensorflow 1.4 tf.metrics.auc用于auc计算,python,tensorflow,auc,Python,Tensorflow,Auc,我试图在我的模型的训练时间记录AUC 根据标准,tf.metric.auc需要一个标签和预测,两者形状相同 但在我的二进制分类中,标签是一个一维张量,只包含类。而预测是二维的包含每个数据点的每类概率 在这种情况下,如何计算AUC 让我们看看函数中的参数: 标签:形状与预测匹配的张量。将被强制转换为bool 预测:任意形状的浮点张量,其值在范围[0,1]内 此操作已采用二进制分类。也就是说,标签中的每个元素都说明了单个样本的类别是“正”还是“负”。它不是一个1-hot向量,它需要一个元素数与排

我试图在我的模型的训练时间记录AUC

根据标准,
tf.metric.auc
需要一个
标签
预测
,两者形状相同

但在我的二进制分类中,
标签
是一个一维张量,只包含类。而
预测
二维的包含每个数据点的每类概率


在这种情况下,如何计算AUC

让我们看看函数中的参数:

  • 标签
    :形状与预测匹配的张量。将被强制转换为
    bool
  • 预测
    :任意形状的浮点张量,其值在范围
    [0,1]
此操作已采用二进制分类。也就是说,
标签
中的每个元素都说明了单个样本的类别是“正”还是“负”。它不是一个1-hot向量,它需要一个元素数与排他类数相同的向量

类似地,
predictions
以某种程度的确定性(有些人可能称之为概率)表示预测的二进制类,每个元素也应该引用一个样本。它不是softmax向量

如果概率来自一个神经网络,它有2个神经元的完全连接层,在网络的头部有一个SOFTMax激活,考虑用一个神经元和乙状结肠激活来代替它。现在可以将输出直接输入到

tf.metrics.auc

否则,可以只对预测张量进行切片,只考虑正类,这将表示二进制类是相同的:

auc_value, auc_op = tf.metrics.auc(labels, predictions[:, 1])

你没有试过用
tf.argmax
从概率中获取实际预测吗?据我所知,要计算AUC,你需要知道所有类的概率,而不仅仅是最大概率的类。正确的?在二元分类器中,你可以计算其他类的概率,但不能计算多类的概率。您可能希望获取“正”类的概率:
prob[:,1]
因此,我没有只传递
标签,而是将其转换为
tf.one\u hot
,从而将其维度更改为[batch*n\u classes]。现在概率也是[batch*n_类]。AUC给出了一些值,但不确定它是否正确:/听起来不对。您是否尝试过转换二维概率张量?您是否建议始终传递
Class==1
的概率,而不考虑标签?@random_28当我们处理二进制分类时,
p(Class=0)
的概率无论如何都应该是
1-p(Class=1)
。这里不需要类为负的概率。我理解,但是没有提到在哪里通过
p(class=1)
:我们怎样才能确认呢?因为如果我们将
p(Class=label[i])
传递给
i
th数据点,这也会起作用。那是因为接口已经假设预测是一个二进制分类。ROC曲线是通过对这些值应用多个阈值来构建混淆矩阵来计算的。除非您处理的是多类分类,否则采用
p(class=1)
就可以了。还请注意,您可以使用构建整个ROC曲线,并亲自查看结果。