如果你使用Keras 的ImageDataGenerator来进行图像增强,如下:
validataion_generator = validation_datagen.flow_from_directory(validation_dir,
target_size=target_size,
batch_size=batch_size,
class_mode='categorical',
subset="validation")
并且你的训练集和验证集是不同的2个文件夹,又要求保存的模型文件名中包含该模型在验证集上面的loss,那么很可能会出现题目中所描述的错误:
Keras:KeyError:'Failed to format this callback filepath:{val_loss:.4f}.h5. Reason: \'val_loss\''
这时,你只需要删除subset参数即可,subset参数一般用在训练和验证是一批数据,且已经传入validation_split进行数据划分,才需要定义subset,具体修改如下:
validataion_generator = validation_datagen.flow_from_directory(validation_dir,
target_size=target_size,
batch_size=batch_size,
class_mode='categorical')
重新运行程序,就不会报错,正常训练了!