在 caffe 中添加一个 python 层非常简单(创建一个继承自 caffe.layer 的子类并添加四个基本方法,如此处和此处所述。但是,在caffe2 中添加一个自定义 python 层对我来说并不那么简单。有人可以请解释在caffe2中添加python层的过程?
问问题
405 次
1 回答
0
首先,您必须将新层实现为 Python 类,如示例中所示。在这种情况下,它只以相反的顺序输出输入张量:
class ReverseOrderOp(object):
def forward(self, inputs, outputs):
blob_out = outputs[0]
blob_out.reshape(inputs[0].shape)
blob_out.data[...] = inputs[0].data[::-1]
然后,您可以使用以下命令将新层添加到模型中model.net.Python
:
model = ModelHelper(name="test")
l = np.asarray([0,1,2,3])
workspace.FeedBlob('l', l.astype(np.float32))
model.net.Python(ReverseOrderOp().forward)(
['l'], ['out'], name='ReverseOrder'
)
workspace.RunNetOnce(model.net)
print(workspace.FetchBlob('out'))
输出应该是[ 3. 2. 1. 0.]
于 2019-04-02T11:54:27.967 回答