【问题标题】:Feeding long 1D vector data, 1D vector label to Caffe将长的一维向量数据、一维向量标签馈送到 Caffe
【发布时间】:2017-02-13 07:54:46
【问题描述】:

新手在这里喝咖啡。
我正在尝试在我自己的数据集上复制 LeNet。我的训练数据是一维数据,可以表示为 1x3000 向量。对于每个 1x3000 向量,我都有一个标签,它是 1x64 维二进制向量的另一个 1D 向量。我有 10 万个这样的(数据、标签)数据。我很困惑如何将其提供给 Caffe。所有的例子都是尺寸为NxN的图像。

知道如何对这些数据进行每次处理以提供给 Caffe 吗?

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

感谢任何建议。

【问题讨论】:

标签: machine-learning neural-network deep-learning caffe multilabel-classification


【解决方案1】:

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

【讨论】:

  • 感谢 Shai 的建议。我有几个后续问题。 1. 那么,在那种情况下,我所有的卷积层和池化层的内核也都是 1xN 维度的,对吧? caffe也支持吗? 2. 我的“标签”真的很长,所以我有点担心以后会不会造成不好的结果。对于一个 1x3000 数据,我有 64 个(可能增加到 128 个)二进制向量标签。这不像数据属于 64 个不同的类别(因为我已经看到了一些针对多标签的建议解决方案)。一个标签可以是 2^64 空间中的任何东西,它特定于一个 1x3000 数据。这里有什么建议吗?
  • @user2413711 (1) 是的,您应该使用kernel_wkernel_h 来指定非矩形内核(详见caffe.proto)。 (2) 需要使用合适的损失层。对于二进制标签,我想您可以检查"SigmoidCrossEntropyLoss" 层。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-15
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-09
  • 1970-01-01
相关资源
最近更新 更多