【问题标题】:Are partial derivatives ever calculated in reverse mode?是否曾经以反向模式计算偏导数?
【发布时间】:2020-05-22 10:58:37
【问题描述】:

我知道openMDAO可以在正向或反向模式下计算模型的总导数,但偏导数总是在正向模式下计算吗?

例如,我有一个具有 400 个输入和 4 个输出的组件。显然,这是反向模式求解的候选对象。如果我只是declare_partials(['*'], ['*'], method=fd),openMDAO 会尝试以反向模式解决这个问题吗?

【问题讨论】:

  • 您的问题中存在method=fd 是有问题的。有一些方法可以使用反向模式计算部分,但仅限于解析导数的上下文中。

标签: openmdao


【解决方案1】:

反向模式近似分部无法正常工作。当您执行有限差分时,您将输入增加少量,然后调用compute 来计算输出。为了在反向模式下执行此操作,您需要能够“向后”运行组件,为其提供输出以产生输入。

所以答案是:OpenMDAO 总是在前向模式下计算近似的部分。

如果您的组件在 fd 中很慢,这可能是声明解析导数的好选择。

【讨论】:

    【解决方案2】:

    当您使用 FD 或 CS 来区分事物时,根据定义,您使用的是前进模式。

    当您用手区分事物(即笔和纸,导出部分,然后编码)时,正向模式或反向模式的概念并不真正适用。

    但是,如果您使用算法微分来计算您的部分,那么您绝对可以选择正向或反向模式 AD。如果你有 400 个输入和 4 个输出,反向模式 AD 会更快。

    【讨论】:

      猜你喜欢
      • 2015-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-01
      • 2018-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多