Kerasでは、ユーザー定義のラムダ関数を計算するレイヤーを追加できます。 Kerasはバックプロパゲーションのこのユーザー定義関数の勾配を計算する方法を知りません。ケラス(または他のMLフレームワーク)はバックプロパゲーションのラムダ関数層の勾配をどのように計算しますか?
答えて
Theano/Tensorflowとライブラリを使用する利点の1つは、それらの上に構築されます。彼らはあなたに数学的関数と演算の自動勾配計算を与えることができます。今度はオプティマイザによって呼び出され
# 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)
(keras/optimizers.py)grads = self.get_gradients(loss, params)
をすべてparams
の更新ルールを記述するために使用されている勾配を得るために:
Kerasを呼び出すことによって、それらを取得します。ここではparams
が層の訓練可能な重みです。しかし、ラムダ機能層によって作られた層は、訓練可能な重みを持たない。しかし、それらは順方向のprobを介して損失関数に影響し、したがって他の層の訓練可能な重みの勾配の計算に間接的に影響を及ぼす。
新しい勾配計算を書く必要があるのは、新しい基本的な算術演算/関数を定義するときだけです。また、カスタムロス関数を書くとき、自動グラデーションはほとんど常に勾配計算を行います。しかし、オプションで、カスタム関数の分析グラディエントを実装する場合は、必ずしも最適化する必要はありません。例えば、ソフトワックス関数は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. 対数を計算するケラス層?
- 2. CS231n:ソフトマックス損失関数の勾配の計算方法は?
- 3. 勾配降下によるバックプロパゲーションは、各フォワードパス後のエラーを表します
- 4. NumPyによる勾配の計算
- 5. pytorchは単純な線形回帰モデルの勾配をどのように計算しますか?
- 6. AWSラムダ関数は、別のラムダ関数からのトークンをどのように検証できますか?
- 7. tf.signはバックプロパゲーションでどのように動作しますか?
- 8. バックプロパゲーションでチェーンルールはどのように機能しますか?
- 9. 変数はラムダ関数の中でどのように機能しますか?
- 10. 階層テーブルの子値の合計はどのようにして計算できますか?
- 11. フィボナッチ数の計算にはRecursiveTaskはどのように機能しますか?
- 12. forループのデータを他の計算のための変数にどのように格納しますか?
- 13. SPSSは他の変数から変数を計算します
- 14. 再帰ラムダ計算関数
- 15. trec evalはどのようにMAPを計算しますか?
- 16. Luceneはマルチフィールドスコアをどのように計算しますか?
- 17. MATLABはimmseをどのように計算しますか?
- 18. ラムダ関数をどのように使用できますか?
- 19. Caffeはカスタムコスト関数を使用して入力に対する勾配を計算します
- 20. どのように私はjQueryUIなどのWebサイトまたは他のUIフレームワーク
- 21. Pythonは私が配列として、いくつかの機能を持っていると私は私が勾配関数を使用しようと思って、その勾配を計算したい場合は、勾配
- 22. 3Dポリゴンの下り勾配ベクトルを計算するにはどうすればよいですか?
- 23. SharePoint計算フィールドの数値が10進数か整数かをどのように計算しますか?
- 24. パケットペイロードのバイト数はどのようにして計算できますか?
- 25. この16進数計算はどのように機能しますか?
- 26. r関数cor.test():ピアソン相関のp値はどのようにして計算されますか?
- 27. 勾配の計算/適用時の損失関数の設定値
- 28. 関数近似を持たない勾配時間差ラムダ
- 29. Rのオブジェクトサイズはどのように計算されますか?
- 30. 数値勾配を計算するための「標準的な」方法はありますか?