似乎tf.gradients
允許也計算雅可比行列式,即一張張量的每個條目的偏導數。另一個張量的每個條目,而tf.train.Optimizer.compute_gradient
只計算實際的梯度,例如,標量值wrt的偏導數。每個條目的特定張量或wrt。一個特定的標量。爲什麼有一個單獨的功能,如果tf.gradients
也實現該功能?tf.gradients和tf.train.Optimizer.compute_gradient有什麼區別?
2
A
回答
2
tf.gradients
不允許您計算雅可比矩陣,它會彙總每個輸出的梯度(類似於實際雅可比矩陣的每列的總和)。事實上,在TensorFlow中沒有「好」的計算Jacobians的方法(基本上你必須每個輸出調用tf.gradients
一次,see this issue)。
關於tf.train.Optimizer.compute_gradients
,是的,其結果基本相同,但是自動處理一些細節並以稍微方便的輸出格式。如果你看看the implementation,你會發現它的核心是對tf.gradients
(在這種情況下是別名gradients.gradients
)的調用,但是對於優化器實現來說已經實現了周圍的邏輯非常有用。另外,將它作爲一種方法允許子類中的可擴展行爲,以實現某種優化策略(不太可能在步驟compute_gradients
步驟中)或輔助目的(如跟蹤或調試)。
相關問題
- 1. tf.gradients和tf.train.RMSPropOptimizer(lr_rate).compute_gradients有什麼區別?
- 2. tensorflow中optimizer.compute_gradient()和tf.gradients()之間的區別是什麼?
- 3. 有什麼區別`和$(Bash中有什麼區別?
- 4. 有什麼區別? :和||
- 5. &&和||有什麼區別?
- 6. 「/」和「/ *」有什麼區別?
- 7. 有什麼區別:。!和:r!?
- 8. ==和===有什麼區別?
- 9. Appender和〜有什麼區別?
- 10. $ @和$ *有什麼區別?
- 11. is和=有什麼區別?
- 12. #.00和#。##有什麼區別?
- 13. `==`和`is`有什麼區別?
- 14. '=='和'==='有什麼區別?
- 15. /和/#/有什麼區別?
- 16. | 0和~~有什麼區別?
- 17. `&`和`ref`有什麼區別?
- 18. ==和===有什麼區別?
- 19. ==和===有什麼區別?
- 20. `{}`和`[]`有什麼區別?
- 21. JavaScript和=== ===有什麼區別?
- 22. difftime和' - '有什麼區別?
- 23. =和==有什麼區別?
- 24. xtype和別名有什麼區別?
- 25. Mixpanel:識別()和people.identify()有什麼區別?
- 26. 有什麼區別
- 27. 有什麼區別
- 28. 有什麼區別?
- 29. 有什麼區別?
- 30. 有什麼區別?