Я пытаюсь обучить и протестировать простую сеть на сегментацию. Я создал файл LMDB, используя Windows CPP.
Но во время обучения в Windows CPP он застрял в
boost::shared_ptr<caffe::Solver<float> > solver(caffe::SolverRegistry<float>::CreateSolver(solver_param));
после отладки я обнаружил, что он застрял в бесконечном цикле блокировки очереди. поток выглядит следующим образом.
layers_ [layer_id] -> SetUp (bottom_vecs_ [layer_id],
top_vecs_ [layer_id]) -> DataLayerSetUp (внизу, вверху) —-> Datum&
datum = * (reader_.full (). peek ()) —-> Очередь блокировки
Он отображает эти журналы в исполняемом окне во время выполнения.
[layer_factory.hpp:77] Creating layer data;
[net.cpp:100] Creating Layer data;
[net.cpp:418] data -> data;
*********** mycaffe.cpp ***************
Caffe::set_mode(Caffe::GPU);
shared_ptr<Net<float> > net_;
net_.reset(new Net<float>(model_file, caffe::Phase::TRAIN));
Caffe::set_mode(Caffe::GPU);
caffe::SolverParameter solver_param;
caffe::ReadSolverParamsFromTextFileOrDie("mysolver.prototxt", &solver_param);
boost::shared_ptr<caffe::Solver<float> > solver(caffe::SolverRegistry<float>::CreateSolver(solver_param));
solver->Solve();
***************** mymodel.prototxt ********************
layer {
name: "data"type: "Data"top: "data"
include {
phase: TRAIN
}
data_param {
source: "data_lmdb"batch_size: 4
backend: LMDB
}
}
layer {
name: "label"type: "Data"top: "label"
include {
phase: TRAIN
}data_param {
source: "label_lmdb"batch_size: 4
backend: LMDB
}
}
layer {
name: "conv1"type: "Convolution"bottom: "data"top: "conv1"param {
lr_mult: 1.0
}
param {
lr_mult: 0.10000000149
}
convolution_param {
num_output: 32
pad: 1
kernel_size: 3
stride: 1
weight_filler {
type: "gaussian"std: 0.0010000000475
}
bias_filler {
type: "constant"value: 0.0
}
}
}
layer {
name: "relu1"type: "ReLU"bottom: "conv1"top: "conv1"}
layer {
name: "conv2"type: "Convolution"bottom: "conv1"top: "conv2"param {
lr_mult: 1.0
}
param {
lr_mult: 0.10000000149
}
convolution_param {
num_output: 1024
pad: 0
kernel_size: 16
stride: 16
weight_filler {
type: "gaussian"std: 0.0010000000475
}
bias_filler {
type: "constant"value: 0.0
}
}
}
layer {
name: "relu2"type: "ReLU"bottom: "conv2"top: "conv2"}
layer {
name: "upsample"type: "Deconvolution"bottom: "conv2"top: "upsample"param {
lr_mult: 1.0
}
convolution_param {
num_output: 1
pad: 0
kernel_size: 16
stride: 16
bias_filler {
type: "constant"value: 128.0
}
}
}
layer {
name: "lossL1"type: "SmoothL1Loss"bottom: "upsample"bottom: "label"top: "lossL1"loss_weight: 1.0
}
******************* mysolver.prototxt ************
test_initialization: false
base_lr: 0.01
display: 10
max_iter: 500000
lr_policy: "step"gamma: 0.1
momentum: 0.9
weight_decay: 0.0001
stepsize: 4069
snapshot: 10000
snapshot_prefix: "snapshot"solver_mode: GPU
net: "mymodel.prototxt"solver_type: SGD
Пожалуйста, помогите мне разобраться в ошибке. Спасибо.
Задача ещё не решена.
Других решений пока нет …