在0或1个TensorFlow中映射网络的输出值

时间:2018-10-01 21:06:18

标签: python python-2.7 tensorflow loss-function softmax

我有一个网络,其输出层的大小为[3, 13000, 3, 1] (B,H,W,C),并使用tf.reduce_mean对其进行了转换,以获得输出大小[3, 13000, 1]

从图形上讲,这是enter image description here

是吗?

与我的新输出一样,我的标签的大小为[3, 13000, 1],并且均为0或1。

现在,我必须使用标签来计算损失。要计算此损耗,我使用公式tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(logits=predict, labels=y)),但是首先我必须将输出中的所有值都转换为0或1。我使用的是tf.nn.softmax函数,但我得到的都是1。

如何实现将阈值以下的所有值映射到0并大于1的函数?并且此阈值应为(max value - min value) / 2。这也应该在反向传播步骤中使用渐变。

1 个答案:

答案 0 :(得分:1)

由于您的预测是单个类别的值,因此在其上应用softmax时,其值将始终为1,而与值(exp(predict)/sum(exp(predict)) = exp(predict)/exp(predict) = 1)无关。将输入转换为one-hot并使模型预测两个类别:[0,1]或改用sigmoid cross entropy