首页 > 解决方案 > Tensorflow - 使用相同的梯度多次更新权重

问题描述

使用梯度下降的训练网络通常包括在一个小批量上运行前向、后向和更新传递,然后移动到下一个。我想运行此过程的修改版本:在运行初始前向和后向传递(获取损失和梯度)并进行初始更新后,我想向前运行并再次更新,直到满足停止条件。

正常的训练算法如下所示:

    for mb in get_minibatches():
      loss = forward(mb)
      gradients = backwards()
      weights.update(gradients, step)

我需要什么(注意梯度只计算一次):

    for mb in get_minibatches():
      loss = forward(mb)
      gradients = backwards()
      weights.update(gradients, step)

      while (new_loss = forward(mb)) > loss:
        step = step / 2 # actual formula is different
        weights.update(gradients, step)

如何执行我的自定义转发+更新步骤序列?

标签: pythontensorflowgradient-descent

解决方案


推荐阅读