問題タブ [batch-normalization]
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.
python - tensorflow を使用して BatchNorm レイヤーで Keras モデルをトレーニングする
私はkerasを使用してモデルを構築し、最適化コードとその他すべてをtensorflowで記述しています。DenseやConv2Dなどの非常に単純なレイヤーを使用していたときは、すべてが簡単でした。しかし、BatchNormalizationレイヤーを keras モデルに追加すると、問題が複雑になります。
BatchNormalizationレイヤーはトレーニング フェーズとテスト フェーズで動作が異なるため、 feed_dict に K.learning_phase():True が必要であることがわかりました。しかし、次のコードはうまく機能しません。エラーなしで実行されますが、モデルのパフォーマンスは向上していません。
keras fit関数でkeras モデルをトレーニングしてみたところ、うまくいきました。
tensorflowでBatchNormalizationレイヤーを使用してkerasモデルをトレーニングするにはどうすればよいですか?
tensorflow - Tensorflow バッチ正規化はどのように機能しますか?
深層ニューラル ネットワークでテンソルフロー バッチ正規化を正常に使用しています。私は次の方法でそれをやっています:
また、トレーニング フェーズとテスト フェーズの両方で問題なく動作します。ただし、別のプロジェクトで計算されたニューラル ネットワーク パラメーターを使用しようとすると、問題が発生します。ここでは、すべての行列の乗算などを自分で計算する必要があります。問題は、tf.nn.batch_normalization
関数の動作を再現できないことです。
ページhttps://www.tensorflow.org/versions/r1.2/api_docs/python/tf/nn/batch_normalizationの式によると:
しかし、ご覧のとおり、
0.30664611
これは、Tensorflow 自体によって計算された値とは異なります。では、ここで何が間違っているのでしょうか。また、バッチの正規化された値を自分で計算できないのはなぜですか?
前もって感謝します!
tensorflow - Keras バッチ正規化/標準化を無効にする
シリーズ予測に単純な Keras モデルを使用しています。
シリーズ全体で正規化された入力を供給しています。
トレーニング中のモデルの予測精度は正しいようです。ただし、model.predict()
関数の出力をプロットすると、出力が何らかの形でスケーリングされていることがわかります。ある種の正規化/標準化タイプのスケーリングのようです。
トレーニングのバッチ サイズを変更すると、結果に影響します。バッチ サイズを入力セットのサイズに設定してみました。これにより、シリーズ全体のトレーニングが 1 つのバッチで行われるため、結果は改善されますが、それでもスケーリングされます。
これは、入力バッチごとの正規化または出力の正規化と関係があると思います。BatchNormalization
モデルにレイヤーがありません。
Keras の入出力のデフォルトの正規化/標準化を無効にする方法はありますか (このデフォルトの動作は存在しますか)?
Tensorflow バックエンドと Tensorflow 1.1 で Keras 2 を使用しています。