1

我正在使用CustomOpMXNet 中的类来创建一个新的转换层。该层具有该层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)

4

1 回答 1

1

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

这是如何做到这一点的示例。有 2 个自定义参数传递给init:pos_grad_scale 和 neg_grad_scale,它们在 CustomOp 和 CustomOpProps 中都被接受。

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

于 2018-03-07T18:29:44.733 回答