Neural network Caffe:欧几里德损失误差:输入必须具有相同的维数

Neural network Caffe:欧几里德损失误差:输入必须具有相同的维数,neural-network,caffe,conv-neural-network,pycaffe,convolutional-neural-network,Neural Network,Caffe,Conv Neural Network,Pycaffe,Convolutional Neural Network,我正在python中使用caffe。这是我的斑点形状: data 3072 3.07e+03 (1, 3, 32, 32) conv2d1 12544 1.25e+04 (1, 16, 28, 28) maxPool1 3136 3.14e+03 (1, 16, 14, 14) fc1

我正在python中使用caffe。这是我的斑点形状:

data                        3072     3.07e+03    (1, 3, 32, 32)
conv2d1                    12544     1.25e+04    (1, 16, 28, 28)
maxPool1                    3136     3.14e+03    (1, 16, 14, 14)
fc1                           10     1.00e+01    (1, 10)
ampl                          10     1.00e+01    (1, 10)
-------------------------------- params: name,w,(b)
conv2d1                     1200     1.20e+03    (16, 3, 5, 5)    
fc1                        31360     3.14e+04    (10, 3136)
这是我在proto.txt文件中的最后两层:

...
layer {
  name: "ampl"
  type: "Softmax"
  bottom: "fc1"
  top: "ampl"
  softmax_param {
    axis: 1
  }
}
layer {
  name: "loss"
  type: "EuclideanLoss"
  bottom: "ampl"
  bottom: "label"
  top: "loss"
}
我得到了这个错误:

euclidean_loss_layer.cpp:12] Check failed: bottom[0]->count(1) == bottom[1]->count(1) (10 vs. 1) Inputs must have the same dimension.

你的错误是不言自明的:


您正试图在
“ampl”
“label”
之间进行计算。要执行此操作,必须使
的“ampl”
的“label”
是具有相同数量元素的blob(也称为
count()
)。然而,似乎当
“ampl”
有10个元素时,
“label”
只有一个元素。

ampl有10个元素,因为我有10个输出神经元(10类),label有1个元素,因为它是一个数字[0-9](10类)。我该怎么办?要更改哪一个?如何更改?@NimaHatami那么你为什么要使用
“EuclideanLoss”
?这种损失主要用于回归任务。听起来好像您正在尝试为数据添加标签。为什么不使用
“SoftmaxWithLoss”
(这是跨entroy的目标)?谢谢@Shai,我把它改成了SoftmaxWithLoss,现在可以使用了!
Inputs must have the same dimension