2016-10-06 10 views
0

自分のデータセットでLeNetを学習しようとしています。私は長い1D vectordataセットからHDF5ファイルを生成し、次のようにHDF5データレイヤーを作成しました。私はHDF5を生成するときと同じようにトップブロブを指定しました。不明なボトムブロ 'データ'(レイヤー 'conv1'、ボトムインデックス0)

name: "Test_net" 
layer { 
    name: "data" 
    type: "HDF5Data" 
    top: "Inputdata" 
    top: "label" 
    hdf5_data_param { 
    source:"~/*_hdf5_train.txt" 
    batch_size: 32 
    } 
    include{phase: TRAIN} 
} 
layer { 
    name: "data2" 
    type: "HDF5Data" 
    top: "Inputdata" 
    top: "label" 
    hdf5_data_param { 
    source:"~/*_hdf5_test.txt" 
    batch_size: 32 
    } 
    include{phase: TEST} 
} 
layer { 
    name: "conv1" 
    type: "convolution" 
    bottom: "data" 
    top: "conv1" 
    param {lr_mult:1} 
    param {lr_mult:2} 
    convolution_param{ 
    num_output: 20 
    kernel_h: 1 
    kernel_w: 5 
    stride_h: 1 
    stride_w: 1 
    weight_filler { 
     type: "xavier"  
    } 
    bias_filler { 
     type: "xavier" 
    } 
    } 
} 
layer { 
    name: "pool1" 
    type: "pooling" 
    bottom: "conv1" 
    top: "pool1" 
    pooling_param{ 
    pool: MAX 
    kernel_h: 1 
    kernel_w: 2 
    stride_h: 1 
    stride_w: 2 
    } 
} 
# more layers here... 
layer{ 
    name: "loss" 
    type: "SigmoidCrossEntropyLoss" 
    bottom: "ip2" 
    bottom: "label" 
    top: "loss" 
} 

しかし、訓練を試みると、insert_split.cppから次のエラーが発生しています。

insert_splits.cpp:29] Unknown bottom blob 'data' (layer 'conv1', bottom  index 0) 
    *** Check failure stack trace: *** 
    @  0x7f19d7e735cd google::LogMessage::Fail() 
    @  0x7f19d7e75433 google::LogMessage::SendToLog() 
    @  0x7f19d7e7315b google::LogMessage::Flush() 
    @  0x7f19d7e75e1e google::LogMessageFatal::~LogMessageFatal() 
    @  0x7f19d82684dc caffe::InsertSplits() 
    @  0x7f19d8230d5e caffe::Net<>::Init() 
    @  0x7f19d8233f21 caffe::Net<>::Net() 
    @  0x7f19d829c68a caffe::Solver<>::InitTrainNet() 
    @  0x7f19d829d9f7 caffe::Solver<>::Init() 
    @  0x7f19d829dd9a caffe::Solver<>::Solver() 
    @  0x7f19d8211683 caffe::Creator_SGDSolver<>() 
    @   0x40a6c9 train() 
    @   0x4071c0 main 
    @  0x7f19d6dc8830 __libc_start_main 
    @   0x4079e9 _start 
    @    (nil) (unknown) 
Aborted (core dumped) 

私が間違って何をしたのですか?

乾杯、

+0

[Caffe Unknown bottom blob]の複製が可能です。(http://stackoverflow.com/questions/38730972/caffe-unknown-bottom-blob) – Shai

答えて

1

あなたのデータ層出力2 "塊":"label""Inputdata""conv1"レイヤーは、入力として、"data"という名前の "ブロブ"を想定しています。すでに"Inputdata"名前のHDF5ファイルを保存したので、カフェは、あなたが今...
を同じブロブする"Inputdata""data"を意味することを知っていない、あなたは"HDF5Data"層にこの名前を変更することはできません、何を行うことができますすることは"data"を変更で"conv1"層の「底部」の"Inputdata"へと移動する。あなたが養うのを忘れlabelip2と:あなたの損失層は、2つの "底" のを必要と


PS、。

+0

あなたの助けをお待ちしております。実際に私のネットワークがトレーニングを開始するかどうかを確認するために、テストをしなくてもトレーニングをしようとしていました。そのために#test_iterと#test_intervalがコメントされました。今では、テストの有無にかかわらずトレーニングを試しました(テストセットとしてのトレーニングセットのコピーですが、私はそうは思わない)と私は同じ問題を抱えています。私はまた私の損失層にラベルを追加しました、編集されたprototxtを見てください。 – user2413711

+1

@ user2413711私の編集をご覧ください。 – Shai

+0

ありがとうございました。 hdf5_data_layer.cpp:88]ソースファイルを開くことができませんでした:〜/ * _ hdf5_train.txtエラー。 – user2413711

関連する問題