- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用java中的多线程进行并行计算。可能的数据结构是HashMap。我的算法没有任何除法运算和平方根。它是随机梯度下降。即便如此,我还是得到了NaN
。我想知道 HashMap 中是否存在多重访问、读写,是否会导致任何未定义的问题?如果是,我该如何摆脱它?
[编辑]
for(Map.Entry<Integer, ArrayList<Double>>entry: Matrix.entrySet()){
sum = sum + Math.exp(getScore(contextFeatureVector,entry.getValue()));
}
getScore
方法计算内积。返回值为无穷大
。
[编辑2]
在上述方法中,矩阵
为:
Map<Integer,ArrayList<Double>> Matrix = new ConcurrentHashMap<Integer,ArrayList<Double>>();
我仍然得到NaN
。这是由于我访问值的方式造成的吗?有人能以清晰的直觉回答吗?
最佳答案
如果您要让两个线程在其中添加和删除条目,则应该使用 java.util.concurrent.ConcurrentHashMap。当你的一个线程删除了一个键,而另一个线程刚刚在其上获取了一个handel并且将调用键的值时,你将成为NaN。
或者您可以在添加/删除条目时阻止 HashMap 对象。
[编辑] 几点想法:
• 整数的同步可能不太可靠。 (除非你的 做额外的工作,确保你没有两个整数 相同的值,因此您必须跟踪并重用 Integer。)
• NaN 表示您最有可能得到的数字为零。• 除以 0• 计算负数的sqrt。
您可以在使用值时记录值到控制台吗?或者只是找到抛出exption的行。也许只是把整个 map 都倒掉。
您现在拥有的这张 map 是可行的方法,但您需要确保它能够完成其任务。
关于java - 南 : Aynchronous parallel computing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11592499/
我正在使用java中的多线程进行并行计算。可能的数据结构是HashMap。我的算法没有任何除法运算和平方根。它是随机梯度下降。即便如此,我还是得到了NaN。我想知道 HashMap 中是否存在多重访问
我是一名优秀的程序员,十分优秀!