0

現在、私はこの論文を python で学部論文に実装してますが、マハラノビス メトリック学習のみを使用しています (興味がある場合)。

簡単に言えば、整数で構成される 67K*67K のサイズの行列を学習する必要があるときに、numpy.dot(A.T,A)A がランダムなベクトル サイズ (1,67K) であるという単純な方法で問題に直面します。私のPCには8GBのRAMしかなく、必要なメモリの生の計算はinitに16GBであるため、それを行うと単純にMemoryErrorがスローされます。代替手段を検索してdaskを見つけたよりも。

だから私はこれでdaskに移りました、dask.array.dot(A.T,A)そしてそれは終わりました。しかし、そのマトリックスにホワイトニング変換を行う必要があるよりも、SVDを取得することで達成できます。しかし、そのSVDを実行するたびに、ipythonカーネルが停止します(メモリ不足が原因だと思います)。

これは、カーネルが死ぬまで、initからこれまでのところ私がしていることです:

fv_length=512*2*66
W = da.random.randint(10,20,(fv_length),(1000,1000))  
W = da.reshape(W,(1,fv_length))
W_T = W.T
Wt = da.dot(W_T,W); del W,W_T
Wt = da.reshape(Wt,(fv_length*fv_length/2,2))
U,S,Vt = da.linalg.svd(Wt); del Wt

私はまだU、S、およびVtを取得していません。

dask を使用している場合でも、この種のことを行うには、私の記憶が単に十分ではないのでしょうか? または実際にはこれは仕様の問題ではなく、メモリ管理が悪いのでしょうか? または、他の何か?

この時点で、他のより大きなスペックの PC で必死に試しているので、32 GB RAM のベアメタル サーバーをレンタルする予定です。そうしてもいいのかな?

4

1 に答える 1