Ниже моя пользовательская функция обратного вызова, которую я написал, но она не работает:
class bestval(tf.keras.callbacks.Callback):
def on_train_begin(self, logs={}):
self.history={'loss': [],'acc': [],'val_loss': [],'val_acc': []}
def on_epoch_end(self, epoch, logs={}):
#appending val_acc in history
if logs.get('val_acc', -1) != -1:
self.history['val_acc'].append(logs.get('val_acc'))
# Trying to compare current epoch val_acc with all the values in self.history['val_acc']
if logs.get('val_acc')> [i for i in self.history['val_acc']]:
filepath="model_save/weights-{epoch:02d}-{val_acc:.4f}.hdf5"
# Saving the model using TF built-in callback
checkpoint = tensorflow.keras.callbacks.ModelCheckpoint(filepath=filepath,
monitor='val_acc', verbose=1, mode='auto')
bestobj= bestval()
Подгонка модели:
model.fit(xtr,ytr, epochs=4, validation_data=(xte,yte), batch_size=128, callbacks=[bestobj])
Когда я запускаю вышеупомянутое, я получаю следующее ошибка:
ValueError: Значение истинности массива с более чем одним элементом является неоднозначным. Используйте a.any () или a.all ()
Я знаю, что делаю глупости, но не знаю, как это исправить. Любая помощь будет оценена.