Python MemoryError Problem

Python的内存管理相对于C++来说相当低效已经是老生之谈了。今天遇到了一个内存问题,大概是我想拿 30000 × 512 30000\times{512} 30000×512的一个矩阵来和它自己的转秩做类似内积的运算。在Python中查看一个变量占多少内存的指令如下:

import numpy as np
from sys import getsizeof
a = [0] * 1024
b = np.array(a)
getsizeof(a)
b.nbytes

查看内积运算的结果可以看到,对于这个维度是 32606 × 32606 32606\times{32606} 32606×32606类型为float32的矩阵占用的内存大小是4055.6MB。可以说基本是没有办法执行其他操作的。更细节的来看,一个float32类型的数字所占用的内存是4B, 32606 × 32606 × 4 32606\times{32606}\times{4} 32606×32606×4的结果是3.96GB,问题似乎主要还是出在这个矩阵的维度过大。

你可能感兴趣的:(代码调试日志)