You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VGG16迁移学习建模时出现NameError: name 'scipy' is not defined

报错原因

这个NameError: name 'scipy' is not defined报错和数据集、VGG16模型本身无关,核心原因是你当前pyenv管理的Python 3.9.7环境里没有安装scipy依赖库。Keras自带的ImageDataGenerator执行图像预处理的仿射变换逻辑时强依赖scipy,环境里缺这个包就会在启动训练、走到预处理逻辑时抛出未定义错误。
你没看到教程里展示的预训练权重下载流程是正常的:本地已经缓存过VGG16的预训练权重文件,不需要重复下载。

解决方法
  • 先在当前pyenv的3.9.7环境下安装scipy依赖,考虑到你是M1芯片+Python3.9的环境,直接安装兼容性最好的1.7.3版本即可,终端执行命令:
    pip install scipy==1.7.3
  • 你代码里用的model.fit_generator已经在新版Keras里被弃用了,直接把这部分替换成model.fit就行,功能完全一致,改完的训练代码段如下:
hist = model.fit(train_data,
steps_per_epoch=1600//batch_size,
epochs=25,
validation_data= test_data,
validation_steps=800//batch_size)
  • 等训练跑完,你要导出.json格式的模型结构和.h5格式的权重的话,在代码末尾加这几行就行:
# 导出模型结构为json文件
model_structure = model.to_json()
with open("fruit_classify_model.json", "w") as f:
    f.write(model_structure)
# 导出模型权重为h5文件
model.save_weights("fruit_classify_weight.h5")
其他说明

日志里提示的pyenv: shell integration not enabled不影响当前脚本运行,如果之后需要用pyenv快速切换终端默认Python版本,执行pyenv init按照终端给出的提示修改shell配置文件即可。

内容的提问来源于stack exchange,提问作者Atakan Sever

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 02:15:26