caffe教學 - caffe中的“ Python”層是什麼?



caffe python (2)

Caffe具有圖層類型 "Python"

例如,此圖層類型可以用作 損失圖層
在其他情況下,它用作 輸入層 。

這是什麼層類型?
該層如何使用?

https://ffff65535.com


Python層與需要編譯的C ++層不同,它們的參數需要添加到原型文件中,最後您需要在layer_factory中註冊該層。 如果您編寫python層,則無需擔心這些事情。 層參數可以定義為字符串,在python中可以作為字符串訪問。 例如:如果在圖層中有參數,並且在prototxt文件中定義了param_str,則可以使用“ self.param_str”來訪問它。 與其他層一樣,您需要使用以下功能定義一個類:

  • 設置-使用從圖層變量獲得的參數初始化圖層
  • 前進-圖層的輸入和輸出
  • 向後-給定下一層的預測和漸變,計算上一層的漸變
  • 重塑-根據需要重塑斑點

Prototxt示例:

layer {
  name: 'rpn-data'
  type: 'Python'
  bottom: 'rpn_cls_score'
  bottom: 'gt_boxes'
  bottom: 'im_info'
  bottom: 'data'
  top: 'rpn_labels'
  top: 'rpn_bbox_targets'
  top: 'rpn_bbox_inside_weights'
  top: 'rpn_bbox_outside_weights'
  python_param {
    module: 'rpn.anchor_target_layer'
    layer: 'AnchorTargetLayer'
    param_str: "'feat_stride': 16"
  }
}

在這裡,該層的名稱是rpn-data,底部和頂部分別是該層的輸入和輸出詳細信息。 python_param定義Python層的參數是什麼。 “模塊”指定圖層的文件名是什麼。 如果名為“ anchor_target_layer.py”的文件位於名為“ rpn”的文件夾內,則參數為“ rpn.anchor_target_layer”。 “ layer”參數是您的類的名稱,在這種情況下,它是“ AnchorTargetLayer”。 “ param_str”是圖層的參數,其中包含鍵“ feat_stride”的值16。

與C ++ / CUDA層不同,Python層目前無法在caffe的多GPU設置中工作,因此使用它們是不利的。


很簡單,這是 在其中提供實現代碼的層,而不是使用一種預定義的類型-這些都由高效的功能提供支持。

如果要定義自定義損失函數,請繼續:自己編寫,然後使用 Python 類型創建圖層。 如果您有非標準的輸入需求,也許需要一些特定於數據的預處理,那就沒問題:自己編寫,然後使用 Python 類型創建圖層。





pycaffe