代码之家  ›  专栏  ›  技术社区  ›  Nima

caffe:概率输出大于1的分类器

  •  0
  • Nima  · 技术社区  · 7 年前

    我试图使用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"
    }
    

    但当我看我的输出概率时,它们不是[01]。 这也是我在测试阶段读取输出标签的方式:

    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
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Dr. Snoopy    7 年前

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

    您还可以输出最后一层并手动应用SoftMax。