python - 使用 tensorflow ,如何平均多个批处理的参数梯度值并使用该平均值进行更新?

标签 python tensorflow recurrent-neural-network tensorflow-gradient

像许多开发深度学习模型的人一样,我受到硬件资源(即 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

最佳答案

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

关于python - 使用 tensorflow ,如何平均多个批处理的参数梯度值并使用该平均值进行更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52520825/

相关文章:

python - TensorFlow 无法将字符串类型的 Tensor 复制到设备

python - 如何删除 numpy.array 中的列

python - 有没有办法使用伪随机序列或哈希函数模拟队列的 python random.shuffle?

tensorflow - GAN 中 tf.group 的行为

python - 将 Keras 转换为 TensorFlow——剪枝+概率

Tensorflow:model_with_buckets 模型中 freeze_graph.py 的 "output_node_names"是什么?

python - 为 LSTM 选择 time_step

python - 我在使用 Tensorflow 2.0 运行 RNN LSTM 模型时遇到错误

python - 在全息 View 中自定义工具提示

python - 如何将外键提交到表单中? python /Django