Как получить точность модели, используя керас? - PullRequest
0 голосов
/ 26 июня 2018

После подгонки модели (которая работала пару часов) я хотел получить точность с помощью следующего кода:

train_loss=hist.history['loss']
val_loss=hist.history['val_loss']
train_acc=hist.history['acc']
val_acc=hist.history['val_acc']
xc=range(nb_epoch)

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

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-233-081ed5e89aa4> in <module>()
      3 train_loss=hist.history['loss']
      4 val_loss=hist.history['val_loss']
----> 5 train_acc=hist.history['acc']
      6 val_acc=hist.history['val_acc']
      7 xc=range(nb_epoch)

KeyError: 'acc'

Код, который я использовал для подбора модели перед попыткой определения точности, следующий:

hist = model.fit(X_train, Y_train, batch_size=batch_size, nb_epoch=nb_epoch,
            verbose=1, validation_data=(X_test, Y_test))


hist = model.fit(X_train, Y_train, batch_size=batch_size, nb_epoch=nb_epoch, 
            verbose=1, validation_split=0.2)

, который выдает этот вывод при запуске:

Epoch 1/20
237/237 [==============================] - 104s 440ms/step - loss: 6.2802 - val_loss: 2.4209
    .....
    .....
    .....
Epoch 19/20
    189/189 [==============================] - 91s 480ms/step - loss: 0.0590 - val_loss: 0.2193
    Epoch 20/20
    189/189 [==============================] - 85s 451ms/step - loss: 0.0201 - val_loss: 0.2312

Я заметил, что я использую устаревшие методы и аргументы.

Так как же я могу прочитать точность и val_accuracy без необходимости повторной подгонки и ожидания еще пару часов? Я пытался заменить train_acc=hist.history['acc'] на train_acc=hist.history['accuracy'], но это не помогло.

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018
  1. добавить метрику = ['точность'] при компиляции модели

  2. просто получите точность последней эпохи. hist.history.get ( 'согласно') [- 1]

  3. на самом деле я бы использовал GridSearchCV, а затем получил параметр best_score_ для печати лучших метрик

0 голосов
/ 26 июня 2018

Вы, вероятно, не добавили "acc" в качестве метрики при компиляции модели.

model.compile(optimizer=..., loss=..., metrics=['accuracy',...])

Вы можете получить показатели и потери из любых данных без повторного обучения с помощью:

model.evaluate(X, Y)
...