我有一个网络,其输出层的大小为[3, 13000, 3, 1] (B,H,W,C)
,并使用tf.reduce_mean
对其进行了转换,以获得输出大小[3, 13000, 1]
。
是吗?
与我的新输出一样,我的标签的大小为[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
。这也应该在反向传播步骤中使用渐变。
答案 0 :(得分:1)
由于您的预测是单个类别的值,因此在其上应用softmax
时,其值将始终为1,而与值(exp(predict)/sum(exp(predict)) = exp(predict)/exp(predict) = 1)
无关。将输入转换为one-hot
并使模型预测两个类别:[0,1]或改用sigmoid cross entropy
。