问题:

        笔者最近在使用Anaconda中的Spyder做一些联邦学习的工作,在调试代码的过程中发现代码在运行后不会释放占用的内存(.detach()操作亦无法恢复),导致代码在运行几次后就会出现内存被吃满而强制退出的情形。

解决方案:

        笔者首先搜集了几种可能的解决方案:

  1. ctrl + L
    清空控制台
  2. ctrl+Alt+R
    清空所有变量
  3. ctrl+.
    重启Ipython内核

        其中第三种方法最有效,会将之前占用的内存全部释放。

        后面笔者重新考虑代码中的问题,最终发现是在对梯度进行处理的时候没有进行 .detach() 操作,导致梯度数据不断堆积,修改后问题得到比较好地解决。其中 .detach() 操作的原理可见这篇文章:pytorch中 .detach() 的用法

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