我正在使用 java 中的多线程进行并行计算。可能的数据结构是HashMap。我的算法没有任何除法运算和平方根。它是随机梯度下降。即使这样我也得到了NaN
。我想知道是否有多重访问,在 hashmap 中读写,它会导致任何未定义的问题吗?如果是,我将如何摆脱它?
[编辑]
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
。是因为我访问价值的方式。有人可以用清晰的直觉回答吗?