Отсутствует val_acc после подгонки последовательной модели

#python-3.x #tensorflow #keras #neural-network

#python-3.x #тензорный поток #keras #нейронная сеть

Вопрос:

Мне не хватает информации об атрибуте ‘val_acc’, когда я подгоняю скомпилированную последовательную модель.

У меня есть последовательная модель, которая скомпилирована с показателями «точности»

 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'])
  

и я ожидаю получить информацию об атрибутах [‘acc’, ‘loss’, ‘val_acc’, ‘val_loss’] после подгонки этой нейронной сети

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

Но информация о val_acc отсутствует на индикаторе выполнения

 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
  

И это также отсутствует в истории объектов

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

Как мне получить недостающие атрибуты (‘val_acc’, ‘val_loss’) при обучении нейронной сети?

Ответ №1:

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

В вашем fit методе отсутствуют данные проверки, поэтому он не может вычислить показатели проверки.

  • Либо разделите некоторые из ваших данных поезда на набор проверки и передайте его явно через validation_data аргумент метода fit

    или

  • Используйте validation_split аргумент метода fit, чтобы использовать некоторый % ваших данных поезда в качестве данных проверки. Пример: validation_split=0.15 будет использоваться 15% ваших данных о поезде в качестве данных проверки.

Комментарии:

1. model.fit(X, Y, epochs = 100, batch_size= 10, validation_split = 0.15) работает идеально!

Ответ №2:

Для всех, кто столкнется с этим в будущем: убедитесь, что ваш генератор проверки не пуст!

В моем случае я забыл добавить данные в переменную генератора проверки и был в замешательстве довольно долгое время, задаваясь вопросом, почему я не получаю потери при проверке или точности, потому что Keras и Python молчат, даже если вы передаете генератор, который ничего не делает