Where is layer module defined in PyCaffe

2020-06-20 05:34发布

问题:

I am modifying a Caffe tutorial to implement a neural network, but I am struggling to identify where some of the pycaffe modules are location in order to see certain function definitions.

For example, the tutorial mentions:

import caffe
from caffe import layers a L, params as P
....
L.Convolution(bottom, kernel_size=ks, stride=stride, num_output=nout, pad=pad, group=group)
L.InnerProduct(bottom, num_output=nout)
L.ReLU(fc, in_place=True)
...

Where can I find these function definitions and where can I see what other types of layers are pre-defined? I see that layers and params are defined here but there's no mention of the types (e.g. layers.Convolution, etc).

The reason I am trying to figure this out is because there are other prototxt parameters left out of the pycaffe tutorials that I would like to be able to define from Python when generating the prototxts. These include, blob_lr and include{phase: TRAIN}.

回答1:

You can add the blob_lr and phase like this:

import caffe
from caffe import layers a L, params as P

ns = caffe.NetSpec()
ns.conv = L.Convolution(bottom, convolution_param={'kernel_size':ks,
                                                   'stride':stride,
                                                   'num_output':nout, 
                                                   'pad':pad, 
                                                   'group':group},
                                param=[{'lr_mult':1, 'decay_mult':1},
                                       {'lr_mult':2, 'decay_mult':0}],
                                include={'phase': caffe.TRAIN})

You can see some more examples in this answer.