运行keras-tuner的tuner.search时触发AttributeError问题求助
解决方案
问题根源
keras-tuner 1.4.7 与 TensorFlow 2.16.1 存在版本兼容性冲突,TensorFlow 2.16 的内部 API 变动导致 keras-tuner 在保存调参状态时触发空对象调用错误,同时 epoch 提前终止也是兼容性异常的表现。
具体解决步骤
方案1:降级 TensorFlow 到兼容版本
这是最直接有效的解决方式,keras-tuner 1.4.7 对 TensorFlow 2.15.x 版本支持更稳定:
- 卸载当前 TensorFlow:
pip uninstall tensorflow -y - 安装兼容版本:
pip install tensorflow==2.15.0
方案2:升级 keras-tuner 到适配新版本的稳定版
尝试更新 keras-tuner 到官方修复过兼容性问题的版本:
- 卸载旧版本:
pip uninstall keras-tuner -y - 安装最新稳定版:
pip install keras-tuner --upgrade
注意:如果升级后仍存在异常,优先选择方案1,因为部分新版本适配可能滞后于 TensorFlow 的更新。
方案3:临时路径规避(无需改版本)
如果暂时不想调整版本,可通过指定绝对路径避免 Windows 下的路径解析问题:
在调用 tuner.search() 时,显式设置调参日志的存储路径,确保路径为无特殊字符的绝对路径:
tuner.search( x_train, y_train, epochs=你的目标epoch数, validation_data=(x_val, y_val), directory=r"C:\keras_tuner_cache", # 使用原始字符串避免转义问题 project_name="tuning_demo" )
验证步骤
调整完成后重新运行代码,确认:
- 每个调参尝试能正常跑完你指定的 epoch 数
- 不再出现
AttributeError: 'NoneType' object has no attribute 'File'错误
内容的提问来源于stack exchange,提问作者kyasz
相关产品推荐
相关产品推荐

