我有一个问题来理解粒子群算法的概念。为了编写代码,我们将一些文章分散到我们的空间中,并试图找到一个位置(for example min of a function or desire target)。基于位置、速度等,所有的粒子最终都到达了我们想要的地方。现在我有一个问题,如何将这个代码应用到我的ANN设计中?
它如何帮助神经网络?(似乎粒子群算法有很强的全局寻优能力,而反向传播有查找局部的能力,对吗?)
如果你能给我任何能帮助我理解的信息,我将不胜感激。提前谢谢
我正在尝试理解Julia中的多线程行为,并注意到在Juliav1.6.3中,以下两个代码块的行为不同(我在某些script.jl中运行Atom ):
acc = 0
Threads.@threads for i in 1:1000
global acc
println(Threads.threadid(), ",", acc)
acc += 1
end
acc
和
acc = 0
Threads.@threads for i in 1:1000
global acc
acc +
链接到,这看起来相当令人生畏。
然而,我能够逃脱惩罚:
brew install gcc # took ~4h on my 2011 MacBook Air
brew install cmake
make # took another ~3h
我的操作系统是全新安装的,尽管我确实安装了XCode。
我不需要任何,我想知道将上面的说明添加到该部分是否有意义。
我在问题中回答了我自己的问题--如果答案成立,有人(可能是我)可以将其转换为答案,而我可以修改问题。
首先,我不得不说我对并行计算完全陌生(对计算机科学几乎一无所知),所以我对“工作者”或“进程”之类的东西的理解非常有限。但是,我确实有一个关于运行一个简单的for循环的问题,该循环可能在并行迭代之间没有依赖关系。
假设我想要执行以下操作:
for N in 1:5:20
println("The N of this iteration in $N")
end
如果我只是想让这些消息出现在屏幕上,而出现的顺序并不重要,那么如何在Julia 0.6中实现这一点,并在Julia 0.7 (因此是1.0)中供将来参考呢?
我试图在Julia中学习并行for循环,但我对下面示例代码的结果感到困惑:
addprocs(4)
@everywhere begin
N = 10
V = SharedArray{Int64,1}(N)
@sync @parallel for i = 1:N
V[i] = i
println(V[i])
end
end
通过使用println,我试图识别哪个工人通过了哪个步骤。令人惊讶的是,我从上面的代码中得到的结果是,每个工作人员一直在进行整个迭代,直到最后一个工作人员(在我的例子中是worker 3)完成for循环:
From worker 4: 1
From wor
我在几个地方读到,Julia代码的性能(在某些条件下)可以与Fortran进行比较。我在Julia中编写了以下代码:
Pi = 3.141592653589793238462643
n = 100000
function integration_2d(n,Pi,sum)
h = Pi/n
for i=1:n
x = h*(i-0.5)
for j=1:n
y = h*(j-0.5)
sum = sum + cos(x + y)
end