我使用MXNet中的CustomOp
类来创建一个新的转换层。此层将output_dimensionality
作为层的超参数。这个维度不能从数据中自动推断出来,但是需要由构建网络图的调用者选择,所以它应该是新符号的构造函数参数,比如
net = mx.symbol.Custom(data=data, op_type='mycustomop', output_dimensionality=1024)
它将被我的CustomOp
子类的__init__
构造函数使用。但当我尝试这个时,我得到:
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)
这应该不是问题,但您需要在CustomOp类和customoprops类中指定参数。在
这是example how to do that。有2个自定义参数传递给init:pos_grad_scale和neg_grad_scale,它们在CustomOp和customoprops中都被接受。在
还要注意,有一个通过
float()
函数到float的转换。这样做是因为这样的参数总是作为字符串传递的(即使它是数组),所以您需要将整数从字符串转换回来。在相关问题 更多 >
编程相关推荐