从 'Explain-to-Fix' 论文构建代码时出错
An error when building the code from the 'Explain-to-Fix' paper
我尝试重新构建 E2X 论文的代码。
我准备了 repository 和重现错误的手册。
我已经成功构建并运行 测试干净的caffe/ssd b运行ch。
当使用合并的 E2X code 构建相同的 b运行ch 时,我从 make
:
得到以下错误
detection_evaluate_layer.cpp: In member function ‘virtual void caffe::DetectionEvaluateLayer<Dtype>::Forward_cpu(const std::vector<caffe::Blob<Dtype>*>&, const std::vector<caffe::Blob<Dtype>*>&)’:
detection_evaluate_layer.cpp:170:58: error: ‘const value_type’ {aka ‘const class caffe::NormalizedBBox’} has no member named ‘idx’
170 | top_data[num_det * EVAL_SHAPE + 9] = bboxes[i].idx();
| ^~~
detection_evaluate_layer.cpp:196:60: error: ‘__gnu_cxx::__alloc_traits<std::allocator<caffe::NormalizedBBox>, caffe::NormalizedBBox>::value_type’ {aka ‘class caffe::NormalizedBBox’} has no member named ‘idx’
196 | top_data[num_det * EVAL_SHAPE + 9] = bboxes[i].idx();
| ^~~
detection_evaluate_layer.cpp:221:60: error: ‘__gnu_cxx::__alloc_traits<std::allocator<caffe::NormalizedBBox>, caffe::NormalizedBBox>::value_type’ {aka ‘class caffe::NormalizedBBox’} has no member named ‘idx’
221 | top_data[num_det * EVAL_SHAPE + 9] = bboxes[i].idx();
在查看 caffe/ssd b运行ch 时,我注意到它使用了 idx
,但从未使用 idx()
。
错误出现在E2X引入的代码中。
有人知道如何解决吗?
解决方案是在 src/caffe/proto/caffe.proto
文件中添加一个字段:
optional int32 idx = 9;
这是修复的 link。
我尝试重新构建 E2X 论文的代码。
我准备了 repository 和重现错误的手册。
我已经成功构建并运行 测试干净的caffe/ssd b运行ch。
当使用合并的 E2X code 构建相同的 b运行ch 时,我从 make
:
detection_evaluate_layer.cpp: In member function ‘virtual void caffe::DetectionEvaluateLayer<Dtype>::Forward_cpu(const std::vector<caffe::Blob<Dtype>*>&, const std::vector<caffe::Blob<Dtype>*>&)’:
detection_evaluate_layer.cpp:170:58: error: ‘const value_type’ {aka ‘const class caffe::NormalizedBBox’} has no member named ‘idx’
170 | top_data[num_det * EVAL_SHAPE + 9] = bboxes[i].idx();
| ^~~
detection_evaluate_layer.cpp:196:60: error: ‘__gnu_cxx::__alloc_traits<std::allocator<caffe::NormalizedBBox>, caffe::NormalizedBBox>::value_type’ {aka ‘class caffe::NormalizedBBox’} has no member named ‘idx’
196 | top_data[num_det * EVAL_SHAPE + 9] = bboxes[i].idx();
| ^~~
detection_evaluate_layer.cpp:221:60: error: ‘__gnu_cxx::__alloc_traits<std::allocator<caffe::NormalizedBBox>, caffe::NormalizedBBox>::value_type’ {aka ‘class caffe::NormalizedBBox’} has no member named ‘idx’
221 | top_data[num_det * EVAL_SHAPE + 9] = bboxes[i].idx();
在查看 caffe/ssd b运行ch 时,我注意到它使用了 idx
,但从未使用 idx()
。
错误出现在E2X引入的代码中。
有人知道如何解决吗?
解决方案是在 src/caffe/proto/caffe.proto
文件中添加一个字段:
optional int32 idx = 9;
这是修复的 link。