我想向你解释一个非常奇怪的问题。我不确定这是否是SO的主题,但我希望最终会这样。
我的一般问题任务是深度估计,即我有一个图像作为输入及其对应的ground_truth(深度图像)。然后我有我的网(应该被认为是黑盒子)和我的最后一层。
首先,深度估算是一个回归任务,而不是一个分类任务。因此,我决定使用EuclideanLoss
图层,其中我的num_output
图层的Convolution
为1 - >输出为1xheightxwidth
。净收敛,最后的损失值为3
。当我尝试使用deploy.prototxt
创建估算的输出图像时,我会移除EuclideanLoss
图层。然后我的las层是ReLU
层,如下所示:
layer {
name: "relu"
type: "ReLU"
bottom: "conv"
top: "result"
relu_param{
negative_slope: 0.01
engine: CUDNN
}
}
我的问题是:估计的深度图像看起来不像我的ground_truth。好吧,首先,听起来有点像是的,你有一个网,它不起作用。但是当我将我的任务变成一个不太适合这种方法的分类任务时,我会得到非常好的结果。通过将其更改为分类任务,我的意思是将EculideanLoss
图层与SoftmaxLayer
进行交换而不是num_output = 1
在最后Convolution
图层中{I}} num_output = 256
{1}}深度值,其中0为黑色,1为白色。
我真的很困惑,因为回归任务在理论上应该比分类任务更好。任何人都可以帮我解决这个问题吗?我的想法有什么大错吗?或者我是否忘记了对回归真正重要的事情?
任何答案都非常感谢!