2017-06-12 71 views
-1

我想设计一个网络,需要一个IMAGE(224x224x3)和3个参数(X,Y,R)学习关系。Caffe:检查失败:形状[i]> = 0(-1与0)错误

我的输入是一个HDF5数据集。我收到以下错误:

“创建图层CONV1 I0612 17:17:38.315083 9991 net.cpp:406] CONV1 < - 数据 I0612 17:17:38.315107 9991 net.cpp:380] CONV1 - > conv1 F0612 17:17:38.352540 9991 blob.cpp:32]检查失败:形状[i]> = 0(-1与0)“

我已经创建了一个输入到caffe的HDF5数据集。我create_dataset代码如下: -

import h5py, os 
import caffe 
import numpy as np 

SIZE = 224 
with open('val.txt', 'r') as T : 
    lines = T.readlines() 


count_files = 0 
split_after = 199 
count = -1 

# If you do not have enough memory split data into 
# multiple batches and generate multiple separate h5 files 
data = np.zeros((split_after,SIZE, SIZE,3), dtype='f4') 
label = np.zeros((split_after,3, 1), dtype='f4') 

for i,l in enumerate(lines): 
    count += 1 
    sp = l.split(' ') 
    img = caffe.io.load_image(sp[0]) 
    data[count] = img 
    label[count][0] = float(sp[1]) 
    label[count][1] = float(sp[2]) 
    label[count][2] = float(sp[3]) 
    #print y1[count] 
    if (count+1) == split_after: 
    with h5py.File('val_' + str(count_files) + '.h5','w') as H: 
     H.create_dataset('data', data=data) # note the name X given to the dataset! 
     H.create_dataset('label', data=label) 
     data = np.zeros((split_after, SIZE, SIZE, 3), dtype='f4') 
     label = np.zeros((split_after,3, 1), dtype='f4') 
    with open('val1.txt','a') as L: 
     L.write('val_' + str(count_files) + '.h5') # list all h5 files you are going to use 
    count_files += 1 
    count = 0 

我创建一个数据(224,224,3)领域,并在HDF5数据集的标签(3,1)。

现在我的朱古力模型如下:

