私のコードは、20000 * 35 行列の固有ベクトルと固有値を見つけるために PCA アルゴリズムに従います。したがって、固有ベクトルを見つけるには、共分散行列を見つける必要があり、計算すると 20000*20000 のオーダーになります。
このような巨大な行列をどのように処理するのでしょうか? コードに OpenCV を使用しています
20K * 20K = 400,000,000。32 ビット浮動小数点数を使用している場合、これは 1.6 GB です。それは行列の獣ですが、ほとんどの最新のコンピューターは、特別な最適化を行わなくても、合理的に処理できるはずです (ここでは、処理に 1 週間もかからないことを意味します)。64 ビット double を使用している場合、3.2 GB が表示されます。これは激しくなっていますが、最新のコンピューターで完全に管理できないわけではありません.
このコードが本当にうまく機能する必要がある場合は、行列が密/疎になるかどうかを検討してください。密集していると、できることはあまりありません。まばらな場合は、おそらくいくつかの最適化を行うことができます。
編集: また、最適化のために OpenCL/CUDA を使用することを検討してください。一般的に言えば、行列を含む問題は通常、データレベルの並列性が高く、GPU アプローチに適しています。