使用caffe用CSV数据训练Lenet

use caffe to train Lenet with CSV data

请问,我有一个关于使用caffe 获取高清数据的问题?我尝试通过以下步骤 运行 关于 Kaggle mnist csv 数据的示例

  1. h5py转成h5数据。 (我是用caffe-example.py来转换的)

  2. 然后修改lenet_train_test_prototxt并训练它。我对这一步很茫然。

我在这里做的唯一改变是

layer {
  name: "mnist"
  type: "HDF5Data"
  top: "data"
  top: "label"
  include {
    phase: TRAIN
  }
  transform_param {
    scale: 0.00390625
  }
  data_param {
    source: "data/mnist_train_h5.txt"
    batch_size: 64
  }
}

如何更改 lenet_train_test_prototxt 以适应数据?或者我还需要更改其他一些文件?错误日志是

enF0724 18:21:11.052737 79373 hdf5_data_layer.cpp:76] Check failed: !this->layer_param_.has_transform_param() HDF5Data does not transform data.

> *** Check failure stack trace: ***
>     @     0x7fe8188bbdaa  (unknown)
>     @     0x7fe8188bbce4  (unknown)
>     @     0x7fe8188bb6e6  (unknown)
>     @     0x7fe8188be687  (unknown)
>     @     0x7fe818caec10  caffe::HDF5DataLayer<>::LayerSetUp()
>     @     0x7fe818c520a3  caffe::Net<>::Init()
>     @     0x7fe818c53e12  caffe::Net<>::Net()
>     @     0x7fe818c0ba20  caffe::Solver<>::InitTrainNet()
>     @     0x7fe818c0c9c3  caffe::Solver<>::Init()
>     @     0x7fe818c0cb96  caffe::Solver<>::Solver()
>     @           0x40c8f0  caffe::GetSolver<>()
>     @           0x406541  train()
>     @           0x404a81  main
>     @     0x7fe817dcdec5  (unknown)
>     @           0x40502d  (unknown)
>     @              (nil)  (unknown) Aborted (core dumped)ter code here

我假设你有一个 hdf5 数据文件 'data/mnist_train_h5.hd5'

  1. 从你得到的报错信息可以看出,"HDF5Data"层不支持数据转换。具体来说,不能按层缩放数据。
    因此,您希望进行的任何转换,都必须在 'data/mnist_train_h5.hd5'.

  2. 的创建过程中 您自己 应用它们
  3. "HDF5Data" 层不接受 data_param,而是 hdf5_data_param 带有参数 source 指定 list 的 hd5 二进制文件。在您的情况下,您应该准备一个额外的 text 文件 'data/mnist_train_h5.txt',其中只有一行:

data/mnist_train_h5.hd5

此文本文件将告诉 caffe 读取 'data/mnist_train_h5.hd5'

生成的图层应如下所示:

layer {
  name: "mnist"
  type: "HDF5Data"
  top: "data"
  top: "label"
  hdf5_data_param {
    source: "data/mnist_train_h5.txt"
    batch_size: 64
  }
  include {
    phase: TRAIN
  }
}