Tensorflowでオプティマイザーを作成する方法 質問する

Tensorflowでオプティマイザーを作成する方法 質問する

Tensorflowのネットワークに新しい最適化アルゴリズムを書きたいと思っています。Levenberg Marquardt 最適化アルゴリズム、これは現在 TF API から除外されています。カスタム オプティマイザーの作成方法に関するドキュメントが不十分だったので、どなたかアドバイスをいただけないかと尋ねました。よろしくお願いします。

ベストアンサー1

オプティマイザの最も単純な例はおそらく勾配降下法オプティマイザー基本的なインスタンスを作成する方法を示していますオプティマイザクラスオプティマイザー基本クラスのドキュメントでは、メソッドの機能について説明しています。

オプティマイザーの Python 側は、逆伝播される勾配を計算して適用する新しいノードをグラフに追加します。これは、オペレーションに渡されるパラメータを提供し、オプティマイザーの高レベルの管理の一部を行います。次に、実際の「適用」オペレーションが必要です。

オペレーションにはPythonとC++の両方のコンポーネントがあります。トレーニングオペレーションの記述は、TensorFlowにオペレーションを追加する一般的なプロセス

勾配を計算して適用するトレーニングオペレーションの例については、以下を参照してください。python/トレーニング/トレーニング_ops.py- これは実際のトレーニング操作のための Python グルーです。ここでのコードは主に形状の推論に関するものであり、計算は C++ で行われることに注意してください。

勾配を適用するための実際の計算は、Opによって処理されます(一般的に、opはC++で記述されます)。この場合、勾配を適用するopは次のように定義されます。コア/カーネル/トレーニング_ops.ccたとえば、ApplyGradientDescentOp の実装がそこにあり、これは関数 ApplyGradientDescent を参照しています。

var.device(d) -= grad * lr();

Op 自体の実装は、op の追加に関するドキュメントで説明されているように、他の op の実装に従います。

おすすめ記事