ランダムに生成された値を使用して線形射影を取ることになる大きな配列があります。Numpy:ランダムなデータでドットプロダクトのメモリフットプリントを減らす
>>> input_array.shape
(50, 200000)
>>> random_array = np.random.normal(size=(200000, 300))
>>> output_array = np.dot(input_array, random_array)
は残念ながら、random_array
は、大量のメモリを占めており、私のマシンはスワップを開始します。私は実際には一度にrandom_array
のすべてを必要としないと思われます。理論的には、ドットプロダクトの計算中にそれを遅らせることができるはずです...しかし、私はどのように理解できません。
output_array
の計算のメモリフットプリントをinput_array
からどのように減らすことができますか?
は、これは単純化された例である、またはあなたが実際に正規分布乱数の大規模な配列の中に点在していますか? 'random_array'が生成される方法は関連しているかもしれません。 –
@DavidZaslavsky単純な例ではありません。これはまさに私がやりたいことです。 'random_array'の生成の変化を可能にする方法は、ボーナスですが、必須ではありません。 –
これを利用して遊ぶことができるとは確信できません。 'np.dot'はすべての入力のサイズ(2Dドット積==行列乗算)を知る必要があります。どのような場合でも 'np.dot'でジェネレータを使用する(簡単な)方法はありません。 – Yuushi