首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >做一个scipy.optimize.root耗尽内存,什么是好的替代方案?

做一个scipy.optimize.root耗尽内存,什么是好的替代方案?
EN

Stack Overflow用户
提问于 2014-12-24 02:34:52
回答 1查看 727关注 0票数 1

所以我尝试使用scipy.optimize.root,但内存不足,原因是内存不足,无法计算jacobian。

我想知道,在内存受限的情况下,我可以使用什么替代方案?或者,是否有办法绕过它?

我的输入大小是400,000,输出相似,这意味着雅可比是400,000^2,这是一个杀手.

如果你有什么建议让这个问题更清楚,请告诉我。

更新

我想我已经想出了一种在任何给定点上有效计算雅可比的方法。scipy.optimize.root的文档说明如下:

如果jac是布尔型的,是真的,则假设乐趣与目标函数一起返回Jacobian的值。如果是假的,则对Jacobian进行数值估计。jac也可以是一个可调用的返回雅可比的乐趣。在这种情况下,它必须接受相同的参数作为乐趣。

从突出显示的角度来看,我猜想如果fun(x)是我的乐趣,它会给出如下内容:

代码语言:javascript
复制
f, jac = fun(x)

其中f= f(x)和jac = jacobian(x)。

对吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-29 13:31:20

尝试使用method='krylov'

另见http://docs.scipy.org/doc/scipy/reference/tutorial/optimize.html#root-finding-for-large-problems

如果您了解雅可比,就可以编写函数,以便f, jac = fun(x)并将jac=True选项交给root。但是,考虑到有几种方法不支持稀疏的射精,这可能对您没有帮助。

其次,最好使用稀疏jacobian作为Krylov方法的预条件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27630715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档