Я пытаюсь создать пользовательские обратные вызовы в Keras, чтобы отслеживать точность и вызывать их в конце каждой эпохи.
class Precision(Callback):
"""
Keras Callback. Calculates precision metrics at the end of each epoch.
"""
def __init__(self):
super().__init__()
self.precisions = []
def on_train_begin(self, logs={}):
self.precisions = []
def on_epoch_end(self, epoch, logs={}):
y_pred = (np.asarray(self.model.predict(self.validation_data[0]))).round()
y_true = self.validation_data[1]
precision = precision_score(y_true, y_pred)
self.precisions.append(precision)
print("validation set precision at epoch {}: {}".format(epoch, precision))
return
# ------------
model.fit_generator(training_generator,
steps_per_epoch=(TRAIN_SIZE / BATCH_SIZE), # number of samples in the dataset
epochs=EPOCHS, # number of epochs, training cycles
validation_data=validation_generator, # performance eval on test set
validation_steps=(TEST_SIZE / BATCH_SIZE),
callbacks=[history,
precision])
Я получаю следующую ошибку:
File "/Users/user/Desktop/cnn_toolkit.py", line 68, in on_epoch_end
y_pred = (np.asarray(self.model.predict(self.validation_data[0]))).round()
TypeError: 'NoneType' object is not subscriptable
Явыполнение обучения (Inception V3) и использование функционального объекта Keras Model.Я пытался обновить tenorflow, собирая его из исходного кода, пробовал также self.model.validation_data
, который все еще не работает.Искал ответ на это везде и не могу найти ничего, что конкретно решит мою проблему.У меня Keras 2.2.4.