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

Python 将其他构造函数参数传递给MXNet中的自定义层,python,deep-learning,mxnet,Python,Deep Learning,Mxnet,我正在使用MXNet中的CustomOp类创建一个新的转换层。该层将output\u维度作为该层的超参数。这个维度不能从数据中自动推断,但需要由构建网络图的调用方选择,因此它应该是新符号的构造函数参数,如 net = mx.symbol.Custom(data=data, op_type='mycustomop', output_dimensionality=1024) 这将被我的CustomOp子类的\uuuu init\uuuu构造函数使用。但当我尝试这个时,我得到: 回溯(最近一次呼叫最

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

net = mx.symbol.Custom(data=data, op_type='mycustomop', output_dimensionality=1024)
这将被我的
CustomOp
子类的
\uuuu init\uuuu
构造函数使用。但当我尝试这个时,我得到:

回溯(最近一次呼叫最后一次):
文件“\u ctypes/callbacks.c”,第314行,“调用回调函数”
creator中第602行的文件“python/mxnet/operator.py”
op_道具=道具cls(**kwargs)
TypeError:\uuuu init\uuuuuuuuuuuuuuuuuu()获取了意外的关键字参数“output\u dimensionality”
分段故障(堆芯转储)

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

这是你的电话号码。有两个自定义参数传递到init:pos_grad_scale和neg_grad_scale,它们在CustomOp和CustomOpProps中都可以接受

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