我想将一些具有自定义渐变的自定义操作从 Chainer 转换为 Tensorflow。前传比较简单,我已经有了。但是对于向后传递,我永远无法使优化工作。让我们假设 Chainer 中的反向传递是这样的:
def backward_gpu(self, inputs, grad_outputs):
return some_operation(inputs, grad_outputs[0])
我在 Tensorflow 中通过以下方式做到了这一点:
@tf.RegisterGradient('Forward')
def _rasterize_grad(op, grads):
return some_operation(op.inputs, grads[0])
根据我在网上找到的文档,我认为grad_outputs
和grads
的计算方式相同。但不知何故我失败了。
任何人都可以对此有所了解吗?那将不胜感激。