我用VB.NET编写了一个反向传播类,它运行得很好,并且我正在一个C#的人工智能项目中使用它。
但我在家有一台AMD Phenom X3,在学校有一台Intel i5,我的神经网络尚未实现多线程。
如何将那个反向传播类转换为多线程算法?或者如何在其中使用GPGPU编程?或者我应该使用任何具有多线程反向传播神经网络的第三方库吗?
回答:
JeffHeaton建议你使用弹性传播(RPROP)来代替反向传播。有关于如何进行多线程RPROP(MPROP)的示例:
- 关于C#多线程反向传播的文章(来自Jeff Heaton)
- 第7.2.1章 – “传播和多线程”(《Encog 2.5 for C# 简介》第94页)
在这里详细讨论所有细节是困难的,所以我建议你阅读那篇文章,并查看我提到的书的相关章节。当然,这假设你熟悉并发编程。
更新:
弹性传播通常会以相当大的优势超越反向传播。此外,RPROP没有必须设置的参数。反向传播需要指定学习率和动量值。对于反向传播找到最佳的学习率和动量值可能很困难。使用弹性传播则不需要这样做。
(来源:Encog机器学习)