是否曾经以反向模式计算过偏导数?

Are partial derivatives ever calculated in reverse mode?

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

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

反向模式近似分音将不起作用。当您执行有限差分时,您将输入增加少量,然后调用 compute 来计算输出。为了在反向模式下执行此操作,您需要能够 运行 您的组件 "backwards" 为其提供输出以产生输入。

所以答案是:OpenMDAO 总是在正向模式下计算近似分音。

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

当您用 FD 或 CS 来区分事物时,根据定义,您正在使用转发模式。

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

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