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.6 MBです.基本的には他の操作を実行することはできないと言えます.より詳細には、float32型の数字が消費するメモリは4 B、32606です.× 32606 × 4 32606\times{32606}\times{4} 32606×32606×4の結果は3.96 GBであり,問題は主にこの行列の次元が大きすぎることにあるようだ.