Search code examples
python-3.xtensorflowkerasneural-network

Missing val_acc after fitting sequential model


I am missing information about the 'val_acc' attribute when I fit a compiled sequential model.

I have a sequential model that is compiled with 'accuracy' metrics

model = Sequential()
model.add(Dense(12, input_dim=8, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

and I expect to get info about ['acc', 'loss', 'val_acc', 'val_loss'] attributes after fitting this neural network

history = model.fit(X, Y, epochs=100, batch_size=10)

But the information about val_acc is missing on the progress bar

Epoch 14/100
768/768 [==============================] - 0s 212us/step - loss: 0.4356 - acc: 0.7969
Epoch 15/100
768/768 [==============================] - 0s 219us/step - loss: 0.4388 - acc: 0.8034
Epoch 16/100
768/768 [==============================] - 0s 220us/step - loss: 0.4398 - acc: 0.7956

And it's missed also in object history

>>> print (history.history.keys())
dict_keys(['loss', 'acc'])

How do I get the missing attributes ('val_acc', 'val_loss') when training a neural network?


Solution

  • history = model.fit(X, Y, epochs=100, batch_size=10)

    Validation data is missing in your fit method, so it has no way to calculate validation metrics.

    • Either split some of your train data into validation set and pass it explicitly via validation_data argument of fit method

      or

    • Use validation_split argument of fit method to use some % of your train data as validation data. Example: validation_split=0.15 will use 15% of your train data as validation data.