我正在尝试使用python在cifar-10数据上运行Caffe。这是我的proto.txt的结尾(注意:我的部署文件没有丢失层!)
...
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"
}
但是当我查看输出概率时,它们不是[0 1]。 这也是我在测试阶段读取输出标签的方式:
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
这是前5个样本的输出:
-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
答案 0 :(得分:0)
似乎你输出的是“放大”层,它是一个完全连接的层,只有softmax会产生实际的概率,所以你应该输出包含softmax操作的层(没有丢失,只有softmax)。
您也可以输出最后一层并手动应用softmax。