Caffe: how to get the phase of a Python layer?

前端 未结 2 766
花落未央
花落未央 2020-12-16 19:42

I created a \"Python\" layer \"myLayer\" in caffe, and use it in the net train_val.prototxt I insert the layer like this:



        
2条回答
  •  太阳男子
    2020-12-16 20:13

    As pointed out by galloguille, caffe is now exposing phase to the python layer class. This new feature makes this answer a bit redundant. Still it is useful to know about the param_str in caffe python layer for passing other parameters to the layer.

    Original answer:

    AFAIK there is no trivial way of getting the phase. However, one can pass arbitrary parameters from the net prototxt to python. This can be done using the param_str parameters of the python_param.
    Here's how it's done:

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

    In python, you get param_str in the layer's setup function:

    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...
    

提交回复
热议问题