Caffe:检查失败:external_num_ * inner_num_ == bottom [1]-> count()(10 vs. 60)标签数量必须与预测数量匹配

时间:2018-10-13 06:29:45

标签: machine-learning deep-learning computer-vision regression caffe

我正在尝试微调Alexnet以进行多标签回归任务。为此,我将产生1000个标签输出(用于图像分类任务)的最后一层替换为6个标签输出,这为我提供了6个浮点数。我替换了最后一层as mentioned here

我的训练数据以__init__.py格式准备,对于h5的形状为(11000,3,544,1024),对于data的形状为(11000,1,6)。在Caffe库中重新训练Alexnet的权重时,出现以下错误:

labels

在培训和测试阶段的我的Batchsize为I1013 10:50:49.759560 3107 net.cpp:139] Memory required for data: 950676640 I1013 10:50:49.759562 3107 layer_factory.hpp:77] Creating layer accuracy_retrain I1013 10:50:49.759567 3107 net.cpp:86] Creating Layer accuracy_retrain I1013 10:50:49.759568 3107 net.cpp:408] accuracy_retrain <- fc8_fc8_retrain_0_split_0 I1013 10:50:49.759572 3107 net.cpp:408] accuracy_retrain <- label_data_1_split_0 I1013 10:50:49.759575 3107 net.cpp:382] accuracy_retrain -> accuracy F1013 10:50:49.759587 3107 accuracy_layer.cpp:31] Check failed: outer_num_ * inner_num_ == bottom[1]->count() (10 vs. 60) Number of labels must match number of predictions; e.g., if label axis == 1 and prediction shape is (N, C, H, W), label count (number of labels) must be N*H*W, with integer values in {0, 1, ..., C-1}. 。错误发生在测试阶段,可能在10Complete Error Log here中。我不确定为什么会出现此问题,可能是我的accuracy格式错误。在这方面的任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。似乎accuracy层仅与SoftmaxWithLoss层一起用于分类任务。如this answer中所述,EuclideanLoss可用于测试回归网络。