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...
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…