Keras Tuner报错Tensor shape不兼容 新建项目正常原因求解
报错原因及解决方案
核心原因
该形状不匹配报错是Keras Tuner本地缓存冲突导致的:
- Keras Tuner首次运行调参任务时,会默认在当前工作目录生成
./untitled_project缓存文件夹,存储当时的模型结构定义、调参历史记录 - 你后续调整了Dense层的输出维度(旧版本代码第一个Dense层输出为15,修改后为18),但旧缓存未被清理,Tuner读取旧缓存中的模型结构定义和新代码的定义冲突,就会触发形状不匹配报错
- 完全新建项目时工作目录没有旧缓存,会重新生成对应结构记录,因此运行正常
附带代码问题
你贴出的代码存在逻辑缺陷:自编码器的输出层维度需要和输入维度对齐,当前输出层为Dense(10),但输入维度是20,你采用MSE作为损失函数和输入做拟合的话,输出维度需要等于输入维度20,否则后续也会触发形状不匹配问题。
解决方案
- 每次修改模型结构后,先删除当前工作目录下的
untitled_project缓存文件夹,再重新运行调参任务即可 - 也可以在初始化
kt.Hyperband时指定overwrite=True参数,强制每次运行都覆盖旧缓存,避免冲突,示例如下:
tuner = kt.Hyperband( self.build_auto_encoder_model, objective='val_loss', max_epochs=30, hyperband_iterations=20, overwrite=True # 新增该参数强制覆盖旧缓存 )
内容的提问来源于stack exchange,提问作者OmG
相关产品推荐
相关产品推荐

