回答:
val_loss
は交差検定データのコスト関数の値であり、損失はトレーニングデータのコスト関数の値です。検証データでは、ドロップアウトを使用するニューロンはランダムなニューロンをドロップしません。その理由は、トレーニング中に、過剰適合を避けるためにノイズを追加するためにドロップアウトを使用するためです。相互検証の計算中、トレーニング段階ではなく、リコール段階にあります。ネットワークのすべての機能を使用します。
私たちの親愛なる友人の一人のおかげで、ここからの有用な内容を引用して説明します。
validation_split
:0から1の間で浮動します。検証データとして使用されるトレーニングデータの割合。モデルはトレーニングデータのこの部分を分離し、トレーニングを行わず、各エポックの終わりにこのデータの損失とモデルメトリックを評価します。検証データは、シャッフルする前に、提供されたxおよび yデータの最後のサンプルから選択されます。
validation_data
:各エポックの終わりに損失とモデルメトリックを評価するタプル(x_val、y_val)またはタプル(x_val、y_val、val_sample_weights)。モデルはこのデータでトレーニングされません。これはvalidation_splitをオーバーライドします。
ご覧のように
fit(self, x=None, y=None, batch_size=None, epochs=1, verbose=1, callbacks=None, validation_split=0.0, validation_data=None, shuffle=True, class_weight=None, sample_weight=None, initial_epoch=0, steps_per_epoch=None, validation_steps=None)
fit
で使用されるmethodにKeras
はvalidation_splitという名前のパラメーターがあり、各エポック後に作成されるモデルの評価に使用されるデータの割合を指定します。このデータ量を使用してモデルを評価した後、val_loss
verboseをに設定した場合に報告されます1
。さらに、ドキュメントで明確に指定されているように、validation_data
またはのいずれかを使用できますvalidation_split
。交差検定データは、モデルがデータに適合しているかどうかを調査するために使用されます。これは、モデルに一般化機能があるかどうかを理解できることです。
dropout
いないNone
)場合、ドロップアウトはトレーニング中にのみ適用される(つまり、検証中にドロップアウトが適用されない)ということです。そのため、検証損失(val_loss
)とトレーニング損失(loss
)の違いの1つは、ドロップアウトを使用する場合、検証損失がトレーニング損失よりも低くなる可能性があることです(通常、ドロップアウトを使用しない場合は予想されません)。