使用Keras Tuner调优时报Unknown metric val_accuracy错误如何解决
问题解决
问题原因
- 核心为旧版本Keras Tuner对字符串格式的验证集指标名存在解析兼容缺陷,即使训练过程中可正常输出
val_accuracy数值,调优器在后处理阶段依然无法识别该指标,抛出未知指标错误。
解决方法
你可以按优先级选择以下方案:
- 显式声明优化目标对象(优先推荐,无需修改其他逻辑)
在导入部分新增Objective的导入:
from kerastuner import Objective
修改Tuner初始化时的objective参数,替换字符串为显式的目标对象:
tuner = CustomTuner( create_model, objective=Objective("val_accuracy", direction="max"), max_trials = 20, directory= 'logs', project_name='fashion_minist', overwrite=True, )
- 适配新版Keras Tuner包命名
当前新版Keras Tuner包名已从kerastuner改为keras_tuner,旧版包不再维护更新,修改导入语句即可解决大部分兼容问题:
# 把原来的import kerastuner替换为以下语句 import keras_tuner as kerastuner
- 临时兼容旧版本
如果以上方案都无法生效,可将模型编译时的指标名和调优目标统一改为旧版写法:
- 模型compile部分修改为
metrics=['acc'] - Tuner的objective参数修改为
objective='val_acc'
内容的提问来源于stack exchange,提问作者Bruno Messias
相关产品推荐
相关产品推荐

