尝试在我自己的数据集上训练LeNet。我从我的长1D vectordata集生成了HDF5文件并创建了HDF5数据层,如下所示:我将顶部blob命名为与生成HDF5时相同。
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)
发出了以下错误。
def f(lst=False): return True if lst else False f() #False [f(True) for _ in range(3)] # [True True True]
我做错了什么?
干杯,
答案 0 :(得分:1)
您的数据层输出两个&#34; blob&#34;:"label"
和 "Inputdata"
。您的"conv1"
图层需要输入&#34; blob&#34;名为 "data"
。 Caffe不知道你的意思是"Inputdata"
和"data"
是同一个blob ...
现在,由于您已使用"Inputdata"
名称保存了hdf5文件,因此无法在"HDF5Data"
图层中更改此名称,您可以做的是将"data"
更改为"Inputdata"
&#34;底部&#34; "conv1"
图层。
PS,
您的损失图层需要两个&#34;底部&#34; s:ip2
和label
您忘了提供。