我正在编写一个自定义操作,并且在编写向后部分时我被困住了。
当我调用 out_grad [0] .asnumpy()或对out_grad进行任何操作时,程序崩溃而没有任何错误消息。
我尝试用零填充in_grad,程序运行顺利,但我需要渐变向后流动。
def backward(self, req, out_grad, in_data, out_data, in_grad, aux):
self.assign(in_grad[0], req[0], 0)
self.assign(in_grad[1], req[1], 0)
这里出了什么问题?
答案 0 :(得分:1)
Custom Operator in MXNet向我们展示了如何使用自定义操作定义损失函数。损失op非常特殊,因为它不需要渐变流入。
但在我的情况下,我需要毕业才能流入我的行动。因此,下面的函数应该返回依赖项而不是像在损失操作中那样为空。
def declare_backward_dependency(self, out_grad, in_data, out_data):
return [out_grad[0]]
在我看来,依赖是一些变量,梯度应该被延伸到。
答案 1 :(得分:0)
你有没有尝试过这里的教程来开发一个 Custom Operator in MXNet
如果这样做无效,请提供自定义操作符的完整代码以及一些示例数据和一个简单的模型,以便轻松复制此问题。