我正在尝试微调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}.
。错误发生在测试阶段,可能在10
层Complete Error Log here中。我不确定为什么会出现此问题,可能是我的accuracy
格式错误。在这方面的任何帮助将不胜感激。
答案 0 :(得分:0)
我解决了这个问题。似乎accuracy
层仅与SoftmaxWithLoss
层一起用于分类任务。如this answer中所述,EuclideanLoss
可用于测试回归网络。