TensorFlow猫狗分类卷积神经网络调用model.fit训练报错问题求解
问题根源
- 依赖环境不匹配:你运行代码使用的是CNNconda虚拟环境,你所谓的「已安装SciPy」大概率是安装到了base环境或其他Python环境中,当前运行代码的环境未正确安装适配版本的SciPy,导致
keras_preprocessing模块加载依赖失败。 - 路径写法不规范:代码中使用单反斜杠
\定义Windows路径,反斜杠是Python默认转义符,后续运行也可能触发路径找不到的错误。 fit_generator弃用警告属于版本迭代提示,不是触发报错的核心原因,替换为model.fit即可消除该警告。
解决步骤
- 验证并修复SciPy安装问题
打开Spyder当前项目对应的IPython控制台,依次执行以下操作:
- 先验证当前环境是否真的安装了SciPy:运行代码
import scipy; print(scipy.__version__)- 如果执行报错:说明当前CNN环境确实未安装SciPy,直接在控制台运行
!pip install scipy,或者打开Anaconda Prompt激活CNN环境后执行conda install scipy完成安装。 - 如果能正常输出版本号:说明
keras_preprocessing和SciPy版本不兼容,运行!pip install --upgrade keras_preprocessing scipy升级两个依赖即可解决适配问题。
- 如果执行报错:说明当前CNN环境确实未安装SciPy,直接在控制台运行
- 修正路径写法
将代码中两个路径修改为原始字符串格式,避免转义问题:
train_dir = r"C:\Users\Nicholai\Desktop\dogs-vs-cats\small\train" validation_dir = r"C:\Users\Nicholai\Desktop\dogs-vs-cats\small\val"
- 替换训练调用方法
完全保留原有参数,将model.fit_generator替换为model.fit即可消除弃用警告:
history = model.fit( train_generator, steps_per_epoch = train_generator.n // im_per_batch, epochs=num_epochs, validation_data = validation_generator, validation_steps = validation_generator.n // im_per_batch)
- 统一导入逻辑
将加载模型的导入语句修改为和前文具名导入一致的写法,避免不同包版本冲突:
from tensorflow.keras.models import load_model
内容的提问来源于stack exchange,提问作者Nicholai Mørch Rindarøy
相关产品推荐
相关产品推荐

