使用tensorflow,如何在多个批次中平均参数梯度值并使用该平均值进行更新?

时间:2018-09-26 15:02:15

标签: python tensorflow rnn tensorflow-gradient

就像许多人在开发深度学习模型一样,我的硬件资源(即GPU内存)也使我受阻。我有一个音频分类问题,为此我正在尝试许多RNN。数据非常大,我只能使用小批量,并且还必须限制lstm的大小。我知道许多人使用频谱图或其他方法向网络提供更多压缩数据,但是我特别想知道如何使用原始数据。

这是我目前正在以大约4个批次进行的操作:

$my_array = json_decode(json_encode( $my_array, JSON_NUMERIC_CHECK ));

理想情况下,我想为GPU上的批次计算每个参数的梯度,然后将其移至RAM,同时计算下一批的梯度。经过一些批次后,我想平均每个参数的梯度,并使用它们来更新网络。

我从最初的github页面得到了这个想法,该页面描述了类似于在多个GPU上并行化的内容:https://github.com/tensorflow/models/tree/master/research/inception

1 个答案:

答案 0 :(得分:0)

使用tf.Variable对象存储渐变。将它们放在CPU上。