使用梯度下降的训练网络通常包括在一个小批量生产中向前,向后和更新遍历,然后移至下一个。 我要运行此过程的修改版:在运行初始正向和反向传递(获取损耗和渐变)并进行初始更新后,我想正向运行并再次更新,直到满足停止条件为止。
正常训练算法如下:
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)
如何执行我的自定义前进和更新步骤顺序?