2017-09-27 89 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,這在方法上很可能不正確。您需要將您的數據分爲三組:一組用於培訓,一組用於驗證(通過查看您的培訓關於未看到的數據的進度以及獲取調整超參數的有用信息)以及一組用於測試(評估你的模型的最終得分)。

還有一件事: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