我一直在尝试训练我的皮肤类型分类模型,但它显示出错误。
model_name = f"skintype_{batch_size}_{optimizer}"tensorboard = tf.keras.callbacks.TensorBoard(log_dir=os.path.join("logs", model_name))# 每当我们达到更好的权重时保存模型检查点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
,这样引用会在传递给 ModelCheckpoint
之前被解释并替换为一个值。我认为你只需要添加一个字符就能克服这个障碍:
modelcheckpoint = tf.keras.callbacks.ModelCheckpoint(model_name + f"_{val_loss:.3f}.h5", save_best_only=True, verbose=1)
我希望我是对的,并且这个知识能让你再次顺利进行。