問題タブ [gradienttape]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
386 参照

python - model.trainable 変数で明示的な GradientTape を使用することと、model.fit はどのように異なりますか?

そのため、ニューラル ネットワークのトレーニング可能なパラメーターを最適化するために、Keras の Model.fit() と低レベルの TF GradientTape の両方を試してみたところ、Keras バージョンが大幅に優れていることがわかりました。

最終的な MSE が である Keras 最適化バージョンのコード:

グラフを与える:実際の値からの Keras 適合偏差

ただし、次のコードに示すように、tf.GradientTape を使用して Keras モデルを最適化すると、次のようになります。

そして、偏差値について次のグラフを取得します。GradeintTape フィットの偏差値

Keras フィット バージョンの値は、GradientTape を使用して取得した値よりも実際の値に近いことがわかります。また、Gradient Tape の値も、異なる入力に対してあまり変化せず、平均を回避しましたが、Keras の値はより多くの多様性を示しました。

では、GradientTape 低レベル API を使用して、Keras 高レベル API と同等のパフォーマンスを得るにはどうすればよいでしょうか? 私の実装よりもはるかに優れている Model.fit が行っていることは何ですか? ソースコードを調べてみましたが、本質的に特定できませんでした。

前もって感謝します。

0 投票する
1 に答える
319 参照

tensorflow - TF Summit 2020 からの「Tensorflow で読むことを学ぶ」トークの実装 - Tensorflow 2.1/2.2 の EncoderDecoder Seq2Seq モデル - カスタム トレイン ステップ


背景情報


Tensorflow 2020 Summit で興味深いと思った講演ごとにGoogle Colabsを作成しています。注意として、Tensorflow 2.1 を使用しています。


'Learning To Read With Tensorflow'トークを実装しようとしたときに問題が発生しました。


EncoderDecoderクラス定義にたどり着くまでは、すべてが桃色です。Modelカスタムサブクラスにfit メソッドを実装すると、以下で詳しく説明するエラーが発生します。

最後の顕著なエラーはAttributeError: 'NoneType' object has no attribute 'dtype'.

ただし、これはスコープ コード内の問題および/または(を含む)GradientTapeの定義の問題によるものだと思います。Decoder LayersAttention Layers



メインコード



詳細なエラー メッセージ



dataレプリケートlinesする場合の変数の取得方法

データを取得する

データの前処理

参考文献

前もって感謝します!!

0 投票する
0 に答える
779 参照

tensorflow - ヤコビアンを計算するための tf.gradients() と比較したひどい tf.GradientTape パフォーマンス

以下の解決策:

シナリオ:

ユーザー定義関数のヤコビアンをループで何度も計算しようとしています。TF 2 の GradientTape と、古いセッション ベースの tf.gradients() メソッドでこれを行うことができます。問題は、GradientTape が tf.gradients() よりも非常に遅い (100 倍遅い) ことです。使いたい機能 (bath_jacobian、ヘッセ行列のサポートなど) がありますが、100 倍遅い場合は使用できません。

質問:

私が単にGradientTapeを誤用しているのか、それとも呼び出されるたびに提供された関数を再微分する必要があるため常に遅くなるのかは明らかではありません(私の疑い)。GradientTape の使用を修正するためのヒント、または常に tf.gradients よりも桁違いに基本的に遅くなるという確認を求めています。

関連する質問:

GradientTape と tf.gradients() を比較するための完全に含まれる最小限の例:

編集 - 解決策:

xdurch0 は、@tf.function で _useGradientTape() をラップする必要があることを以下に指摘しました。これは、他の理由で以前に失敗したものです。これを行ったら、xTensor の定義を @tf.function ラッパーの外に移動する必要がありました。それには、メンバー変数を作成し、tf.assign() を使用します。

これがすべて完了すると、GradientTape (この単純な例の場合) が tf.gradints と同じ大きさになっていることがわかります。十分な試行 (~1E5) を実行すると、tf.gradients の 2 倍の速度になります。驚くばかり!

0 投票する
1 に答える
1315 参照

python - テンソルフロー勾配テープを使用したメモリ不足の OOM ですが、リストを追加した場合にのみ発生します

私は CNN を使用してデータセット (1000,3253) に取り組んできました。勾配テープを使用して勾配計算を実行していますが、メモリが不足し続けています。それでも、勾配計算をリストに追加する行を削除すると、スクリプトはすべてのエポックを実行します。なぜこれが起こるのか完全にはわかりませんが、テンソルフローとグラデーションテープの使用も初めてです。アドバイスやご意見をいただければ幸いです