【问题标题】:Why define a backward method for a custom layer in Pytorch?为什么要在 Pytorch 中为自定义层定义后向方法?
【发布时间】:2021-04-02 03:28:16
【问题描述】:

我目前正在 Pytorch 中构建一个需要多个自定义层的模型。我只定义了前向方法,因此没有定义后向方法。该模型似乎运行良好,优化器能够使用来自层的梯度进行更新。但是,我看到很多人定义了落后的方法,我想知道我是否遗漏了什么。

为什么你需要定义一个反向传递?

【问题讨论】:

    标签: python optimization pytorch layer


    【解决方案1】:

    在极少数情况下,您应该在 PyTorch 中实现自己的后向函数。这是因为 PyTorch 的 autograd 功能负责计算绝大多数操作的梯度。

    最明显的例外是

    1. 您的函数不能表示为其他可微函数的有限组合(例如,如果您需要不完整的 gamma 函数,您可能需要编写自己的使用 numpy 和/或查找表的正向和反向) .

    2. 您希望加快一个特别复杂的表达式的计算速度,在应用链式法则后,该表达式的梯度可以大大简化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-09
      • 1970-01-01
      • 2015-07-10
      • 2019-11-12
      • 1970-01-01
      相关资源
      最近更新 更多