KeyError: 'Failed to format this callback filepath: "skintype_64_rmsprop_{val_loss:.3f}.h5". Reason: \'val_loss\''

KeyError: 'Failed to format this callback filepath: "skintype_64_rmsprop_{val_loss:.3f}.h5". Reason: \'val_loss\''

我一直在尝试训练我的皮肤类型分类模型,但它显示错误。

model_name = f"skintype_{batch_size}_{optimizer}"
tensorboard = tf.keras.callbacks.TensorBoard(log_dir=os.path.join("logs", model_name))
# saves model checkpoint whenever we reach better weights
modelcheckpoint = tf.keras.callbacks.ModelCheckpoint(model_name + "_{val_loss:.3f}.h5", save_best_only=True, verbose=1)

history = m.fit(train_ds, validation_data=valid_ds, 
                steps_per_epoch=n_training_samples // batch_size, 
                validation_steps=n_validation_samples // batch_size, verbose=1, epochs=30,
                callbacks=[tensorboard, modelcheckpoint])

我对 Keras 一无所知,我只是简单地看了一下你的代码,但我想我明白了问题所在。在行中:

modelcheckpoint = tf.keras.callbacks.ModelCheckpoint(model_name + "_{val_loss:.3f}.h5", save_best_only=True, verbose=1)

Keras 正在抱怨 val_loss。我敢打赌,您希望包含该引用 ("_{val_loss:.3f}.h5") 的格式字符串在其前面有一个 f,以便在将引用传递到 [=15= 之前,该引用会被解释并替换为一个值].我认为你只需要添加一个字符就可以克服这个障碍:

modelcheckpoint = tf.keras.callbacks.ModelCheckpoint(model_name + f"_{val_loss:.3f}.h5", save_best_only=True, verbose=1)

我希望我是对的,希望这些知识能让你再次航行。

您在 model.compile() 中提到的指标也可能存在问题。

例如,我的模型检查点是这样的

path = "ops/model-{epoch:02d}-{val_categorical_accuracy:.2f}.hdf5"
checkpoint = ModelCheckpoint(filepath = path ,monitor ='val_categorical_accuracy',save_best_only=True,save_weights_only=True,mode='max',shuffle=True,verbose = 1,save_freq='epoch')

我的 model.compile() 看起来像这样:

model.compile(loss='binary_crossentropy',optimizer='adam',metrics=[tf.keras.metrics.CategoricalAccuracy()])

keras 与 val_loss 有问题的最可能原因是您在编译时没有正确提及指标。

您检查过 Google 驱动器上的可用存储空间了吗?如果存储空间不足,则无法保存。