【发布时间】:2018-06-07 17:42:45
【问题描述】:
我第一次致力于创建和训练深度学习模型。在项目之前我对这个主题没有任何了解,因此我的知识即使现在也很有限。
我曾经在自己的笔记本电脑上运行该模型,但在实现了运行良好的 OHE 和 SMOTE 之后,由于 MemoryError(8GB 的 RAM),我根本无法在自己的设备上运行它。因此,我目前在 30GB RAM RDP 上运行该模型,这让我可以做更多事情,我想。
我的代码似乎有一些非常低效的地方,我想知道它们是否可以解决。一个例子是,通过使用 pandas.concat,我的模型的 RAM 使用量从 3GB 猛增到 11GB,这似乎非常极端,之后我删除了几列,使 RAM 飙升至 19GB,但在计算完成后实际上又回到了 11GB(与 concat 不同)。我还强迫自己暂时停止使用 SMOTE,因为 RAM 使用量会增加太多。
在代码的最后,即发生训练的地方,模型在尝试拟合模型时呼吸了最后一口气。我可以做些什么来优化它?
我曾考虑将代码分成多个部分(例如预处理和训练),但为此我需要将大量数据集存储在只能达到 4GB 的 pickle 中(如果我错了,请纠正我)。我也考虑过使用预训练模型,但我真的不明白这个过程是如何工作的,以及如何在 Python 中使用一个。
P.S.:如果可能的话,我也希望我的 SMOTE 回来
提前谢谢大家!
【问题讨论】:
-
OHE 编码的类别有多少?也许显示一些代码会有所帮助,例如你对串联做了什么?
-
原始表有 7 列,其中 3 列是我 OHE 编码的。这三列总共有大约 5400 个类别。连接用于将 OHE 编码的列添加回原始列(因为剩余的 4 列未编码),然后直接使用“drop”命令删除未编码的分类列。
-
这部分代码如下所示:pastebin.com/jtxbTv1C 抱歉,如果它看起来一团糟。我在高效编码领域真的不为人知
标签: python deep-learning ram rdp