Tensorflow:在C ++中实现用户操作的梯度?

时间:2016-08-31 06:35:52

标签: tensorflow

我理想地将操作完全自包含(在同一文件中定义的渐变和操作)。官方教程只强调python实现。有谁知道是否有可能在C ++中实现渐变,以及如何实现它?

1 个答案:

答案 0 :(得分:0)

目前仅在Python API中完全支持自动梯度计算。因此,仍应在Python中手动指定操作与其梯度操作的关联。假设您在C ++中定义了op Foo及其渐变op FooGrad,您应该获得相应的Python包装foofoo_grad。在Python中,您可以编写以下内容:

@RegisterGradient("Foo"):
def _FooGrad(op, grad):
  return foo_grad(op.inputs[0], op.outputs[0], grad)

请注意,我假设您的foo_grad操作采用原始操作的输入和输出以及传入的渐变。您的情况可能会或可能不是,所以请相应调整。