Как интерпретировать вывод 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: расчетное время прибытия) одной эпохи, что эквивалентно одному раунду обучения со всеми вашими образцами.

В дополнение к этому вы получаете потери (разницу между предсказанием и истинными метками) и ваш показатель (в вашем случае точности) как для обучения, так и для образцов проверки.