2017-09-14 442 views
2

我剛開始使用Keras。我工作的樣品有模型和下面的代碼片段是用來運行模型如何解讀Keras model.fit輸出?

from sklearn.preprocessing import LabelBinarizer 
label_binarizer = LabelBinarizer() 
y_one_hot = label_binarizer.fit_transform(y_train) 

model.compile('adam', 'categorical_crossentropy', ['accuracy']) 
history = model.fit(X_normalized, y_one_hot, nb_epoch=3, validation_split=0.2) 

我得到如下回應:

Using TensorFlow backend. Train on 80 samples, validate on 20 samples Epoch 1/3 

32/80 [===========>..................] - ETA: 0s - loss: 1.5831 - acc: 
0.4062 80/80 [==============================] - 0s - loss: 1.3927 - acc: 
0.4500 - val_loss: 0.7802 - val_acc: 0.8500 Epoch 2/3 

32/80 [===========>..................] - ETA: 0s - loss: 0.9300 - acc: 
0.7500 80/80 [==============================] - 0s - loss: 0.8490 - acc: 
0.8000 - val_loss: 0.5772 - val_acc: 0.8500 Epoch 3/3 

32/80 [===========>..................] - ETA: 0s - loss: 0.6397 - acc: 
0.8750 64/80 [=======================>......] - ETA: 0s - loss: 0.6867 - acc: 
0.7969 80/80 [==============================] - 0s - loss: 0.6638 - acc: 
0.8000 - val_loss: 0.4294 - val_acc: 0.8500 

documentation說,適合的回報

歷史實例。其歷史屬性包含訓練期間收集的所有信息 。

有誰知道如何解釋歷史實例?

例如,32/80是什麼意思?我假設80是樣本的數量,但是32是什麼? ETA:0s?

回答

1

32是你的批量大小。如果您希望這樣做,32是默認值,您可以在適合的功能中進行更改。

在第一批培訓結束後,Keras會估計一個時期的培訓時間(ETA:預計到達時間),相當於您所有樣本的一輪培訓。

除此之外,您還可以獲得培訓和驗證樣本的損失(預測和真實標籤之間的差異)和您的度量(在您的情況下爲準確度)。

+0

你有什麼acc:0.4062 80/80的意思呢? acc =準確性? 80/80 80正確的80?這不意味着acc = 1.0?是否有任何地方的輸出含義的參考鏈接? – SeanJ

+0

'80/80'意思是「來自總共80個樣本的80個樣本」已經被訓練。因此,您看到的第一個條目是「32/80」,它表示:「總共80個樣本中的32個」。反過來,準確度是根據您網絡此時預測的值與您以標籤形式提供的實際值計算得出的。 – petezurich

+0

關於輸出含義的問題是一個更廣泛的問題,我恭敬地建議您查看許多教授基礎知識的課程之一,即[this this](http://course.fast.ai/)來自傑里米霍華德,這是非常方便。 – petezurich