python MemoryError的解决方法

如何更改此功能以使其更高效?我不断收到 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)

Train和Test数据是用于情感分析的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


饮歌长啸
浏览 338回答 1
1回答

月关宝盒

您的数组似乎是 10k x 10k,即每个 64 位的 1 亿个元素(因为默认 dtype 是 float64)。所以这是 8 亿字节,也就是 763 兆字节。如果您使用 float32,它将把内存使用量减半:np.zeros((len(sequences),&nbsp;dimension),&nbsp;dtype=np.float32)或者,如果您只关心 0 和 1,这将减少 88%:np.zeros((len(sequences),&nbsp;dimension),&nbsp;dtype=np.int8)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python