比方說,我有兩個後續圖層激活a1
和a2
。是否有辦法截取自動區分從第2層傳播到第1層的梯度,即∂E/∂a2
?我想在應用之前改變這種梯度,然後將其傳遞到層1如何攔截TensorFlow中自動區分的漸變?
4
A
回答
5
從tf.train.Optimizer documentation,
處理梯度。
調用最小化()負責的兩個計算所述梯度和將它們應用到的變量。如果你想在應用之前處理梯度,您可以改用三個步驟優化:
計算的梯度與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)
2
你可能會尋找tf.Graph.gradient_override_map
。有一個在tensorflow docs一個很好的例子:
@tf.RegisterGradient("CustomSquare")
def _custom_square_grad(op, grad):
# ...
with tf.Graph().as_default() as g:
c = tf.constant(5.0)
s_1 = tf.square(c) # Uses the default gradient for tf.square.
with g.gradient_override_map({"Square": "CustomSquare"}):
s_2 = tf.square(s_2) # Uses _custom_square_grad to compute the
# gradient of s_2.
有一個現實世界使用它here通過量化權重,通過實值梯度回來做再發網實現。
相關問題
- 1. Tensorflow漸變
- 2. 攔截Microsoft Access中的自動保存
- 3. 如何攔截
- 4. 如何爲ILogger攔截攔截器
- 5. Tensorflow:如何替換或修改漸變?
- 6. Tensorflow:如何通過tf.gather傳播漸變?
- 7. My TensorFlow漸變下降
- 8. Tensorflow漸變始終爲零
- 9. Tensorflow AdamOptimizer vs漸變下降
- 10. 攔截DialogFragment活動
- 11. 攔截活動onOptionsItemSelected
- 12. 如何攔截並取消應用程序的自動播放?
- 13. Spring自動登錄攔截URL問題
- 14. 自動裝配到休眠攔截器
- 15. 自動撥打電話/呼叫攔截
- 16. 自動裝配Autowired RibbonAware RestTemplate與攔截
- 17. 如何攔截Cmd的+ Q
- 18. 攔截器不攔截
- 19. java攔截器不攔截
- 20. TensorFlow - 後處理分配操作中的漸變?
- 21. 如何攔截垂直滑動手勢
- 22. 如何攔截UIScrollView滾動事件?
- 23. 在Tensorflow中採用漸變,tf.gradient
- 24. 攔截類中的靜態變量java
- 25. ASP.NET MVC中的ServiceRoute與區域攔截動作鏈接到家
- 26. android上的攔截攔截器
- 27. 如何攔截leaflet.js中的縮放?
- 28. 如何攔截Perl中的HTTP請求?
- 29. 如何攔截Ruby中的類定義?
- 30. 如何攔截Emacs中的Ctrl-G