Keras支持添加一個計算用戶定義的lambda函數的圖層。 我沒有得到的是Keras知道如何計算用戶反向傳播的用戶定義函數的梯度。keras(或任何其他ML框架)如何計算反向傳播的lambda函數層的梯度?
4
A
回答
3
使用Theano/Tensorflow和庫的好處之一就是建立在它們之上。他們可以爲您提供數學函數和操作的自動梯度計算。
Keras通過調用讓他們:
# keras/theano_backend.py
def gradients(loss, variables):
return T.grad(loss, variables)
# keras/tensorflow_backend.py
def gradients(loss, variables):
'''Returns the gradients of `variables` (list of tensor variables)
with regard to `loss`.
'''
return tf.gradients(loss, variables, colocate_gradients_with_ops=True)
這是在grads = self.get_gradients(loss, params)
又通過優化稱爲(keras/optimizers.py),以獲得被用於編寫所有params
更新規則的梯度。 params
這裏是層次的可訓練權重。但是由Lambda功能層創建的圖層沒有任何可訓練的權重。但它們通過前向概率影響損失函數,從而間接影響其他層次可訓練權重梯度的計算。
您只需要編寫新的梯度計算就是在定義新的基本數學運算/函數時。此外,當您編寫自定義損失函數時,自動梯度幾乎總是處理梯度計算。但是,如果您實現自定義函數的解析漸變,您可以選擇優化培訓(並非總是)。例如軟件功能可以用exp,sum和div來表示,而auto grad可以處理它,但是它的分析/符號修飾通常在Theano/Tensorflow中實現。
爲了實現新的行動,你可以看看它的下面的鏈接: http://deeplearning.net/software/theano/extending/extending_theano.html https://www.tensorflow.org/versions/r0.12/how_tos/adding_an_op/index.html
相關問題
- 1. keras反向傳播中的跳過層
- 2. 反向傳播中的梯度檢查
- 3. 檢查反向傳播梯度
- 4. Keras是否計算凍結層的梯度?
- 5. 計算對數的keras層?
- 6. 在ArrayFire中實現卷積神經網絡反向傳播(梯度計算)
- 7. 如何梯度計算DeepDream
- 8. 如何計算反向傳播後輸出層中theta(權重?)的新值?
- 9. 計算梯度方向
- 10. 如何計算火炬中任意圖層/重量的損失梯度?
- 11. 如何計算keras的top5精度?
- 12. 如何計算ResNet架構中的梯度?
- 13. chainer.functions.get_item如何反向傳播?
- 14. 用keras計算梯度範數和權重
- 15. 如何從計算函數內部更新其他字段或其他模型?
- 16. 如何指定梯度函數以用於optim()或其他優化器
- 17. 如何在keras中使用lambda層?
- 18. mylist標準ml中的反向函數
- 19. 通過稀疏張量反向傳播梯度?
- 20. Matlab梯度和hessian計算符號向量函數
- 21. 反向傳播算法
- 22. 反向傳播算法 - 誤差導數計算
- 23. 如何計算圖像梯度
- 24. 替代Keras中的Lambda層
- 25. 反向傳播算法中的層權重
- 26. 對於定向梯度的直方圖,如何計算邊緣像素的梯度向量?
- 27. 直方圖長度(或任何其他物理)與計數
- 28. 如何計算反向模
- 29. Keras中的策略梯度
- 30. 重複使用計算的md5(或任何其他校驗和)