python - python内存错误的解决方法

标签 python keras sentiment-analysis

如何更改此功能以使其更加高效?我不断收到 MemoryError

def vectorize_sequences(sequences, dimension=10000):
    results = np.zeros((len(sequences), dimension))
    for i, sequence in enumerate(sequences):
        results[i, sequence] = 1.
    return results

我在这里调用该函数:

x_train = vectorize_sequences(train_data)
x_test = vectorize_sequences(test_data)

训练和测试数据是用于情感分析的 IMDB 数据集,即

(train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=10000)

编辑:我在具有 4 GB RAM 的 64 位 Ubuntu 系统上运行此程序。

这是回溯:

Traceback (most recent call last):

  File "/home/uttam/PycharmProjects/IMDB/imdb.py", line 29, in <module>
    x_test = vectorize_sequences(test_data)
  File "/home/uttam/PycharmProjects/IMDB/imdb.py", line 20, in vectorize_sequences
    results = np.zeros((len(sequences), dimension))
MemoryError

最佳答案

您的数组看起来为 10k x 10k,即 1 亿个元素,每个元素为 64 位(因为默认数据类型是 float64)。所以这是 8 亿字节,也就是 763 兆字节。

如果使用 float32,内存使用量将减少一半:

np.zeros((len(sequences), dimension), dtype=np.float32)

或者,如果您只关心 0 和 1,这会将其减少 88%:

np.zeros((len(sequences), dimension), dtype=np.int8)

关于python - python内存错误的解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53249636/

相关文章:

Python 跨平台 os.system

python - "ImportError: DLL load failed: The specified procedure could not be found"- 而使用 Keras 在 Python 中使用 CNN 进行数字识别

machine-learning - Autokeras 的 AutoModel 和 GraphAutoModel 需要解释

keras - 理解 GRU 架构 - Keras

python - 从 Huggingface 模型中提取中性情绪

machine-learning - 两个类别的比例在分类问题中重要吗?

python - 如何为联合网格中的每个 kdeplot 设置线条样式

python - 如何为 SQLAlchemy 模型动态生成棉花糖模式

java - 从 AWS ECS 集群获取标签返回空列表

python - 推文感觉 : Always returns the same Sentiment Score, 无论标签如何