問題タブ [keras-2]
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.
tensorflow - Keras バッチ正規化/標準化を無効にする
シリーズ予測に単純な Keras モデルを使用しています。
シリーズ全体で正規化された入力を供給しています。
トレーニング中のモデルの予測精度は正しいようです。ただし、model.predict()
関数の出力をプロットすると、出力が何らかの形でスケーリングされていることがわかります。ある種の正規化/標準化タイプのスケーリングのようです。
トレーニングのバッチ サイズを変更すると、結果に影響します。バッチ サイズを入力セットのサイズに設定してみました。これにより、シリーズ全体のトレーニングが 1 つのバッチで行われるため、結果は改善されますが、それでもスケーリングされます。
これは、入力バッチごとの正規化または出力の正規化と関係があると思います。BatchNormalization
モデルにレイヤーがありません。
Keras の入出力のデフォルトの正規化/標準化を無効にする方法はありますか (このデフォルトの動作は存在しますか)?
Tensorflow バックエンドと Tensorflow 1.1 で Keras 2 を使用しています。
performance - Keras は fit_generator() を使用してトレーニングしません
画像分類タスクに Keras 2.0.4 (TensorFlow バックエンド) を使用しています。独自のネットワークをトレーニングしようとしています (事前トレーニング済みのパラメーターなし)。私のデータは巨大なので、すべてをメモリにロードすることはできません。このためImageDataGenerator()
、 、flow_from_directory()
およびを使用しfit_generator()
ます。
ImageDataGenerator
オブジェクトの作成:
my_preprocessing_function は、画像をドメイン [0,255] に再スケーリングし、平均削減によってデータを中央に配置します (VGG16 または VGG19 の前処理と同様)。
オブジェクトのメソッドflow_from_directory()
を使用:ImageDataGenerator
(validation_generator を作成するために同じことが行われます。)
モデル (損失関数: categorical crossentropy
、オプティマイザー: Adam
) を定義してコンパイルした後、以下を使用してモデルをトレーニングしfit_generator()
ます。
問題:
エラー メッセージは表示されませんが、トレーニングがうまく機能しません。400 エポックの後でも、精度は 20% 前後で変動します (これは、これらのクラスの 1 つをランダムに選択するのと同じくらい良い値です)。実際、分類子は常に「class1」を予測します。同じことは、1 エポックのトレーニングの後でも当てはまります。ランダムな重みを初期化していますが、これはなぜですか? なにが問題ですか?私は何が欠けていますか?
中古モデル