我创建了这个帐户来发布这个。我从来没有遇到过如此奇怪和随机的错误。让我解释: 我正在从头开始在 Pytorch 中制作一个神经网络(尚未完成),在测试运行它时,我遇到了内存泄漏。当我试图定义我的模型时,它就发生了。顺便说一下,这一切都在 Pycharm 中。
不到一分钟,它就会吃掉我的 32 gigs 内存,如果我不赶紧阻止它,它会让我的电脑崩溃。
请记住,我没有应用此层来转换任何张量,或根本运行我的模型。
被这个问题难住了,我对每一行代码都进行了单元测试,最后将其缩小到一行,即 torch.nn.Linear 层。它看起来像我编码的任何其他线性层。没什么了不起的。
当我评论该行时,内存泄漏停止了。当我重新添加它时,他们继续,即使我检查了语法错误并更改了我的符号。
认为这与我的可变副作用或脚本有关,我隔离并简化了我的代码:
import torch
from torch import nn
class foo_encoder():
nn.Linear(8192, 819200)
瞧,泄漏经受住了这次移植,以至于运行您在图像中看到的简单脚本足以浪费我所有的内存并使我的计算机崩溃。
需要注意的一件重要事情是,更改数字确实可以解决问题。例如,
class foo_encoder():
nn.Linear(1, 1)
会正常运行。
你们认为这可能是什么原因造成的?谢谢你的时间
那是很多节点。它看起来不像是内存泄漏,更像是内存分配。我很确定这是来龙去脉。所以你会分配那么多节点和它们的多个连接。这些数字很简单,真的很大。 8k x 800k 连接变得越来越大!