我在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)
答案 0 :(得分:1)
这不应该是一个问题,但您需要在CustomOp类和CustomOpProps类中指定您的参数。
这是example how to do that。有两个自定义参数传递给 init :pos_grad_scale和neg_grad_scale,它们在CustomOp和CustomOpProps中都被接受。
另请注意,通过float()
函数进行了转换。这样做是因为像这样的参数总是作为字符串传递(即使它是一个数组),所以你需要将你的整数从字符串转换回来。