【发布时间】:2014-06-23 12:16:00
【问题描述】:
直截了当。
我的神经网络是经典的前馈反向传播。 我有一个历史数据集,其中包括:
时间、温度、湿度、压力
我需要根据历史数据预测下一个值。
这个数据集大约 10MB 大,因此在一个核心上训练它需要很长时间。我想进行多核训练,但我无法理解每个核心的训练数据会发生什么,以及核心完成工作后究竟会发生什么。
根据:http://en.wikipedia.org/wiki/Backpropagation#Multithreaded_Backpropagation
训练数据被分成同样大的批次,每个批次 线程。每个线程执行前向和后向 传播。对每个的权重和阈值增量求和 线程。在每次迭代结束时,所有线程都必须暂停 简要说明要对权重和阈值增量求和并应用 到神经网络。
'每个线程都执行前向和后向传播' - 这意味着,每个线程只是使用数据集的一部分来训练自己,对吧?每个核心训练多少次迭代?
'在每次迭代结束时,所有线程都必须短暂暂停,以便将权重和阈值增量相加并应用于神经网络' - 这究竟是什么意思?当核心用他们的数据集完成训练时,主程序会做什么?
感谢您对此的任何意见!
【问题讨论】:
-
可能更适合程序员。stackexchange.com
-
快速无关的建议:如果你真的想把它推到边缘,你可以使用公司现在正在使用的东西:并行处理能力(即大规模并行处理器)。您可以在 openCL 或 CUDA 上编写自己的神经网络并对其进行快速训练(嗯,相对于幼稚的方法来说足够快)
-
每个核心有多少次迭代?一。该答案作为第二个问题的一部分给出:“在每个迭代结束时”。合并后,再做一次迭代。
标签: c++ multithreading neural-network