Sigmoid 或 Softmax 用于图像分割中的多通道 conv2d 输出

问题描述

我正在训练我的 U 架构进行像素分类我有 9 个班级,所有班级都是互斥的。每个标签都用 0 到 9 的不同像素值表示,包括背景,标签之间没有重叠。

所以我认为这是多类分类

我在 U-net 中的最后一层是

out=layers.conv2D(num_classes,Activation='softmax')(prevIoUs_layer)
model.compile(optimizer=Adam(lr),loss='categorical_crossentropy',metrics=[mean_IoU])

我检查了 softmax 激活如何使每个类的概率和输出总和绑定为 1。

但是如果我不考虑背景类并且有 8 个类,为什么我不能使用 sigmoid?。 示例:

out=layers.conv2D(num_classes,Activation='sigmoid')(prevIoUs_layer)
model.compile(optimizer=Adam(lr),loss='binary_crossentropy',metrics=[mean_IoU])

这会作为二进制像素分类单独作用于每个通道吗?如果这可行,那么我应该从模型中获得单个输出还是根据类的数量获得多个输出

如果这也适用,那么为什么所有多类问题都使用 softmax

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)