[解決済み] KerasのSequentialモデルで検証データは何に使うのか?
質問
私の質問は簡単です。 バリデーションデータとは何ですか? シーケンシャルモデルでmodel.fitに渡された に使われる ?
また、モデルの学習方法(通常はモデルのハイパーパラメータの選択などに検証セットを使用しますが、ここではそのようなことはないと思います)に影響を与えませんか?
このように渡すことができる検証セットについて話しているのです。
# Create model
model = Sequential()
# Add layers
model.add(...)
# Train model (use 10% of training set as validation set)
history = model.fit(X_train, Y_train, validation_split=0.1)
# Train model (use validation data as validation set)
history = model.fit(X_train, Y_train, validation_data=(X_test, Y_test))
少し調べてみると
keras.models.Sequential.fit
が呼び出す
keras.models.training.fit
のような変数を作成します。
val_acc
と
val_loss
(コールバックからアクセスできる)。
keras.models.training.fit
はまた
keras.models.training._fit_loop
を呼び出すと、バリデーションデータが
callbacks.validation_data
に追加し、さらに
keras.models.training._test_loop
で一括して検証データをループします。
self.test_function
をループします。この関数の結果は、コールバックからアクセス可能な値であるログの値を埋めるために使用されます。
これらすべてを見た後、私は、この関数に渡されたバリデーションセットが
model.fit
に渡される検証セットは、学習中に何かを検証するために使われるのではなく、完全に独立したセットに対して、学習済みモデルが各エポックでどのように動作するかのフィードバックを得るためにのみ使用されるようです。したがって、同じ検証セットとテストセットを使用することは問題ないでしょう?
model.fitの検証セットは、コールバックから読み込まれる以外に何か目的があるのか、どなたか確認されてはいかがでしょうか?
どのように解決するのですか?
確かなモデルを作りたいのであれば、データを3つのセットに分けるという特定のプロトコルに従わなければなりません。1つは トレーニング に使うもの、1つは バリデーション と 最終評価 であり、これは テストセット .
学習データで学習し、検証セットから得られるメトリクス(精度、損失など)の結果でモデルをチューニングするという考え方です。
モデルは検証セットを見ることができず、どのような形であれ、その上で訓練されたものではありません。
しかし、あなたはハイパーパラメータの設計者であり、マスターとして、このデータに従ってモデルを調整するのです。 したがって、それはあなたの設計上の決定に直接影響を与えるので、間接的にあなたのモデルに影響を与えるのです。 検証データとうまく連動するようにモデルを調整し、それが傾きをもたらす可能性があるのです。
まさにそれが、モデルもあなた自身も使用したことのないデータ、つまり3番目のデータの塊であるテストセットに対してのみ、モデルの最終的なスコアを評価する理由なのです。
この手順によってのみ、モデルの品質と、まったく未知のデータで学習したことを一般化する能力の影響を受けないビューが得られることを確認できます。
関連
-
[解決済み] __init__.py は何のためにあるのですか?
-
[解決済み] パラメータに**(ダブルスター/アスタリスク)、*(スター/アスタリスク)がありますが、これはどういう意味ですか?
-
[解決済み] Pythonでコード行間にかかる時間を測定するには?
-
[解決済み] Spyderを仮想環境で動作させるには?
-
[解決済み] タプルのリストを複数のリストに変換するには?
-
[解決済み] Pythonのインスタンス変数とクラス変数
-
[解決済み] Ctrl-CでPythonスクリプトを終了できない
-
[解決済み] Pythonでマルチプロセッシングキューを使うには?
-
[解決済み] PyQtアプリケーションのスレッド化。QtスレッドとPythonスレッドのどちらを使うか?
-
[解決済み] matplotlib でプロットの軸、目盛、ラベルの色を変更する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Jupyterノートブックでenv変数を設定する方法
-
[解決済み] Djangoで2つの日付の間を選択する
-
[解決済み] Pythonの要素別タプル演算(sumなど
-
[解決済み] PythonからSMTPを使用してメールを送信する
-
[解決済み] サブフォルダからのインポートモジュール
-
[解決済み] djangoフレームワークでフォームフィールドから値を取得するには?
-
[解決済み] Pythonによる一対のクロスプロダクト [重複] (英語)
-
[解決済み] virtualenv の `--no-site-packages` オプションを元に戻す。
-
[解決済み] pycharmがタブをスペースに自動変換する
-
[解決済み] if 節の終了方法