基于MobileNetV2的犬种分类模型输入形状不兼容问题求助
问题定位与解决步骤
- 核心问题:你定义的模型输入层形状
(244,244,3)和数据集预处理时设置的图片尺寸(224,224)完全不匹配,这就是触发ValueError的直接原因,和数据集划分无关。 - 两种修复方案二选一即可:
- 修改模型输入层对齐预处理尺寸
找到初始化MobileNetV2或自定义输入层的代码,将input_shape参数修正为(224,224,3),示例代码:# 加载预训练MobileNetV2时修正输入形状 base_model = MobileNetV2(include_top=False, input_shape=(224,224,3), weights='imagenet') # 如果是自定义输入层 input_layer = tf.keras.layers.Input(shape=(224,224,3)) - 修改数据集预处理对齐模型输入层
把图片预处理流程中的resize目标尺寸改成(244,244),示例代码(以ImageDataGenerator为例):train_datagen = tf.keras.preprocessing.image.ImageDataGenerator(rescale=1./255) train_dataset = train_datagen.flow_from_directory( 'your_train_dir_path', target_size=(244,244), # 修正为模型期望的尺寸 batch_size=32, class_mode='categorical' )
- 修改模型输入层对齐预处理尺寸
- 验证修复:修改后重新构建模型,先取数据集的一个小批量数据(比如
next(iter(train_dataset)))喂给model.predict测试,确认无形状报错后,再执行model.evaluate(train_dataset)。
内容的提问来源于stack exchange,提问作者Connor Kordes
相关产品推荐
相关产品推荐

