Q:

Caffe: classifier with probabilistic output greater than 1

I am trying to run Caffe on cifar-10 data using python. This is the end of my proto.txt (note: my deploy file does not have loss layer!)
...
layer {
  name: "ampl"
  type: "InnerProduct"
  bottom: "maxPool1"
  top: "ampl"
  param {
    lr_mult: 1
    decay_mult: 1
  }
  inner_product_param {
    num_output: 10
    bias_term: false
    weight_filler {
      type: "gaussian"
      std: 0.01
    }
    bias_filler {
      type: "constant"
      value: 0.2
    }
  }
}
layer {
  name: "loss"
  type: "Softmax"
  bottom: "ampl"
  bottom: "label"
  top: "loss"
}

But when I look at my output probabilities, they are not [0 1].
This is also how I read my output label in test phase:
net = caffe.Net(modelFile, weightsFile, caffe.TEST)

# estimate amplitude
shape = (data.shape[0], net.blobs['ampl'].data.shape[1])
dtype = net.blobs['ampl'].data.dtype

aE = np.ndarray(shape,dtype)

for i in range(data.shape[0]):
    net.blobs['data'].data[...] = data[i].reshape(net.blobs['data'].data.shape)
    net.forward()
    aE[i,:] = net.blobs['ampl'].data

This is the output for first 5 samples:
   -0.8576         0         0         0   -1.2853
   -1.1855         0         0         0   -0.3572
   -2.2088         0         0         0   -2.6844
   -1.2650         0         0         0   -3.8973
   -1.2844         0         0         0   -3.8011
   -1.5247         0         0         0   -3.9778
   -1.6097         0         0         0   -3.7351
   -1.0909         0         0         0   -3.6270
   -1.3660         0         0         0   -0.4569
   -1.0892         0         0         0   -0.2500

A:

Seems you are outputting the "ampl" layer, which is a fully connected layer, only softmax will produce actual probabilities so you should output the layer that contains the softmax operation (without the loss, just softmax).
You could also output the last layer and apply softmax manually.

