我正在尝试使用自定义渐变修改TensorFlow中所有图层的渐变,并保存当前渐变。从概念上讲, i -th迭代中单个层的计算过程如下:
custom_grad = f(original_grad, stored_grad[i - 1])
stored_grad[i] = original_grad
custom_grad
$data = json_decode(file_get_contents("php://input",true));
更新图层权重我对TF很陌生,因此很难完成如何实现这一目标。
答案 0 :(得分:2)
要回答您的问题,我们必须查看优化程序在您致电optimizer.minimize(loss)
时通常会采取的措施。
实际上他们正在执行两项后续操作:compute_gradients()
和apply_gradients
。
从documentation开始,我们读到:
调用
minimize()
负责计算渐变并将它们应用于变量。
所以:
如果要处理渐变 在应用它们之前,您可以分三步使用优化器:
- 使用
compute_gradients()
计算渐变。- 根据需要处理渐变。
- 使用
应用已处理的渐变 醇>apply_gradients()
。
直接从文档中我可以举例说明对渐变应用一些修改:
# 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)