为了账号安全,请及时绑定邮箱和手机立即绑定

python MemoryError的解决方法

python MemoryError的解决方法

饮歌长啸 2021-08-14 19:37:01
如何更改此功能以使其更高效?我不断收到 MemoryErrordef 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
查看完整描述

1 回答

?
月关宝盒

TA贡献1772条经验 获得超5个赞

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

如果您使用 float32,它将把内存使用量减半:

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

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

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


查看完整回答
反对 回复 2021-08-14
  • 1 回答
  • 0 关注
  • 337 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号