单浮点标签,caffe中的LMDB格式

Single Float label , LMDB Format in caffe

我正在使用 caffe 解决回归问题,我想知道如何将 格式用于单个浮点标签。

目前caffe只支持lmdb数据的int32类型标签(Datumlabel的类型是int32)。
为了更改此默认行为,我按如下方式更改了 caffe 中的一些文件,但问题仍然存在,转换标签后所有标签均为零。

caffe.proto -> line36 : int32 to float
convert_imageset.cpp -> line 75 and 77 : int to float
io.cpp and io.hpp -> all the labels were int , I changed them to float 

毕竟我又编译了一次caffe,还是不行。

请问有大佬解决这个问题吗?尽快解决它对我来说非常重要。

提前致谢。

通过强制和调整 caffe 使用 LMDB 数据集中的浮动标签来解决您的问题似乎不是一个很好的策略。

我建议改为使用 caffe 的 "HDF5Data" 层。使用 hdf5 格式为 caffe 存储数据更加灵活,并且允许您拥有浮动标签。

有关详细信息,请参阅

如果你坚持强制caffe支持浮动标签,你可能还需要更改convert_imageset.cpp line 81
目前这一行使用 atoi 将字符串转换为 int:

label = atoi(line.substr(pos + 1).c_str());

您应该将其转换为用户 atof 以将字符串转换为 float:

label = atof(line.substr(pos + 1).c_str());