Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

KeyError: Failed to format this callback filepath

I am trying to obtain the validation accuracy and the choose to save the model having the best accuracy.But after the 1st epoch,it is showing the checkpoint error.

filepath="tumor_detection-{epoch:02d}-{val_acc:.2f}.hdf5"

# save the model with the best validation (development) accuracy till now
checkpoint = ModelCheckpoint(filepath, monitor='val_acc', verbose=1, save_best_only=True, mode='max')

%%time
model.fit(xtrain,ytrain,batch_size=32,epochs=30,validation_data=(xval,yval),callbacks=[checkpoint])```

It is then showing an error as follows:
Epoch 1/30
51/51 [==============================] - ETA: 0s - loss: 0.4651 - accuracy: 0.7725
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/callbacks.py in _get_file_path(self, epoch, logs)
   1243         # placeholders can cause formatting to fail.
-> 1244         return self.filepath.format(epoch=epoch + 1, **logs)
   1245       except KeyError as e:

KeyError: 'val_acc'

During handling of the above exception, another exception occurred:

KeyError                                  Traceback (most recent call last)
9 frames
<decorator-gen-60> in time(self, line, cell, local_ns)

<timed eval> in <module>()

/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/callbacks.py in _get_file_path(self, epoch, logs)
   1245       except KeyError as e:
   1246         raise KeyError('Failed to format this callback filepath: "{}". '
-> 1247                        'Reason: {}'.format(self.filepath, e))
   1248     else:
   1249       # If this is multi-worker training, and this worker should not

KeyError: 'Failed to format this callback filepath: "tumor_detection-{epoch:02d}-{val_acc:.2f}.hdf5". Reason: \'val_acc\'
like image 454
Shreyasi Ghosh Avatar asked Dec 23 '22 18:12

Shreyasi Ghosh


2 Answers

Replace both

'val_acc'

in file_path and checkpoint with

'val_accuracy'

and it will work.

like image 137
Mojtaba Abdi Khassevan Avatar answered Dec 25 '22 08:12

Mojtaba Abdi Khassevan


This is possibly a duplicate of this question.

I had the same problem when training with a smaller dataset, where the validation split for the training data was 0.

like image 42
universvm Avatar answered Dec 25 '22 08:12

universvm