Nul*_*uli 11 cloud artificial-intelligence distributed-computing neural-network
因此,对于拥有大量数据集的大型网络,它们需要一段时间才能进行训练.如果有一种方法可以跨多台机器共享计算时间,那将是非常棒的.然而,问题在于,当神经网络进行训练时,权重会在每次迭代时不断变化,每次迭代或多或少都基于最后一次 - 这使得分布式计算的想法至少成为挑战.
我认为,对于网络的每个部分,服务器可能会发送1000组数据来训练网络......但是......你的计算时间大致与我无法计算的时间相同同时训练不同的数据集(这是我想做的).
但即使我可以将网络训练分成不同数据集的块进行训练,我怎么知道我何时完成了这组数据?特别是如果发送到客户端计算机的数据量不足以实现所需的错误?
我欢迎所有想法.
引用http://en.wikipedia.org/wiki/Backpropagation#Multithreaded_Backpropagation:
当使用多核计算机时,多线程技术可以大大减少反向传播收敛所需的时间.如果正在使用批处理,则使反向传播算法适应多线程方式相对简单.
对于每个线程,训练数据被分解为相同大的批次.每个线程执行前向和后向传播.对每个线程求和权重和阈值增量.在每次迭代结束时,所有线程必须暂时暂停,以便将权重和阈值增量求和并应用于神经网络.
这基本上是这里描述的其他答案.