【问题标题】:Dice/Jaccard Coefficient Optimization in TensorflowTensorflow 中的 Dice/Jaccard 系数优化
【发布时间】:2018-08-10 16:54:14
【问题描述】:

我正在尝试使用 Dice 或 Jaccard 系数优化我的网络。我的问题是图像分割问题,所以我的输出是形状张量 (1, 256, 256, 11)。为了计算我的输出和我拍摄的真实图像的交集

tf.argmax(output, axis = 3)

它返回张量流优化器(特别是AdamOptimizer)似乎不接受的“int”数据类型,所以我然后将其转换为浮点数

tf.cast(tf.argmax(output, axis = 3), tf.float32)

但是,似乎没有为 tf.cast(或 tf.argmax )定义渐变。有没有人能够成功实施

【问题讨论】:

    标签: python optimization machine-learning tensorflow neural-network


    【解决方案1】:

    tf.argmax() 运算是不可微分的,所以没有实现梯度。你不能直接优化 Jaccard,因为它是不可微的。

    准确性也是如此,当您训练分类器时,即使您只关心准确性,您也会优化可微损失,因为准确性不可微。

    因此,您的问题没有解决方案,您必须使用可以区分和优化该损失的损失函数而不是 jaccard。

    【讨论】:

      【解决方案2】:

      我今天遇到了同样的问题,我意识到如果没有没有梯度的 tf.argmax() 函数,就无法计算骰子损失。

      类似情况的一种可能解决方案是使用广义骰子系数,即结合使用 softmax 预测和“one_hot”地面实况图像作为输入。

      【讨论】:

        猜你喜欢
        • 2020-04-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-02
        • 2020-01-17
        • 1970-01-01
        相关资源
        最近更新 更多