You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Keras-tuner超参数调优时val_accuracy缺失报错的原因与解决方法

问题原因

核心是指标名称不匹配:

  • 你在model.compile()里指定的评估指标是categorical_accuracy,Keras训练时输出的验证集指标会自动加上val_前缀,实际生成的指标名为val_categorical_accuracy
  • 你初始化Keras Tuner的RandomSearch时,objective参数填的是val_accuracy,和实际输出的指标名不一致,因此Tuner找不到要优化的目标,触发了ValueError,同时训练过程中保存最优模型的逻辑也因为找不到val_accuracy抛出了警告。
解决方案

两种方案二选一即可:

方案1:修改Tuner的objective参数

把RandomSearch里的objective值改成和实际输出匹配的val_categorical_accuracy:

tuner = RandomSearch(
    _model,
    objective="val_categorical_accuracy", # 替换为实际生成的指标名
    max_trials=10,
    overwrite=True,
    directory="tuner_random_directory",
    project_name="tuner_random_project_name",
)

方案2:修改模型编译时的metrics参数

把model.compile()里的metrics改成"accuracy",Keras会根据损失函数和输出格式自动匹配对应的精度计算逻辑,此时验证集指标名就是val_accuracy,和你原来的objective参数匹配:

model.compile(
    optimizer=tf.keras.optimizers.SGD(
        hp.Choice("learning_rate", values=[1e-1, 1e-2, 1e-3])
    ),
    loss="categorical_crossentropy",
    metrics="accuracy" # 替换为accuracy
)

内容的提问来源于stack exchange,提问作者user366312

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 16:24:03