私は確率論的潜在セマンティック インデックス (plsa) に基づくアルゴリズムを実装しています。論文はここにあり、p_z_d_wt_wv という名前の 4 次元配列が必要です。z はトピック、d はドキュメント、wt はテキスト ワード、wv はビジュアル ワードです。各次元の数は約12、7000、100、500で、配列は二重配列なので、32Gのメモリが必要です!! 以下のようにこのメモリを割り当てます。各ドキュメントの wt と wv の数が異なるため、デモンストレーション用です。
p_z_d_wt_wv = new double[12][7000][][];
for( int t = 0; t < 12; ++t)
{
for( int d = 0; d < 7000; ++d )
{
p_z_d_wt_wv[t][d] = new double[100][500];
}
}
コードを実行すると、メモリ不足の問題が発生します。まず、コードでメモリが不足するのはなぜですか? 配列が私の方法で割り当てられている場合、メモリは連続して割り当てられますか? javaには連続メモリのメモリ制限があるからでしょうか?もしそうなら、限界は何ですか?
次に、サーバーのメモリが十分に大きいと仮定して、この問題を解決するにはどうすればよいでしょうか。float配列として変更できることはわかっていますが、他に解決策はありますか?