我对并行计算(包括一些CUDA),前馈神经网络和循环神经网络(以及它们如何使用BPTT)有基本了解。
当使用例如TensorFlow时,您可以将GPU加速应用于网络的训练阶段。但是,递归神经网络本质上是顺序的,具有时间步长,其中当前时间步长取决于前一个,下一个时间步长取决于电流等。
如果像这样,GPU加速如何工作?可以并行计算的所有内容都是以这种方式计算的,而时间步长相关的部分是序列化的吗?
答案 0 :(得分:3)
通过使用足够大的批量大小来计算单个单元的前向/后向传递消耗足够的计算以使GPU忙碌,您可以获得针对递归神经网络的GPU训练的性能的方式。
答案 1 :(得分:3)
RNNs使用反向传播进行训练。循环网络结构展开为有限长度的有向无环图,看起来就像正常的前馈网络一样。然后使用随机梯度下降进行训练,其中在每个时间步之间存在权重必须相等的约束。
如果您理解它是这样训练的,因为它只是限制了给定长度的序列上的反向传播,您会发现没有任何关于阻止此过程可并行化的顺序性。