簡體   English   中英

如何獲得Caffe模型的概率

[英]How to get probabilties in caffe model

我正在使用Squeezenet,最后幾層看起來像這樣,我不太確定到底要為我進行哪些更改才能利用概率,

layer {
  name: "loss"
  type: "SoftmaxWithLoss"
  bottom: "pool10"
  bottom: "label"
  top: "loss"
  #include {
  #  phase: TRAIN
  #}
}
layer {
  name: "accuracy"
  type: "Accuracy"
  bottom: "pool10"
  bottom: "label"
  top: "accuracy"
  #include {
  #  phase: TEST
  #}
}
layer {
  name: "accuracy_top5"
  type: "Accuracy"
  bottom: "pool10"
  bottom: "label"
  top: "accuracy_top5"
  #include {
  #  phase: TEST
  #}
  accuracy_param {
    top_k: 5
  }
} 

我如何獲得概率而不是二進制輸出? 提前致謝。

在python中,您可以執行以下形式的操作:

    caffe.set_mode_gpu()    
    net = caffe.Net('path/to/deploy.prototxt', 'path/to/mode.caffemodel',caffe.TEST)

    for image in images:

        im = np.array(caffe.io.load_image(image))
        im = np.array(im,dtype=np.float32)
        im = im.transpose(2,0,1)
        net.blobs['data'].reshape(1,*im.shape)
        net.blobs['data'].data[...] = im
        net.forward()
        print(net.blobs['prob'].data)

為了更深入地了解caffe網絡手術的代碼段和其他有用功能,我建議使用此鏈接

您缺少的是一個"Softmax"層,該層將您的預測“轉換”為每個類別的概率

layer {
  name: "prob"
  type: "Softmax"
  bottom: "pool10"
  top: "prob"
}

請注意,您的損失層"SoftmaxWithLoss"在內部進行了非常相同的概率計算(理論上,您可能將這些概率作為損失層的第二層,但出於某種原因,我從未設法使其起作用。PR#5828假設使其正常工作)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM