0

我使用 gpu 计算编写了自己的带有反向传播的神经网络库。想让它通用,我不必检查训练集是否适合 gpu 内存。

当训练集太大而无法放入 gpu 内存时,如何训练神经网络?我假设它适合主机的 RAM。

我必须对第一个片段进行训练迭代,然后在设备上将其释放,然后将第二个片段发送到设备并对其进行训练,依此类推......然后总结梯度结果。

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

4

1 回答 1

0

使用小批量梯度下降:在一个循环中,

  • 将一批样本发送到 GPU
  • 计算误差,反向传播梯度
  • 调整参数。

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

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

于 2014-01-17T10:48:33.100 回答