Keras中InceptionV3的input_shape参数报错,求解决及版本相关信息
问题分析与解决方法
报错原因
报错明确指出input_shape必须是三个整数的元组,你的代码中IMAGE_SIZE + [3]生成的是列表类型,而新版本的Keras(尤其是Keras 3.x及整合后的TensorFlow Keras)对input_shape的类型校验更严格,不再接受列表作为输入;另外如果IMAGE_SIZE本身不是包含两个整数的可迭代对象(比如元组/列表),也会导致拼接后的结构不符合要求。
解决方法
- 转换为元组类型:将拼接后的列表转为元组,修改代码如下:
inception = InceptionV3(input_shape=tuple(IMAGE_SIZE + [3]), weights='imagenet', include_top=False) - 直接构造元组:更直观的写法,避免类型问题:
# 确保IMAGE_SIZE是类似(224,224)的结构 inception = InceptionV3(input_shape=(IMAGE_SIZE[0], IMAGE_SIZE[1], 3), weights='imagenet', include_top=False) - 确认IMAGE_SIZE的有效性:检查
IMAGE_SIZE是否定义为两个整数的集合,比如:IMAGE_SIZE = (224, 224) # 正确示例
版本相关说明
在Keras 2.x版本中,部分场景下允许列表作为input_shape参数,但从Keras 3.x开始(包括TensorFlow 2.15+集成的Keras),框架对输入参数的类型校验更加严格,明确要求input_shape为元组类型,这是版本更新带来的兼容性变化。
内容的提问来源于stack exchange,提问作者CLnot16
相关产品推荐
相关产品推荐

