首页 > 解决方案 > 减少 sklearn CountVectorizer、pandas 和 numpy 的内存占用

问题描述

我有一个利用神经网络和sklearn.feature_extraction.text.CountVectorizer. 我也有这个软件的许多实例(100+),我很难理解为什么每个实例都占用了 190MB 的 RAM,其中 60MB 是共享的。

虽然神经网络内存占用非常低,但我无法理解为什么只是以下语句(以及其他导入torchpandasnumpy)会导致软件内存使用量急剧增加。

from sklearn.feature_extraction.text import CountVectorizer

我一直在研究 Python3 内存管理、堆分配和许多其他主题,但据我所知,上述语句的副作用是将所有符号从sklearn.feature_extraction.text加载到内存中,而不仅仅是CountVectorizer类及其依赖项。

首先,我很想问题出在用法上,CountVectorizer所以经过简短的研究后,我将其内存管理迁移到了经典的marisa_trie. 经过多次测试,进程吃掉的内存是一样的,所以结论是nn管理不是真正的问题。

我终于用import语句(和guppy)模拟了一个简单的 Pyton3 脚本来跟踪它的内存,我发现仅仅这个语句就会导致进程占用 >60MB 的内存。

这些是我的其他进口产品:

import numpy as np
import pandas as pd
import torch
import torch.nn as nn
import torch.onnx
from torch import optim
import marisa_trie
from sklearn.feature_extraction.text import CountVectorizer

标签: pythonmemoryscikit-learn

解决方案


推荐阅读