def minimize_and_clip(optimizer, objective, var_list = None, clip_val=10, exclude = None):
"""
Minimized `objective` using `optimizer` w.r.t. variables in
`var_list` while ensure the norm of the gradients for each
variable is clipped to `clip_val`
"""
gradients = optimizer.compute_gradients(objective, var_list=var_list)
for i, (grad, var) in enumerate(gradients):
if grad is not None:
#gradients[i] = (tf.clip_by_value(grad, -clip_val, clip_val), var)
if (exclude is None) or (var not in exclude):
gradients[i] = (tf.clip_by_norm(grad, clip_val), var)
return optimizer.apply_gradients(gradients)
############################
# Other NN Related
评论列表
文章目录