【问题标题】:Prepare data for multioutput regression in Caffe在 Caffe 中为多输出回归准备数据
【发布时间】:2016-02-10 14:57:03
【问题描述】:

我需要编写 python 脚本来准备数据以将其提供给 caffe 求解器。 我的输入是图像(X)和整数向量(Y)(对于每个X,我的多输出回归问题不是单个Y),我尝试根据我的任务修改Lenet。

Here 我发现 hdf5 是一个不错的选择——它可以从 python 中使用,但缺点是我们不能即时进行数据增强,并且输入图像必须是 float32/float64。

另外here我找到了一个例子,但是例子中只有一维数据,所以我很好奇图像应该有什么形状?

还有here 我找到了关于EUCLIDEAN_LOSSHINGE_LOSS 层的信息。多输出回归应该使用什么层类型?

【问题讨论】:

  • 请在每个帖子中问一个单个问题:一个关于数据的问题,也许还有一个关于使用什么损失的新问题。
  • 顺便说一句,使用枚举(例如,EUCLIDEAN_LOSSHINGE_LOSS)作为层类型表示旧的 caffe 版本。较新的版本使用字符串:type: "EuclideanLoss"type: "HIngeLoss"。确保您的 caffe 分支是最新的。
  • 你的python-ic怎么样?你可以写一个type: "Python" 层作为输入层来做你想要的增强。

标签: python hdf5 deep-learning caffe


【解决方案1】:

Caffe 期望其输入图像为 4-D B-by-C-by-H-by-W

  • B是“batch size”,你同时处理的图片数量
  • C是通道数,BGR一般是3个(大部分网络符合opencv BGR格式,而不是RGB。去图……)
  • HW 分别是图片的高度和宽度。

因此,您需要一个python脚本来读取图像(您可以使用caffe.io.load_image)然后转置、调整大小、重新缩放并最终将它们堆叠成B-by-C-by-H-by- W float32 类型的 numpy 数组。
您可以在 python 中进行扩充并将所有数据保存到hdf5 文件中。

【讨论】:

  • 我不明白,我需要手动将数据批量输入到 caffe 或者需要将其保存在 hdf5 中为N-C-H-W where @ 987654340@ 是样本/示例的数量。
  • @mrgloom 数据在 HDF5 文件中应该是 4D。每个样本的大小为C-H-W,并且您将其中的n1 存储在文件中。训练时,caffe 根据您定义的batch_size,一次只读取其中的B。因此,您可以在每个HDF5 文件中存储许多样本(远不止一个批次)。但是,其余尺寸(CHW)应始终保持固定。
猜你喜欢
  • 2016-07-05
  • 1970-01-01
  • 1970-01-01
  • 2016-11-16
  • 2017-02-04
  • 2017-07-18
  • 2016-09-27
  • 2015-10-09
  • 2017-11-02
相关资源
最近更新 更多