典型的tf优化器流程如下:
# Create an optimizer.
opt = GradientDescentOptimizer(learning_rate=0.1)
# Compute the gradients for a list of variables.
grads_and_vars = opt.compute_gradients(loss, <list of variables>)
# grads_and_vars is a list of tuples (gradient, variable). Do
# whatever you
# need to the 'gradient' part, for example cap them, etc.
capped_grads_and_vars = [(MyCapper(gv[0]), gv[1]) for gv in grads_and_vars]
# Ask the optimizer to apply the capped gradients.
opt.apply_gradients(capped_grads_and_vars)
如何修改此流程,以便在每个优化器步骤之后使用不同的数据点计算损失函数,并根据更新的参数来计算这些数据点?
说我有一个随机过程,它具有一定的参数化,并且通过梯度下降来学习参数值。更新参数值后,我必须重新采样此过程中的点并评估这些点的可能性(而不是我在上一步中使用的点)。我可以轻松地将其合并到典型的tf优化器中吗?从概念上讲,它类似于批次梯度下降,但是每个批次的数据点都是通过梯度下降循环生成的,其方式取决于上一次迭代的参数值。