【问题标题】:Why does scipy.optimize.fmin_l_bfgs_b() memory usage increase with iterations?为什么 scipy.optimize.fmin_l_bfgs_b() 内存使用量随着迭代而增加?
【发布时间】:2016-02-25 20:07:29
【问题描述】:

我一直在使用scipy.optimize.fmin_l_bfgs_b() 来最小化函数,但最近我遇到了一个我以前没有注意到的行为。在优化一些新功能时,内存使用量会随着更多迭代的执行而不断增加。例如,到第 1500 次迭代时,内存使用量增加了 x100,在某些情况下,我必须在内存不足之前停止优化。作为参考,我之前运行过 scipy.optimize.fmin_l_bfgs_b() 以优化其他功能,但从未发现内存使用量增加。

根据我对这个函数的理解,它应该在每次迭代时执行类似类型的计算,所以我不明白为什么内存使用会增加。

这种行为是预期的,还是可能是某种内存泄漏(在fmin_l_bfgs_b 或我提供的函数中)?

【问题讨论】:

    标签: python scipy


    【解决方案1】:

    如果内存没有在最小化函数中释放,每次调用该函数都会增加程序的内存分配。大多数 Python 对象都会正确释放。

    我遇到了一个从 C 扩展模块返回的数组的问题,该模块负责分配内存但没有正确返回它。重写模块以正确释放内存解决了这个问题,这里已经讨论了解决方案:

    Memory leak in Python extension when array is created with PyArray_SimpleNewFromData() and returned

    【讨论】:

    • 我确实发现是我实现numpy.ndarray的扩展导致的内存泄漏。
    猜你喜欢
    • 2023-02-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-03
    • 2019-03-02
    • 1970-01-01
    • 2012-08-25
    • 2015-07-09
    • 1970-01-01
    相关资源
    最近更新 更多