我对并行计算(包括一些CUDA)、前馈神经网络和递归神经网络(以及它们如何使用BPTT)有基本的知识。
例如,在使用TensorFlow时,可以将GPU加速应用于网络的培训阶段。但递归神经网络在本质上是连续的,具有时间步长,即当前的时间步长取决于先前的时间步长,下一个时间步取决于当前的时间,等等。
如果是这样的话,为什么GPU加速工作呢?当时间步长相关的部分被序列化时,所有可以并行计算的东西都是这样计算的吗?
发布于 2017-04-27 12:46:56
RNNs通过时间的反向传播进行训练。递归网络结构被展开成一个有限长度的有向无圈图,看起来就像一个正常的前馈网络。然后,它使用随机梯度下降训练,在每个时间步长之间有一个约束,即权重必须相等。
如果你明白它是这样训练的,因为它只是在给定长度的序列上受约束的反向传播,你就会发现顺序的本质并没有阻止这个过程是可并行的。
发布于 2017-04-26 18:29:53
要获得递归神经网络GPU训练的性能,需要使用足够大的批处理大小来计算单个单元的前/后传递,计算量足以使GPU忙碌。
https://stackoverflow.com/questions/43635423
复制相似问题