【问题标题】:Caffe: classifier with probabilistic output greater than 1Caffe:概率输出大于1的分类器
【发布时间】:2018-11-19 22:13:58
【问题描述】:

我正在尝试使用 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

【问题讨论】:

    标签: neural-network caffe conv-neural-network pycaffe convolutional-neural-network


    【解决方案1】:

    似乎您正在输出“ampl”层,这是一个全连接层,只有softmax会产生实际概率,因此您应该输出包含softmax操作的层(没有损失,只是softmax)。

    您也可以输出最后一层并手动应用 softmax。

    【讨论】:

    • 我应该添加另一个层作为“softmax”还是可以使用当前的损失层type="softmax"?
    • @NimaHatami 其实你有的不是损失层,它只是一个softmax,你可以直接用那个作为输出。
    • 我需要添加这个softmax来部署吗?另外,我需要添加一个损失层吗?如果是,原型或部署或两者兼而有之?谢谢
    • @NimaHatami 是的,不。我认为困惑来了,通常使用 SoftmaxWithLoss,它结合了 softmax 和交叉熵损失,但要在部署中实际使用模型,您需要使用没有损失的 softmax。
    • 所以如果我理解正确,我不需要任何部署或原型中的任何损失层。那么BP将如何计算损失?
    猜你喜欢
    • 2019-03-17
    • 1970-01-01
    • 1970-01-01
    • 2013-04-28
    • 1970-01-01
    • 2020-11-23
    • 2023-03-29
    • 1970-01-01
    • 2021-05-23
    相关资源
    最近更新 更多