2017-09-27 17 views
0

Kerasを使用してサンプルコードを実行しました。Keras出力メトリクスの解釈

model = Sequential([ 
BatchNormalization(axis=1, input_shape=(3,224,224)) 
Flatten(), 
Dense(10, activation='softmax')]) 

model.compile(Adam(lr=1e-4), loss="categorical_crossentropy", metrics=['accuracy']) 
model.fit_generator(batches, batches.nb_sample, nb_epoch=2, 
        validation_data=test_batches, nb_val_samples=test_batches.nb_sample) 

それはこの出力を与えた:

None 
Epoch 1/2 
500/500 [==============================] - 147s - loss: 2.2464 - acc: 0.3520 - val_loss: 6.4765 - val_acc: 0.1100 
Epoch 2/2 
500/500 [==============================] - 140s - loss: 0.8074 - acc: 0.7880 - val_loss: 3.8807 - val_acc: 0.1450 

私はloss, acc, val_loss, val_accの意味を見つけることができませんよ。文書への説明やリンクは参考になります。

This is私が探しているものに最も近い。上のコードでは、私はモデルをフィッティングしています。しかし、検証の正確さも与えています。どのデータセットからこの検証精度が計算されるか?

答えて

2

損失は、神経回路網を訓練するために最小限に抑える目的関数です。 lossの値は、トレーニングセット内のバッチ間の損失関数の平均値です。精度(acc)は、バッチ間の平均精度であり、トレーニングセットでも同様です。正確さは、モデルが正しく分類したデータセットのサンプルのほんの一部です。

しかし、valメトリックは、パラメータvalidation_dataに渡した完全な検証セットで計算されます。これは、トレーニング中の過適合をチェックするために行われます。

+0

ありがとうございます。これは役に立ちます。 – Netro

0
  1. あなたの最初の質問について:私は丁重にあなたがbasic mechanics of a neural networkに慣れるか、多くのMOOCsすなわちthis excellent one from fast.aiの一つに見てお勧めします。これはプログラミングに関するものではないので、このフォーラムの範囲を超えています。

  2. model.fit_generator()機能でvalidation_dataパラメータを設定して、入力したデータから検証精度を計算します。あなたの場合、方法的には正しくない可能性が高いtest_batchesに設定されています。トレーニング用、検証用(目に見えないデータに関する進捗状況を見て、ハイパーパラメータのチューニングに役立つ情報を得ること)と、テスト用の1つのデータセット(評価するためのもの)の3つのセットにデータを分割する必要があります。あなたのモデルの最終得点)。

もう1つ:nb_val_samplesはもうfit_generatorのパラメータではありません。 documentation hereを参照してください。

+0

ありがとう、私はfast.aiに従っている:)私はhttps://github.com/fastai/courses/blob/master/deeplearning1/nbs/statefarm-sample.ipynbからコードを取った。私はkeras 1.2.2を使用しています。 nb_val_samples https://faroit.github.io/keras-docs/1.2.2/models/sequential/#fit_generator – Netro

関連する問題