1

新手在这里喝咖啡。
我想在我自己的数据集上复制LeNet。我的训练数据是一维数据,可以表示为1x3000矢量。对于每个1x3000向量,我有一个标签,它是1x64维二进制向量的另一个1D向量。我有10万个这样的(数据,标签)数据。我很困惑我怎么能把这个喂给Caffe。所有的例子都是针对尺寸为N x N的图片。喂食长一维矢量数据,一维矢量标签到咖啡

任何想法如何将这些数据进行处理以提供给Caffe?

我正在考虑对零矢量进行零填充,并使它成为n(零填充)xN,但它似乎并不正确。 也可以将1x3000矢量切片为1xn并将它们堆叠起来形成一个mxn矩阵是一个解决方案?有没有人做过这个?

任何建议表示赞赏。

+0

相关:http://stackoverflow.com/q/29213108/1714410 – Shai

回答

0

Caffe可以轻松处理“数据”和“标签”二维数据。
我猜想将数据提供给caffe最直接的方法是使用hdf5格式文件。您可以使用'data''label'数据集以二进制hdf5数据文件中的数据。然后,您可以使用"HDF5Data"图层将数据提供给caffe。

+0

感谢Shai的建议。我有几个跟进问题。那么,在那种情况下,我的所有用于卷积层和合并层的内核也都是1xN尺寸的。那也是caffe支持的吗? 2.我的'标签'真的很长,所以我有点担心如果这会在以后造成不好的结果。对于一个1x3000数据,我有64个(可能会增加到128个)二进制向量标签。这不像数据属于64个不同的类(因为我已经看到了一些建议的多标签解决方案)。一个标签可以是2^64空间中的任何标签,并且特定于一个1x3000数据。这里有什么建议吗? – user2413711

+0

@ user2413711(1)是的,你应该使用'kernel_w'和'kernel_h'来指定非矩形内核(见''caffe.proto'](https://github.com/BVLC/caffe/blob/master/src详情请参阅/caffe/proto/caffe.proto#L556)。 (2)您需要使用适当的损失层。对于二元标签,我认为你可以检查['“”SigmoidCrossEntropyLoss“'](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1SigmoidCrossEntropyLossLayer.html)层。 – Shai