运行代码时报错的问题是:KeyError: 'val_acc'
在用keras训练深度神经网络模型的时候出现如下问题的原因:
File "D:\anaconda\lib\site-packages\tensorflow\python\keras\", line 1330, in _get_file_path
file_path = (epoch=epoch + 1, **logs)
KeyError: 'val_acc'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "E:/Emotion Recognition/train_emotion_classifier.py", line 70, in <module>
model.fit_generator(data_generator.flow(xtrain, ytrain, batch_size),
File "D:\anaconda\lib\site-packages\tensorflow\python\util\", line 324, in new_func
return func(*args, **kwargs)
File "D:\anaconda\lib\site-packages\tensorflow\python\keras\engine\", line 1815, in fit_generator
return (
File "D:\anaconda\lib\site-packages\tensorflow\python\keras\engine\", line 108, in _method_wrapper
return method(self, *args, **kwargs)
File "D:\anaconda\lib\site-packages\tensorflow\python\keras\engine\", line 1137, in fit
callbacks.on_epoch_end(epoch, epoch_logs)
File "D:\anaconda\lib\site-packages\tensorflow\python\keras\", line 412, in on_epoch_end
callback.on_epoch_end(epoch, logs)
File "D:\anaconda\lib\site-packages\tensorflow\python\keras\", line 1249, in on_epoch_end
self._save_model(epoch=epoch, logs=logs)
File "D:\anaconda\lib\site-packages\tensorflow\python\keras\", line 1282, in _save_model
filepath = self._get_file_path(epoch, logs)
File "D:\anaconda\lib\site-packages\tensorflow\python\keras\", line 1332, in _get_file_path
raise KeyError('Failed to format this callback filepath: "{}". '
KeyError: 'Failed to format this callback filepath: "models/_mini_XCEPTION.{epoch:02d}-{val_acc:.2f}.hdf5". Reason: \'val_acc\''
解决方案:修改参数
base_path = 'models/'
trained_models_path = base_path + '_mini_XCEPTION'
model_names = trained_models_path + '.{epoch:02d}-{val_acc:.2f}.hdf5'
model_checkpoint = ModelCheckpoint(model_names,
'val_loss', verbose=1,
save_best_only=True)
把上面代码中的'.{epoch:02d}-{val_acc:.2f}.hdf5'改成'.{epoch:02d}-accuracy{accuracy:.2f}.hdf5'即可解决问题。