假设我有两个后续层激活a1
和a2
.有没有办法拦截自动微分从第2层传播到第1层的渐变,即?E/?a2
?我想更改此渐变,然后将其传递给第1层.
在应用之前处理渐变.
调用minimize()会同时计算渐变并将它们应用于变量.如果要在应用渐变之前处理渐变,可以分三步使用优化器:
使用compute_gradients()计算渐变.根据需要处理渐变.使用apply_gradients()应用已处理的渐变.例:
Run Code Online (Sandbox Code Playgroud)# 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)
归档时间: |
|
查看次数: |
1320 次 |
最近记录: |