如何在Keras Autotuner运行结束后输出最优值及相关统计信息?
解决Keras Autotuner调参完成后输出最优值及统计信息的方法
核心实现步骤
调参完成后,可通过Keras Autotuner内置API提取最优结果,并自定义输出格式。以下是具体代码示例:
1. 运行调参并输出内置汇总
import keras_tuner as kt # 假设已定义模型构建函数build_model(tuner)及训练/验证数据 tuner = kt.Hyperband( build_model, objective="val_accuracy", max_epochs=20, factor=3, directory="my_tuning_dir", project_name="dense_layer_tuning" ) # 执行调参 tuner.search(x_train, y_train, epochs=10, validation_data=(x_val, y_val)) # 输出所有调参试验的汇总信息(内置方法,直接展示统计结果) print("=== 调参试验汇总 ===") tuner.results_summary(num_trials=10) # 指定显示前10个排名靠前的试验
2. 自定义输出“目前最优值”及详细参数
# 获取排名第一的最优超参数组合 best_hps = tuner.get_best_hyperparameters(num_trials=1)[0] # 获取对应的最优模型并评估验证集指标 best_model = tuner.get_best_models(num_trials=1)[0] val_loss, val_acc = best_model.evaluate(x_val, y_val, verbose=0) # 自定义输出最优值提示 print("\n=== 目前最优值 ===") print(f"最优验证准确率: {val_acc:.4f}") # 根据你调优的Dense层参数提取对应值,比如单元数、激活函数等 print(f"最优Dense层单元数: {best_hps.get('units')}") print(f"最优Dense层激活函数: {best_hps.get('activation')}") # 若调优了Dropout等其他参数,可同样提取 # print(f"最优Dropout率: {best_hps.get('dropout_rate')}")
3. 输出所有试验的详细统计数据
如果需要查看所有试验的完整数据,可遍历调参器的试验记录:
print("\n=== 所有试验详细数据 ===") # 获取所有试验(num_trials=-1表示全部) all_trials = tuner.oracle.get_best_trials(num_trials=-1) for idx, trial in enumerate(all_trials, start=1): print(f"\n试验 {idx} (排名: {trial.rank})") print(f"验证准确率: {trial.score:.4f}") print("超参数配置:") for hp_name, hp_val in trial.hyperparameters.values.items(): print(f" {hp_name}: {hp_val}")
关键说明
tuner.results_summary():Keras Autotuner内置的汇总方法,自动展示试验排名、超参数、指标值等统计信息,无需手动统计。get_best_hyperparameters():返回指定数量的最优超参数对象,可直接提取每个超参数的具体取值。get_best_models():返回训练好的最优模型,可直接用于评估或部署。
内容的提问来源于stack exchange,提问作者saransh rakshak
相关产品推荐
相关产品推荐

