Multithreading 多线程反向传播

Multithreading 多线程反向传播,multithreading,artificial-intelligence,neural-network,gpgpu,backpropagation,Multithreading,Artificial Intelligence,Neural Network,Gpgpu,Backpropagation,我已经在VB.NET中编写了一个反向传播类-它工作得很好-我正在C#人工智能项目中使用它 但我家里有一台AMD Phenom X3,学校里有一台Intel i5。我的神经网络不是多线程的 如何将反向传播类转换为多线程算法?或者如何在其中使用GPU编程?或者我应该使用任何具有多线程反向传播神经网络的第三方库吗?而不是反向传播。以下是有关如何执行多线程RPROP(MPROP)的示例: (来自杰夫·希顿) 这里很难讨论所有的细节,所以我建议你要么读那篇文章,看看我引用的那本书的相关章节。当然,这

我已经在VB.NET中编写了一个反向传播类-它工作得很好-我正在C#人工智能项目中使用它

但我家里有一台AMD Phenom X3,学校里有一台Intel i5。我的神经网络不是多线程的

如何将反向传播类转换为多线程算法?或者如何在其中使用GPU编程?或者我应该使用任何具有多线程反向传播神经网络的第三方库吗?

而不是反向传播。以下是有关如何执行多线程RPROP(MPROP)的示例:

  • (来自杰夫·希顿)
这里很难讨论所有的细节,所以我建议你要么读那篇文章,看看我引用的那本书的相关章节。当然,这是假设您熟悉并发编程

更新: 弹性传播通常比反向传播的性能更好 相当大的因素。此外,RPROP没有必须提供的参数 准备好了。反向传播需要学习速度和动量 不能指定值。寻找最佳的学习速度和动力 反向传播的价值可能很难实现。这是不必要的 弹性传播。 (来源:)


我尝试过为RPROP批处理实现多个线程,但似乎总是比使用单个线程慢。我尝试在循环级别“pragma omp parallel”上单独实现,并在单独的线程中计算错误、梯度和权重。在我的解释中,似乎每个线程中完成的计算太小,无法产生在切换线程和同步结果(互斥)中完成的计算结果。我想知道我是否做错了什么?我的结论是,运行RPROP单线程,同时在单独的线程中同时处理多个神经元网络,会更明智。大多数实现通常意味着多个互连的NN,因此这是有意义的。

你能告诉我为什么RPROP比反向传播更好吗?我更新了我的答案,说明了为什么RPROP更好,但你不必使用RPROP。多线程概念与backprop的工作原理相同。谢谢,那篇文章是不是说我应该对主循环中的循环执行多线程处理(哪一次运行意味着一个周期/历元)?如果这是正确的,每个历元只需50-200毫秒即可完成。如果我的问题是正确的(在前面的评论中),我应该这样说:你上面提到的问题的答案都会解决你的问题,但简而言之:你想创建几个线程,并在你想运行的操作上反复使用它们(即训练你的神经网络)。