caffe:如何解释欧氏损失(逐像素回归)
caffe: How to interpret EuclideanLoss (pixel-wise regression)
我有一个图像作为输入,一个图像作为 ground_truth。我的最后一层是 EuclideanLoss
,其中最后 convolutional
层具有 num_output = 1
,以便计算这两幅图像之间的损失。
在使用我的 deploy.prototxt
测试网络时,我省略了 EuclideanLoss
层,这意味着我的最后一层是 Convolutional
层,然后是 Relu
层.当我通过 Python 检索这些值时,我该如何解释这些值:
pred = net.forward()
output_blob = pred['result']
output_blob 是 1xheightxwidth
形状,但值不在特定范围内。他们甚至可以是消极的。您如何检索正确的值来创建图像?或者我必须如何解释这些值?我是否必须从输入图像中减去它们,或者我应该如何处理它们?
如果你知道你的输出应该是非负的,为什么要使用负斜率的 ReLU?,我会将其更改为常规的 ReLU 层。
然后,在使用 forward() 之后,你应该得到这样的输出数据:
output_data=output_blob.data[...]
该输出的形状可能类似于 Batch、nchannels、H、W。
您可以使用 output_data=np.squeeze (output_data)
将输出作为二维矩阵。
编辑:
解释最后一层值的方法是,它是最接近(根据 L2 距离)在给定输入训练期间看到的深度估计的图像。
我有一个图像作为输入,一个图像作为 ground_truth。我的最后一层是 EuclideanLoss
,其中最后 convolutional
层具有 num_output = 1
,以便计算这两幅图像之间的损失。
在使用我的 deploy.prototxt
测试网络时,我省略了 EuclideanLoss
层,这意味着我的最后一层是 Convolutional
层,然后是 Relu
层.当我通过 Python 检索这些值时,我该如何解释这些值:
pred = net.forward()
output_blob = pred['result']
output_blob 是 1xheightxwidth
形状,但值不在特定范围内。他们甚至可以是消极的。您如何检索正确的值来创建图像?或者我必须如何解释这些值?我是否必须从输入图像中减去它们,或者我应该如何处理它们?
如果你知道你的输出应该是非负的,为什么要使用负斜率的 ReLU?,我会将其更改为常规的 ReLU 层。 然后,在使用 forward() 之后,你应该得到这样的输出数据:
output_data=output_blob.data[...]
该输出的形状可能类似于 Batch、nchannels、H、W。
您可以使用 output_data=np.squeeze (output_data)
将输出作为二维矩阵。
编辑: 解释最后一层值的方法是,它是最接近(根据 L2 距离)在给定输入训练期间看到的深度估计的图像。