将其他构造函数参数传递给MXNet中的自定义图层

时间:2016-11-11 01:05:57

标签: python deep-learning mxnet

我在MXNet中使用CustomOp类来创建新的转换层。该层具有output_dimensionality作为该层的超参数。这个维度不能从数据中自动推断,但需要由构建网络图的调用者选择,因此它应该是新符号的构造函数参数,如

net = mx.symbol.Custom(data=data, op_type='mycustomop', output_dimensionality=1024)

将由__init__子类的CustomOp构造函数使用。但是当我尝试这个时,我得到了:

Traceback (most recent call last): File "_ctypes/callbacks.c", line 314, in 'calling callback function' File "python/mxnet/operator.py", line 602, in creator op_prop = prop_cls(**kwargs) TypeError: __init__() got an unexpected keyword argument 'output_dimensionality' Segmentation fault (core dumped)

1 个答案:

答案 0 :(得分:1)

这不应该是一个问题,但您需要在CustomOp类和CustomOpProps类中指定您的参数。

这是example how to do that。有两个自定义参数传递给 init :pos_grad_scale和neg_grad_scale,它们在CustomOp和CustomOpProps中都被接受。

另请注意,通过float()函数进行了转换。这样做是因为像这样的参数总是作为字符串传递(即使它是一个数组),所以你需要将你的整数从字符串转换回来。