name: "CaffeNet" 
layer { 
    name: "data" 
    type: "HDF5Data" 
    top: "data" 
    top: "label" 
    include { 
    phase: TRAIN 
    } 
    hdf5_data_param { 
    source: "/home/arijit/Downloads/caffe/Circle/test1.txt" 
    batch_size: 256 
    shuffle: true 
    } 
} 
layer { 
    name: "data" 
    type: "HDF5Data" 
    top: "data" 
    top: "label" 
    include { 
    phase: TEST 
    } 
    hdf5_data_param { 
    source: "/home/arijit/Downloads/caffe/Circle/val1.txt" 
    batch_size: 16 
    } 
} 
layer { 
    name: "conv1" 
    type: "Convolution" 
    bottom: "data" 
    top: "conv1" 
    param { 
    lr_mult: 1 
    decay_mult: 1 
    } 
    param { 
    lr_mult: 2 
    decay_mult: 0 
    } 
    convolution_param { 
    num_output: 96 
    kernel_size: 11 
    stride: 4 
    weight_filler { 
     type: "gaussian" 
     std: 0.01 
    } 
    bias_filler { 
     type: "constant" 
     value: 0 
    } 
    } 
} 
layer { 
    name: "relu1" 
    type: "ReLU" 
    bottom: "conv1" 
    top: "conv1" 
} 
layer { 
    name: "pool1" 
    type: "Pooling" 
    bottom: "conv1" 
    top: "pool1" 
    pooling_param { 
    pool: MAX 
    kernel_size: 3 
    stride: 2 
    } 
} 
layer { 
    name: "norm1" 
    type: "LRN" 
    bottom: "pool1" 
    top: "norm1" 
    lrn_param { 
    local_size: 5 
    alpha: 0.0001 
    beta: 0.75 
    } 
} 
layer { 
    name: "conv2" 
    type: "Convolution" 
    bottom: "norm1" 
    top: "conv2" 
    param { 
    lr_mult: 1 
    decay_mult: 1 
    } 
    param { 
    lr_mult: 2 
    decay_mult: 0 
    } 
    convolution_param { 
    num_output: 256 
    pad: 2 
    kernel_size: 5 
    group: 2 
    weight_filler { 
     type: "gaussian" 
     std: 0.01 
    } 
    bias_filler { 
     type: "constant" 
     value: 1 
    } 
    } 
} 
layer { 
    name: "relu2" 
    type: "ReLU" 
    bottom: "conv2" 
    top: "conv2" 
} 
layer { 
    name: "pool2" 
    type: "Pooling" 
    bottom: "conv2" 
    top: "pool2" 
    pooling_param { 
    pool: MAX 
    kernel_size: 3 
    stride: 2 
    } 
} 
layer { 
    name: "norm2" 
    type: "LRN" 
    bottom: "pool2" 
    top: "norm2" 
    lrn_param { 
    local_size: 5 
    alpha: 0.0001 
    beta: 0.75 
    } 
} 
layer { 
    name: "conv3" 
    type: "Convolution" 
    bottom: "norm2" 
    top: "conv3" 
    param { 
    lr_mult: 1 
    decay_mult: 1 
    } 
    param { 
    lr_mult: 2 
    decay_mult: 0 
    } 
    convolution_param { 
    num_output: 384 
    pad: 1 
    kernel_size: 3 
    weight_filler { 
     type: "gaussian" 
     std: 0.01 
    } 
    bias_filler { 
     type: "constant" 
     value: 0 
    } 
    } 
} 
layer { 
    name: "relu3" 
    type: "ReLU" 
    bottom: "conv3" 
    top: "conv3" 
} 
layer { 
    name: "conv4" 
    type: "Convolution" 
    bottom: "conv3" 
    top: "conv4" 
    param { 
    lr_mult: 1 
    decay_mult: 1 
    } 
    param { 
    lr_mult: 2 
    decay_mult: 0 
    } 
    convolution_param { 
    num_output: 384 
    pad: 1 
    kernel_size: 3 
    group: 2 
    weight_filler { 
     type: "gaussian" 
     std: 0.01 
    } 
    bias_filler { 
     type: "constant" 
     value: 1 
    } 
    } 
} 
layer { 
    name: "relu4" 
    type: "ReLU" 
    bottom: "conv4" 
    top: "conv4" 
} 
layer { 
    name: "conv5" 
    type: "Convolution" 
    bottom: "conv4" 
    top: "conv5" 
    param { 
    lr_mult: 1 
    decay_mult: 1 
    } 
    param { 
    lr_mult: 2 
    decay_mult: 0 
    } 
    convolution_param { 
    num_output: 256 
    pad: 1 
    kernel_size: 3 
    group: 2 
    weight_filler { 
     type: "gaussian" 
     std: 0.01 
    } 
    bias_filler { 
     type: "constant" 
     value: 1 
    } 
    } 
} 
layer { 
    name: "relu5" 
    type: "ReLU" 
    bottom: "conv5" 
    top: "conv5" 
} 
layer { 
    name: "pool5" 
    type: "Pooling" 
    bottom: "conv5" 
    top: "pool5" 
    pooling_param { 
    pool: MAX 
    kernel_size: 3 
    stride: 2 
    } 
} 
layer { 
    name: "fc6" 
    type: "InnerProduct" 
    bottom: "pool5" 
    top: "fc6" 
    param { 
    lr_mult: 1 
    decay_mult: 1 
    } 
    param { 
    lr_mult: 2 
    decay_mult: 0 
    } 
    inner_product_param { 
    num_output: 4096 
    weight_filler { 
     type: "gaussian" 
     std: 0.005 
    } 
    bias_filler { 
     type: "constant" 
     value: 1 
    } 
    } 
} 
layer { 
    name: "relu6" 
    type: "ReLU" 
    bottom: "fc6" 
    top: "fc6" 
} 
layer { 
    name: "drop6" 
    type: "Dropout" 
    bottom: "fc6" 
    top: "fc6" 
    dropout_param { 
    dropout_ratio: 0.5 
    } 
} 
layer { 
    name: "fc7" 
    type: "InnerProduct" 
    bottom: "fc6" 
    top: "fc7" 
    param { 
    lr_mult: 1 
    decay_mult: 1 
    } 
    param { 
    lr_mult: 2 
    decay_mult: 0 
    } 
    inner_product_param { 
    num_output: 4096 
    weight_filler { 
     type: "gaussian" 
     std: 0.005 
    } 
    bias_filler { 
     type: "constant" 
     value: 1 
    } 
    } 
} 
layer { 
    name: "relu7" 
    type: "ReLU" 
    bottom: "fc7" 
    top: "fc7" 
} 
layer { 
    name: "drop7" 
    type: "Dropout" 
    bottom: "fc7" 
    top: "fc7" 
    dropout_param { 
    dropout_ratio: 0.5 
    } 
} 
layer { 
    name: "fc8ft" 
    type: "InnerProduct" 
    bottom: "fc7" 
    top: "fc8ft" 
    param { 
    lr_mult: 1 
    decay_mult: 1 
    } 
    param { 
    lr_mult: 2 
    decay_mult: 0 
    } 
    inner_product_param { 
    num_output: 3 
    weight_filler { 
     type: "gaussian" 
     std: 0.01 
    } 
    bias_filler { 
     type: "constant" 
     value: 0 
    } 
    } 
} 

layer { 
    name: "loss" 
    type: "EuclideanLoss" 
    bottom: "fc8ft" 
    bottom: "label" 
    top: "loss" 
} 

详细的错误如下: -

“创建图层CONV1 I0612 17:17:38.315083 9991 net.cpp:406] CONV1 < - data I0612 17:17:38.315107 9991 net.cpp:380] conv1 - > conv1 F0612 17:17:38.352540 9991 blob.cpp:32] Check failed:shape [i]> = 0(-1 vs. 0)“

任何人都可以帮忙吗?

回答

0

你得到了你的输入图像的形状向后:。 代替H x W x 3,caffe期望它是3 x W x H
请参阅this answer了解有关在hdf5文件中安排caffe数组的更多详细信息。

PS,
您不需要label阵列中的Singleton维度。

+0

当我试图改变无17 数据= np.zeros((split_after,3,尺寸,尺寸),D型细胞=“F4”) 我得到一个错误 无法从广播形状输入阵列线( 227,227,3)成形(3,227,227) –

+0

您需要转置输入 – Shai

+0

它现在可以工作!但是在运行之后,在验证过程中总是会为所有测试图像生成相同的输出。 –

相关问题