我正在使用 AForge.NET ANN 并在我的训练集上对其进行训练。因为训练是单线程的,而且这个过程可能需要很长时间,所以我想知道是否可以运行多线程训练。
因为在训练弹性反向传播网络时使用线程是一个问题,所以我考虑在不同的网络之间拆分我的训练集,并且每 N 个 epoch 将所有网络的权重合并为一个,然后将其复制到所有线程(所以下一个 epoch 将从新的权重开始)。
我似乎无法在 AForge.NET 中找到结合两个(或更多)网络的方法。寻找有关如何开始实施过程的帮助。
我正在使用 AForge.NET ANN 并在我的训练集上对其进行训练。因为训练是单线程的,而且这个过程可能需要很长时间,所以我想知道是否可以运行多线程训练。
因为在训练弹性反向传播网络时使用线程是一个问题,所以我考虑在不同的网络之间拆分我的训练集,并且每 N 个 epoch 将所有网络的权重合并为一个,然后将其复制到所有线程(所以下一个 epoch 将从新的权重开始)。
我似乎无法在 AForge.NET 中找到结合两个(或更多)网络的方法。寻找有关如何开始实施过程的帮助。
每 N 次迭代组合神经网络并不能很好地工作。只取权重并将它们组合起来可能非常棘手。在某些方面,这就是遗传算法的交叉操作的工作原理。
真正做到这一点的唯一方法是修改 AForge 的训练以支持多线程。基本上要做到这一点,您需要映射梯度计算,然后对梯度进行归约和。然后使用减少的梯度来更新网络。
我已经在 Encog 框架中实现了这个确切的东西,它支持多线程 (RPROP),并且有一个 C# 版本。 http://www.heatonresearch.com/encog。