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 驱动器上的可用存储空间了吗?如果存储空间不足,则无法保存。
我一直在尝试训练我的皮肤类型分类模型,但它显示错误。
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 驱动器上的可用存储空间了吗?如果存储空间不足,则无法保存。