2017-06-23 3 views
0

私はシェイプ(40000000,1600000)のcsr_matrixを持っています。シャドリング時のセグメンテーションフォールトcsr_matrix

index = np.arange(np.shape(csr_matrix)[0]) np.random.shuffle(index) csr_matrix_new = csr_matrix[index, :]

しかし、エラーを取得する「セグメンテーションフォールト」:私はこの行列をシャッフルするには、以下のメソッドを使用します。

私はこのシャッフル方法を小さなcsr_matrixでテストしています。 誰もそれを修正する方法を知っていますか?

答えて

0

メモリの問題のようです。マシン上にこのようなサイズの行列をシャッフルできます。それは約2.5GBのRAMを要した。

UNIXシェルからアプリケーションを実行している場合、セグメンテーションフォルトは、プロセスがメモリ不足になっている可能性があります。しかし、Pythonシェルから実行している場合は、MemoryErrorを取得する必要があります。

追加するだけで、sklearn.utils.shuffleを使用してシャッフルを行うこともできます(メモリの使用状況は同じです)。

from sklearn.utils import shuffle 
csr_matrix_new = shuffle(csr_matrix) 
0

「np.random.shuffle」に使用されるシャッフルアルゴリズムは何ですか?

Fisher-Yates shuffleは実装が非常に簡単で、適切な場所に配置されているので、余分なメモリが割り当てられないようにしてください。

関連する問題