1

我们发现,我们代码的几个组件在使用前向或后向差分时未能通过梯度检查,但在使用更准确的中心差分时通过。为了解决这个问题,我们在我们的代码版本中修改了这些函数的默认值,以使用中心差分。

我们想请求将导数检查方法使用的有限差分方法作为一个选项,以便在其他用户运行测试时可以通过。

4

2 回答 2

2

虽然您可以通过元数据控制单个变量级别的行为,或者通过 FD 选项控制整个组件级别的行为,但通过 kwargs 将特定选项设置为 check_partial_derivs 也是合理的。这是我们可以做的事情,尽管目前它对我们来说不是超级优先事项。

于 2015-11-21T01:08:58.223 回答
2

您应该已经能够通过在您想要集中差异的变量中指定 来form在单个变量的基础上执行此操作。add_param

self.add_param('x2', 3.0, form = 'central')

或者,您可以通过以下方式为单个组件中的所有参数设置它们:

self.fd_options['form'] = 'central'

check_partial_derivatives肯定会选择这个。最终check_total_derivatives也应该选择它,但是仍然存在一个突出的错误,即当您在连接到单个 IndepVarComp 源的多个目标中指定不同的值时会发生什么——它使用哪个源——它使用它发现正确的第一个现在。

也可以step_type这样设置step_size

于 2015-11-20T22:01:58.590 回答