gpt4 book ai didi

machine-learning - 解释 Caffe FCN 输出类

转载 作者:行者123 更新时间:2023-11-30 09:17:28 26 4
gpt4 key购买 nike

我已经设置了 Caffe 并使用 FCN-8s 模型,输出类几乎没有变化:

layer {
name: "score_5classes"
type: "Convolution"
bottom: "score"
top: "score_5classes"
convolution_param {
num_output: 2
pad: 0
kernel_size: 1
}
}
layer {
name: "loss"
type: "SoftmaxWithLoss"
bottom: "score_5classes"
bottom: "label"
top: "loss"
loss_param {
normalize: true
}
}

我已将最后一层输出数更改为 2,因为我想将输入图像分为 2 个类,0 和 1(所以看来我应该有 2 个输出!我不明白为什么?!它可能是一个输出矩阵用零和一,不是吗?)

所以我的问题是:

1.我应该对这两个类求和吗?因为我需要 1 个输出

2.损失这么小!即使输出与期望相距甚远! Caffe如何计算丢失层?

谢谢

最佳答案

进行二元分类时,使用"SoftmaxWithLoss"有两个输出,在数学上相当于使用 "SigmoidCrossEntropyLoss" 。因此,如果您确实只需要一个输出,则可以将最后一层设置为 num_output: 1 并使用“SigmoidCrossEntropyLoss”。但是,如果您想利用 caffe 的“Accuracy”层,则需要使用两个输出和“SoftmaxWithLoss”层。

关于您的问题:
1. 如果您选择使用“SoftmaxWithLoss”并且只需要一个输出,则为每个像素采用第二个输出,因为此条目代表类别 1 的概率。
我将把它留给你作为练习,弄清楚如果你计算总和你会得到什么(提示:`“Softmax”输出概率......)
2. 损失非常小,很可能是因为你有严重的类别不平衡 - 大多数像素都是 0,而只有极少数是 1(反之亦然),因此预测始终为 0 不会产生这么大的惩罚。如果您遇到这种情况,我建议您查看 Focal Loss解决了这个问题。

关于machine-learning - 解释 Caffe FCN 输出类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51553480/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com