Ошибка запуска прямого прохода с помощью matcaffe

Я занимаюсь трансферным обучением с помощью CNN. Я хочу обучить сеть с помощью своих данных, но я получил эту ошибку при прямом проходе:

Error using CHECK (line 4)
input data cell length must match input blob number

Error in caffe.Net/forward (line 92)
  CHECK(length(input_data) == length(self.inputs), ...

Error in main (line 79)
results= Unet.forward({data});

Чтобы не торопиться и устранять ошибки шаг за шагом, у меня пока есть только слой данных в моей сети. Это мой файл train.prototxt:

name: 'my_phseg_v5-train'

force_backward: true

layer {top: 'image' top:'anno'   name: 'loaddata'    type: 'HDF5Data'   hdf5_data_param { source: '/home/alexandra/Documents/my-u-net/my_data.txt' batch_size: 1} include: { phase: TRAIN }}

В матлабе:

model = '/home/alexandra/Documents/my-u-net/my_phseg_v5-train.prototxt';
weights = '/home/alexandra/Documents/my-u-net/my_phseg_v5.caffemodel';

%defining the net: 
Unet = caffe.Net(model, weights, 'train'); % create net and load weights

results= Unet.forward({'image'});

Я действительно не понимаю, что я должен указать в качестве аргумента в forward(argument). Может ли кто-нибудь помочь мне в этом вопросе?

Я также заметил, что в моем Unet размер входной ячейки был 0x1 ... Я думаю, это также причина, по которой он не работает.

Есть ли у кого-нибудь идеи о том, как решить эту проблему?


person Alex_AMC    schedule 25.07.2016    source источник


Ответы (1)


Я нашел решение своей проблемы:

для входной ячейки размером 0x1:

Я использовал файл deploy.prototxt вместо файла train.prototxt, который использовал вначале. В этом файле определяется размер ввода.

Я использовал это как аргумент функции forward :

output = Unet.blobs('image').get_data();
results= Unet.forward({output});

Это сами данные (в моем случае изображения), которые должны быть введены в качестве входных данных.

person Alex_AMC    schedule 25.07.2016