2 つの大きな疎行列を乗算したいと考えています。1 つ目は 150,000x300,000 で、2 つ目は 300,000x300,000 です。最初の行列には約 1,000,000 個の非ゼロ項目があり、2 番目の行列には約 20,000,000 個の非ゼロ項目があります。これらの行列の積を取得する簡単な方法はありますか?
現在、行列を csr または csc 形式で保存して試していmatrix_a * matrix_b
ます。これによりエラーが発生しますValueError: array is too big
。
pytables を使用して個別の行列をディスクに保存し、それらを小さなブロックに引き離し、多くのブロックの積から最終的な行列積を構築できると思います。しかし、実装が比較的簡単なものを望んでいます。
編集:メモリとディスクの間で個々のブロックを前後に移動することに関連する簿記を非表示 (または回避) しながら、任意に大きな疎行列で機能するソリューションを望んでいます。