python 内存错误的解决方法
Workaround for 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)
训练和测试数据是用于情感分析的 IMDB 数据集,即
(train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=10000)
编辑:我 运行 在 64 位 Ubuntu 系统上使用 4 GB RAM。
这是回溯:
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 位(因为默认 dtype 是 float64)。所以这是 8 亿字节,也就是 763 兆字节。
如果使用 float32,内存使用量将减少一半:
np.zeros((len(sequences), dimension), dtype=np.float32)
或者如果您只关心 0 和 1,这将减少 88%:
np.zeros((len(sequences), dimension), dtype=np.int8)
如何更改此功能以使其更有效率?我不断收到 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)
编辑:我 运行 在 64 位 Ubuntu 系统上使用 4 GB RAM。
这是回溯:
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 位(因为默认 dtype 是 float64)。所以这是 8 亿字节,也就是 763 兆字节。
如果使用 float32,内存使用量将减少一半:
np.zeros((len(sequences), dimension), dtype=np.float32)
或者如果您只关心 0 和 1,这将减少 88%:
np.zeros((len(sequences), dimension), dtype=np.int8)