像许多开发深度学习模型的人一样,我受到硬件资源的阻碍,即 GPU 内存。我有一个音频分类问题,我正在尝试许多 RNN。数据非常大,我只能使用小批量,并且还必须限制 lstm 大小。我了解许多人使用频谱图或其他方法向网络提供更精简的数据,但我特别想知道如何使用原始数据来做到这一点。
这就是我目前正在做的大约 4 的批量大小:
loss_op = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=logits, labels=label_op))
optimisation_op = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(loss_op)
理想情况下,我希望在 GPU 上计算一个批次的每个参数的梯度,然后将它们移动到 RAM,同时计算下一批的梯度。经过一些批次后,我想平均每个参数的梯度并使用它们来更新网络。
我从 inception github 页面得到了这个想法,该页面描述了类似于在多个 GPU 上并行化的内容:https ://github.com/tensorflow/models/tree/master/research/inception