Javaでマルチスレッドを使用して並列計算を行っています。May のデータ構造は HashMap です。私のアルゴリズムには、除算と平方根がありません。それは確率的勾配降下です.それでも私は得てNaN
います.ハッシュマップに複数のアクセス、読み書きがあるかどうかを知りたいのですが、それは未定義の問題を引き起こしますか? はいの場合、どうすればそれを取り除くことができますか?
[編集]
for(Map.Entry<Integer, ArrayList<Double>>entry: Matrix.entrySet()){
sum = sum + Math.exp(getScore(contextFeatureVector,entry.getValue()));
}
getScore
メソッドは内積を計算します。戻り値はinfinity
です。
[編集2]
この上記の方法でMatrix
は、次のとおりです。
Map<Integer,ArrayList<Double>> Matrix = new ConcurrentHashMap<Integer,ArrayList<Double>>();
私はまだ取得していNaN
ます.それは、私が値にアクセスしている方法が原因です. 誰かが明確な直感で答えてくれませんか?