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

Map the output values of a network in 0 or 1 TensorFlow

我有一个输出层大小为 [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。这也适用于反向传播步骤中的梯度。

由于您的预测是单个 class 值,因此当您对其应用 softmax 时,无论值如何,它都将始终为 1:(exp(predict)/sum(exp(predict)) = exp(predict)/exp(predict) = 1)。将输入转换为 one-hot 并使模型预测两个 classes: [0, 1] 或改用 sigmoid cross entropy