2016-07-25 38 views
0

我正在使用CNN进行传输学习。我希望在网络与我的数据训练,但我做了一个向前传球时,这个错误:使用matcaffe运行正向传递时出错

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 }} 

在MATLAB:

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'}); 

我真的不明白我必须把在前进(参数)参数。那个时候有人能帮助我吗?

我也注意到在我的Unet输入单元的维度是0x1 ... 我想这也是它不工作的原因。

有人有关于如何解决这个问题的想法吗?

回答

0

我找到了解决我的问题:对于已经为0x1的尺寸输入单元格

我用deploy.prototxt文件,而不是,我用在train.prototxt文件开始。在这个文件中定义了输入的尺寸。

我用这个作为前锋的函数的参数:

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

它是数据(在我的情况的图像)必须把作为输入本身。