2017-06-12 67 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

它現在可以工作!但是在運行之後,在驗證過程中總是會爲所有測試圖像生成相同的輸出。 –

相關問題