【问题标题】:what method is the correct way of implemeting dice loss ? sigmoid or softmax?什么方法是实现骰子损失的正确方法? sigmoid 还是 softmax?
【发布时间】:2020-05-05 04:21:47
【问题描述】:
我有一个二元语义分割问题,我想到了两种方法。
方法一:
Unet 输出一个带有 sigmoid 激活的类,然后我使用 dice loss 来计算损失
方法二:
基本事实连接到它是反向的,因此有 2 个类。 Unet 的输出是 2 个类,并对它们应用 softmax 激活。然后使用骰子损失来计算损失。
哪个是正确的?
【问题讨论】:
标签:
machine-learning
keras
deep-learning
image-segmentation
【解决方案2】:
这个问题已经回答here。如果您有 2 类问题,则仅输出 1 个通道,使用 sigmoid 函数(输出值介于 0 和 1 之间)。然后,您可以使用输出(连续值)和目标(单通道 one-hot-encoded,离散值)计算骰子损失。如果您的网络输出 2 个通道,则使用 softmax 函数并使用输出(连续值)和目标(2 通道 one-hot-encoded)计算您的损失。前者是首选,因为您将拥有更少的参数。