我们发现在使用前向或后向差分时,我们代码的几个组件未通过梯度检查,但在使用更准确的中心差分时通过。为了解决这个问题,我们在我们的代码版本中修改了这些函数的默认值,以使用中心差分。
我们想要求衍生检查方法使用的有限差分方法作为选项,以便测试可以在其他用户运行时通过。
答案 0 :(得分: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
。
答案 1 :(得分:2)
虽然您可以通过元数据控制单个变量级别的行为,或者通过FD选项控制整个组件级别,但通过kwargs将特定选项设置为check_partial_derivs也是合理的。这是我们可以努力的事情,虽然它目前不会成为我们的超级优先事项。