如何在大型训练集和小内存上训练神经网络

时间:2014-01-17 10:41:26

标签: machine-learning gpu neural-network gpgpu training-data

我使用gpu计算编写自己的神经网络库,并进行反向传播。 想要普及,我不必检查训练集是否适合gpu内存。

当训练集太大而不适合gpu记忆时,你如何训练神经网络? 我认为它适合主机的RAM。

我必须在第一件事上进行火车迭代,然后在设备上取消分配并将第二部分发送到设备并对其进行训练,等等...... 然后总结渐变结果。

当我必须通过PCIe总线推送所有数据时,它是不是太慢了? 你有更好的主意吗?

1 个答案:

答案 0 :(得分:0)

使用minibatch gradient descent:循环播放

  • 将一批样本发送到GPU
  • 计算错误,反向渐变
  • 调整参数。

重复此循环几次,直到网络收敛。

这并不完全等同于天真批量学习算法(批量梯度下降):实际上它通常比批量学习更快地收敛 。如果您在每次训练循环之前随机洗牌,这会有所帮助。所以你仍然有内存传输,但你不需要那么多的迭代,算法运行得更快。