Как интерпретировать вывод Keras model.fit?
Я только начал использовать Keras. Образец, над которым я работаю, имеет модель, и следующий фрагмент используется для запуска модели
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
В документации говорится, что возвращение возвращается
Случай истории. Его атрибут истории содержит всю информацию, собранную во время обучения.
Кто-нибудь знает, как интерпретировать экземпляр истории?
Например, что означает 32/80? Я предполагаю, что 80 - это количество образцов, но что такое 32? ETA: 0s??
Ответы
Ответ 1
ETA = предполагаемое время прибытия.
80
- это размер вашего обучающего набора, 32/80
и 64/80
означают, что размер вашей партии равен 32, и в настоящее время обрабатывается первая партия (или вторая партия соответственно).
loss
и acc
относятся к текущим потерям и точности обучающего набора.
В конце каждой эпохи ваш обученный NN сравнивается с вашим проверочным набором. Это то, на что ссылаются val_loss
и val_acc
.
Объект истории, возвращаемый model.fit()
, представляет собой простой класс с некоторыми полями, например, ссылка на model
, диктат params
и, самое главное, диктат history
. Он хранит значения loss
и acc
(или любой другой используемый показатель) в конце каждой эпохи. Для 2 эпох это будет выглядеть так:
{
'val_loss': [16.11809539794922, 14.12947562917035],
'val_acc': [0.0, 0.0],
'loss': [14.890108108520508, 12.088571548461914],
'acc': [0.0, 0.25]
}
Это очень удобно, если вы хотите визуализировать свой прогресс в обучении.
Примечание. Если ваша потеря/точность проверки начинает увеличиваться, в то время как ваша потеря/точность обучения все еще снижается, это показатель переобучения.
Примечание 2: в самом конце вы должны протестировать свой NN по какому-либо тестовому набору, который отличается от вашего тренировочного набора и проверочного набора и, следовательно, никогда не затрагивался в процессе обучения.
Ответ 2
32
- ваш размер партии. 32 - это значение по умолчанию, которое вы можете изменить в своей подходящей функции, если вы этого хотите.
После обучения первой партии Keras оценивает продолжительность обучения (ETA: расчетное время прибытия) одной эпохи, что эквивалентно одному раунду обучения со всеми вашими образцами.
В дополнение к этому вы получаете потери (разницу между предсказанием и истинными метками) и ваш показатель (в вашем случае точности) как для обучения, так и для образцов проверки.