理想情况下,我希望操作是完全自包含的(渐变和操作定义在同一个文件中)。官方教程只重点介绍了一个python实现。有没有人知道是否有可能用C++实现渐变,以及如何实现?
发布于 2016-08-31 22:51:57
自动渐变计算目前仅在Python API中完全支持。因此,操作与其渐变操作的关联仍应在Python中手动指定。假设你有一个在C++中定义的op Foo和它的渐变op FooGrad,你应该得到相应的Python包装器foo和foo_grad。在Python中,您可以编写以下代码:
@RegisterGradient("Foo"):
def _FooGrad(op, grad):
return foo_grad(op.inputs[0], op.outputs[0], grad)请注意,我假设您的foo_grad操作采用原始操作的输入和输出以及传入的渐变。对于您的情况,这可能是真的,也可能不是,因此请相应地进行调整。
https://stackoverflow.com/questions/39242333
复制相似问题