AutoKeras长时实验实用技巧:中断恢复、搜索预算控制与常见问题FAQ清单
【免费下载链接】autokerasAutoML library for deep learning项目地址: https://gitcode.com/gh_mirrors/au/autokeras
AutoKeras 是基于 Keras 的 AutoML 深度学习库,支持图像、文本和结构化数据的自动模型搜索。长时实验(默认最多 100 次模型试验)常遇到中断、超预算、选模困惑等问题。本文整理 6 条 AutoKeras 长时实验实用技巧:如何用overwrite参数一键中断恢复、用max_trials与epochs控制搜索预算、4 种 Tuner 怎么选,以及一份常见问题 FAQ 清单。
为什么长时实验容易"翻车"?
AutoKeras 的搜索过程会:
- 依次尝试多个不同超参数组合的模型(称为 trial);
- 每个 trial 都进行训练,并用早停(EarlyStopping)加速探索;
- 搜索结束后,将最优模型用全部数据完整重训一次再保存。
整个过程由 autokeras/engine/tuner.py 中的search方法驱动。数据量大、trial 多时,跑几个小时甚至几天都很常见——所以中断恢复和预算控制是实战必备技能。
技巧一:中断恢复(一键续跑长时搜索)
核心参数:overwrite(默认False)
overwrite=False:发现同名项目目录时,不覆盖,自动加载已有进度,继续之前被中断的搜索;overwrite=True:清空重来,开启全新搜索。
💡 也就是说,任务被 kill 掉、机器重启、网络断开之后,只需重新运行同一段代码,AutoKeras 会自动从上次的断点继续,不会丢失已完成的 trial。
import autokeras as ak # overwrite 默认 False:重跑同一代码即可续跑 clf = ak.ImageClassifier(max_trials=100) clf.fit(x_train, y_train)相关参数定义见 autokeras/tasks/image.py,所有任务 API(TextClassifier、StructuredDataClassifier等)和 autokeras/auto_model.py 中的AutoModel均支持。
配套建议:
| 场景 | 做法 |
|---|---|
| 想续跑旧实验 | 保持project_name不变,overwrite=False重跑 |
| 想推倒重来 | overwrite=True |
| 实验目录指定在哪 | directory="my_experiments",避免散落在当前目录 |
技巧二:搜索预算控制(时间与 trial 双限流)
长时实验最贵的是时间。三个关键"阀门":
1️⃣max_trials:控制试验次数
默认 100 个 trial,可按数据规模和算力调小:
clf = ak.ImageClassifier(max_trials=20) # 小数据集建议 10~302️⃣epochs:控制每个 trial 的训练轮数
- 不传
epochs时,AutoKeras 最多训 1000 轮,但验证损失 10 轮不提升就早停; - 搜索结束后,最优模型会按"最佳 trial 所用轮数"完整重训(见 autokeras/engine/tuner.py 的
_get_best_trial_epochs)。
3️⃣max_model_size:防止搜索出超大模型
限制模型参数量上限,避免某些 trial 因模型太大拖慢整个实验。
Tuner 选择:影响预算消耗速度
AutoModel支持 4 种 Tuner(映射表见 autokeras/auto_model.py):
| Tuner | 适用场景 | 预算敏感度 |
|---|---|---|
greedy(默认) | 通用,收敛稳 | 中 |
bayesian | 预算较少、要高效利用 trial | 低(省 trial) |
hyperband | 想快速剪掉差模型 | 低(省时间) |
random | 基线对照、调试 | 高 |
任务 API 默认使用"任务专属 Tuner"——先评估该任务最常用的模型,再探索其他模型,见 autokeras/tuners/task_specific.py。自定义 Tuner 可继承 autokeras/engine/tuner.py 中的AutoTuner。
技巧三:用 objective 让"好模型"定义更准
默认按val_loss选最优模型,但业务上更常看准确率等指标:
clf = ak.ImageClassifier( max_trials=30, objective="val_accuracy", metrics=["val_accuracy"], )objective支持任意验证指标名(如'val_auc'),带val_前缀;- 自定义指标可封装成 Keras Tuner 的 Objective 传入,示例见官方 FAQ:docs/templates/tutorial/faq.md。
小提示:换指标时保持
metrics与objective一致,日志里才能对照看到目标指标的变化。
技巧四:跑完自动取最优模型与管线
搜索结束后,产物都在项目目录下:
best_model.keras:完整重训后的最优模型(路径属性见 autokeras/engine/tuner.py);best_pipeline:与最优模型配套的数据预处理管线,预测时务必使用,保证训练/推理一致。
clf.fit(x_train, y_train) best_model = clf.tuner.get_best_model() best_pipeline = clf.tuner.get_best_pipeline()FAQ 常见问题清单
Q1:任务被杀掉了,怎么续跑?重跑同一代码即可。overwrite默认False,AutoKeras 自动加载同名项目并继续。官方说明见 docs/templates/tutorial/faq.md。
Q2:怎么自定义 metrics 和 loss?直接传给任务 API:ak.ImageClassifier(metrics=['mse'], loss='mse')(见 docs/templates/tutorial/faq.md)。
Q3:怎么用自定义指标(如 F1)选最优模型?自定义函数 +kerastuner.Objective('val_f1_score', direction='max')传入objective,同时加入metrics(示例见 docs/templates/tutorial/faq.md)。
Q4:搜索为什么比预期慢?检查三点:max_trials是否过大、epochs是否没限制、数据是否需要抽样调试。先用小max_trials+ 抽样数据验证流程,再上满预算。
Q5:project_name和directory有什么区别?project_name是实验名(续跑匹配依据),directory是项目目录父路径。两者一致才能保证续跑命中同一实验。
Q6:环境要求是什么?Python >= 3.7,TensorFlow >= 2.8.0,安装方式为pip3 install autokeras(见 README.md)。
长时实验检查清单 ✅
project_name固定不变(续跑的前提)max_trials按预算设置,默认 100 通常偏大- 明确
objective,与业务指标对齐 directory指向有足够磁盘的空间- 非交互环境下用
verbose=2(逐行日志,适合重定向到文件) - 搜索结束后记得用
best_pipeline做数据变换再预测
更多可运行示例可参考 examples/ 目录(如 examples/cifar10.py、examples/imdb.py),批量评估基准见 benchmark/performance.py。
【免费下载链接】autokerasAutoML library for deep learning项目地址: https://gitcode.com/gh_mirrors/au/autokeras
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考