Python 使用caffe使用CSV数据训练Lenet

Python 使用caffe使用CSV数据训练Lenet,python,caffe,kaggle,Python,Caffe,Kaggle,对不起,我有一个关于使用caffe处理高清数据的问题?我尝试使用以下步骤在Kaggle mnist csv数据上运行一个示例 使用h5py将其转换为h5数据。(我使用caffe-example.py进行转换) 然后修改lenet\u train\u test\u协议并对其进行训练。我对这一步完全不知所措 我在这里做的唯一改变是 layer { name: "mnist" type: "HDF5Data" top: "data" top: "label" include {

对不起,我有一个关于使用caffe处理高清数据的问题?我尝试使用以下步骤在Kaggle mnist csv数据上运行一个示例

  • 使用
    h5py
    将其转换为h5数据。(我使用caffe-example.py进行转换)

  • 然后修改lenet\u train\u test\u协议并对其进行训练。我对这一步完全不知所措

  • 我在这里做的唯一改变是

    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\u train\u test\u协议以适应数据?或者还有其他一些文件我需要更改?错误日志是

    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
    
    enF0724 18:21:11.052737 79373 hdf5_数据_层。cpp:76]检查失败:!此->层参数具有转换参数,HDF5Data不转换数据。
    >***检查故障堆栈跟踪:***
    >@0x7fe8188bbdaa(未知)
    >@0x7fe8188bbce4(未知)
    >@0x7fe8188bb6e6(未知)
    >@0x7fe8188be687(未知)
    >@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列车()
    >@0x404a81主
    >@0x7fe817dcdec5(未知)
    >@0x40502d(未知)
    >@(无)(未知)中止(内核转储)ter代码
    
    我假设您有一个hdf5数据文件
    'data/mnist\u train\u h5.hd5'

  • 从收到的错误消息中可以看到,
    “HDF5Data”
    层不支持数据转换。具体来说,您不能按图层缩放数据。
    因此,您希望进行的任何转换都必须在创建
    'data/mnist\u train\u h5.hd5'
    期间自己应用它们

  • “HDF5Data”
    层不接受
    data\u param
    ,而是接受带有参数
    source
    hdf5\u data\u param
    指定hd5二进制文件列表。在您的情况下,您应该准备一个额外的文本文件
    “data/mnist\u train\u h5.txt”
    ,其中只有一行:

  • 数据/mnist_列_h5.hd5

    此文本文件将告诉caffe读取
    'data/mnist\u train\u 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
      }
    }
    

    谢谢你的回答!我有一个关于数据转换的问题。这是我的代码:[。请在这里查看他的第一段代码(太长,无法粘贴在这里)。我不确定除了那段代码之外,我还需要做什么额外的数据转换。非常感谢!你是说
    源代码:“mnist_train_h5.txt”
    而不是
    源代码:“data/mnist_train_h5.hd5”
    ?@mrglud谢谢你发现了这个bug!-刚刚纠正了它。