machine-learning - software - mxnet
Desconocido bottom blob ''data''(capa ''conv1'', índice inferior 0) (1)
Intentando entrenar a LeNet en mi propio conjunto de datos. Genere un archivo HDF5 a partir de mi conjunto largo de datos vectoriales 1D y he creado la capa de datos HDF5 de la siguiente manera: denominé los blobs superiores como lo hice cuando genero mi HDF5.
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"
}
Pero cuando traté de entrenar, estoy teniendo el siguiente error de 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)
¿Qué hice mal?
Aclamaciones,
Su capa de datos genera dos "blobs": "label"
y "Inputdata"
. Su capa "conv1"
espera como entrada un "blob" llamado "data"
. Caffe no sabe que tu quisiste decir "Inputdata"
y "data"
para ser el mismo blob ...
Ahora, como ya guardó los archivos hdf5 con el nombre "Inputdata"
, no puede cambiar este nombre en la capa "HDF5Data"
, lo que puede hacer es cambiar "data"
a "Inputdata"
en la "parte inferior" de la capa "conv1"
.
PD,
Su capa de pérdida requiere dos " ip2
": ip2
y la label
que olvidó alimentar.