machine-learning - Caffe:检查失败:outer_num_ * inner_num_ == bottom[1]->count() (10 vs. 60) 标签数必须与预测数匹配
问题描述
我正在尝试为多标签回归任务微调 Alexnet。为此,我将产生 1000 个标签输出(用于图像分类任务)的最后一层替换为 6 个标签输出,这为我提供了 6 个浮点数。我替换了这里提到的最后一层。
我的训练数据按h5
格式准备,形状为 (11000, 3, 544, 1024) fordata
和 (11000, 1, 6) for labels
。在 Caffe 库中重新训练 Alexnet 的权重时,出现以下错误:
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}.
我的训练和测试阶段的 Batchsize 都是10
. 错误出现在测试阶段,可能在Complete Error Log hereaccuracy
层中。我不确定为什么会出现这个问题,可能是我的形状不正确。在这方面的任何帮助将不胜感激。label
解决方案
我解决了这个问题。似乎该accuracy
层仅与层一起用于分类任务SoftmaxWithLoss
。如this answer中所述,EuclideanLoss
可用于测试回归网络。
推荐阅读
- python-3.x - ETA 在 GridSearchCV ScikitLearn 中代表什么?
- c++ - 如何在显示器上绘制二进制矩阵
- javascript - 如何将 href 添加到 SharePoint 上的按钮
- python - pytorch 如何设置 .requires_grad False
- android - 是否可以通过仅在 Android 项目中使用最高质量的资源来减小应用程序大小?
- charts - Google Chart BarChart onmouseover
- javascript - 通过firebase更新反应本机复选框的值
- java - 控制器导致浏览器在错误的路径中查找 CSS
- macos - Applescript将目录列表添加到查找器侧边栏收藏夹
- reactjs - 未定义的 mapStateToProps React Redux