10

"Python"私はカフェでレイヤーを作成し、"myLayer"それをネットで使用して、次のtrain_val.prototxtようにレイヤーを挿入します。

layer {
  name: "my_py_layer"
  type: "Python"
  bottom: "in"
  top: "out"
  python_param {
    module: "my_module_name"
    layer: "myLayer"
  }
  include { phase: TRAIN } # THIS IS THE TRICKY PART!
}

今、私のレイヤーTRAINはネットの ing フェーズにのみ参加してい
ますが、私のレイヤーの機能でそれをどのように知ることができsetupますか??

class myLayer(caffe.Layer):
  def setup(self, bottom, top):
     # I want to know here what is the phase?!!
  ...

PS、
この質問を「Caffe Users」Google グループにも投稿しました。何かありましたら更新します。

4

2 に答える 2

7

galloguilleが指摘したように、caffe は現在phase、python レイヤー クラスに公開されています。この新しい機能により、この回答は少し冗長になります。param_strそれでも、レイヤーに他のパラメーターを渡すために in caffe python レイヤーについて知っておくと便利です。

元の答え:

私の知る限り、位相を取得する簡単な方法はありません。ただし、net prototxt から python に任意のパラメーターを渡すことはできます。これは、 のparam_strパラメータを使用して実行できますpython_param
方法は次のとおりです。

layer {
  type: "Python"
  ...
  python_param {
    ...
    param_str: '{"phase":"TRAIN","numeric_arg":5}' # passing params as a STRING

Python ではparam_str、レイヤーのsetup関数を取得します。

import caffe, json
class myLayer(caffe.Layer):
  def setup(self, bottom, top):
    param = json.loads( self.param_str ) # use JSON to convert string to dict
    self.phase = param['phase']
    self.other_param = int( param['numeric_arg'] ) # I might want to use this as well...
于 2016-01-04T10:13:44.107 に答える