python - 来自 tensorflow 的用于图像分割的 sigmoid_cross_entropy 损失函数

标签 python tensorflow machine-learning neural-network deep-learning

我想了解 sigmoid_cross_entropy 损失函数在图像分割神经网络方面的作用:

这是相关的 Tensorflow 源 code :

zeros = array_ops.zeros_like(logits, dtype=logits.dtype)
cond = (logits >= zeros)
relu_logits = array_ops.where(cond, logits, zeros)
neg_abs_logits = array_ops.where(cond, -logits, logits)
return math_ops.add(
    relu_logits - logits * labels,
    math_ops.log1p(math_ops.exp(neg_abs_logits)), name=name)

我的主要问题是为什么返回时有一个math_ops.add()? add 是指图像中每个像素的损失总和,还是总和在做一些不同的事情?我无法正确地遵循尺寸变化来推断求和在做什么。

最佳答案

sigmoid_cross_entropy_with_logits 用于多标签分类。

对于独立的类预测(例如 1 既是偶数又是素数),整个问题可以分为二元交叉熵损失。最后收集所有预测损失并对其进行平均。

下面是一个例子:

import tensorflow as tf


logits = tf.constant([[0, 1],
                      [1, 1],
                      [2, -4]], dtype=tf.float32)
y_true = tf.constant([[1, 1],
                      [1, 0],
                      [1, 0]], dtype=tf.float32)
# tensorflow api
loss = tf.losses.sigmoid_cross_entropy(multi_class_labels=y_true,
                                       logits=logits)

# manul computing
probs = tf.nn.sigmoid(logits)
loss_t = tf.reduce_mean(y_true * (-tf.log(probs)) +
                        (1 - y_true) * (-tf.log(1 - probs)))

config = tf.ConfigProto()
config.gpu_options.allow_growth = True  # pylint: disable=no-member
with tf.Session(config=config) as sess:
    loss_ = loss.eval()
    loss_t_ = loss_t.eval()
    print('sigmoid_cross_entropy: {: .3f}\nmanual computing: {: .3f}'.format(
        loss_, loss_t_))
------------------------------------------------------------------------------
#output: 
    sigmoid_cross_entropy:  0.463
    manual computing:  0.463

关于python - 来自 tensorflow 的用于图像分割的 sigmoid_cross_entropy 损失函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52046971/

相关文章:

python - 从另一个数据帧更新数据帧不起作用

pandas - "Can not convert a ndarray into a Tensor or Operation"在 tensorflow 中使用 pandas 数据帧

tensorflow - 在 Keras IMDB 示例中使用字符串作为输入

machine-learning - 使用给定数据集实现深度学习架构

machine-learning - 噪声训练损失

python - 检索列表列表中元素的索引

python - 从 Odoo 图形 View 中隐藏字段

python - 写入格式化文件

python-3.x - 固定时间表的自适应学习率

python - 使用 protobuf 从 tfrecords 文件中提取图像而不运行 TensorFlow session