title: Caffe: Check failed: shape[i] >= 0 (-1 vs. 0) error
body: <p>I am trying to design a network that takes an IMAGE (224x224x3) and 3 parameters (X,Y,R) learns the relation. </p>
  
  <p>My input is an HDF5 dataset. I am getting the following error:</p>
  
  <p>"Creating Layer conv1
  I0612 17:17:38.315083  9991 net.cpp:406] conv1 &lt;- 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) "</p>
  
  <p>I have created an HDF5 dataset for input to caffe. My create_dataset code is as follows:-</p>
  
  <pre><code>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
  </code></pre>
  
  <p>I am creating a data (224,224,3) field and a label (3,1) in the HDF5 dataset.</p>
  
  <p>Now my caffe model is as follows:</p>
  
  <pre><code>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"
  }
  </code></pre>
  
  <p>The detailed error is as follows:-</p>
  
  <p>"Creating Layer conv1
  I0612 17:17:38.315083  9991 net.cpp:406] conv1 &lt;- 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) "</p>
  
  <p>Can anyone help?</p>