我已经在VB.NET -it中编写了一个反向传播类,效果很好-我正在C#人工智能项目中使用它。
但我在家里有一台AMD Phenom X3,在学校有一台英特尔i5。我的神经网络也不是多线程的。
如何将反向传播类转换为多线程算法?或者如何在其中使用GPGPU编程?或者我应该使用任何具有多线程反向传播神经网络的第三方库?
发布于 2012-01-06 06:22:21
JeffHeaton has recommend that you use resilient propagation (RPROP)而不是反向传播。下面是关于如何执行多线程RPROP (MPROP)的示例:
杰夫(来自
)
很难在这里讨论所有的细节,所以我建议你要么阅读这篇文章,要么看看我引用的书的相关章节。当然,这是假设您熟悉并发编程。
更新:
弹性传播通常会超过反向传播相当多的因素。此外,RPROP没有必须设置的参数。反向传播要求指定学习率和动量值。为反向传播找到最优的学习率和动量值可能很困难。对于弹性传播,这不是必需的。(来源:Encog Machine Learning)
发布于 2013-12-29 05:07:14
我尝试过为RPROP批处理实现多线程,但似乎总是比使用单线程慢。我已经尝试在循环级别分别实现“#杂注omp并行”,并在单独的线程中计算误差、梯度和权重。在我的解释中,在每个线程中完成的计算似乎太小,不能产生切换线程和同步结果(互斥)的计算结果。我在想我是不是做错了什么?我的结论是,运行RPROP单线程会更聪明,同时在单独的线程中同时处理多个神经元网络。大多数实现通常意味着多个互连的NN,因此这将是有意义的。
https://stackoverflow.com/questions/8749890
复制相似问题