报错name 'datasets' is not defined,请求技术问题排查与解决
解决
name 'datasets' is not defined报错问题 嘿,这个报错的原因其实很直白——你在代码里调用了datasets.read_train_sets(),但你的代码里既没有导入名为datasets的模块,也没有自己定义这个对象,Python找不到它,自然就抛出这个错误了。
下面给你两种实用的解决思路:
思路1:找回教程配套的datasets模块
很多图像分类的网络教程会自己写一个自定义的datasets.py脚本,用来封装读取本地图像数据集的逻辑。你需要:
- 回到你参考的那个教程,找到配套的
datasets.py文件 - 把这个文件放到你的代码文件同一个目录下,或者确保它在Python的搜索路径里
- 在代码开头添加导入语句:
import datasets - 另外,你的代码里还没定义
img_size变量,记得补上(比如img_size = 128,根据你需要的图像尺寸调整)
思路2:用Keras自带工具替代(更通用推荐)
如果找不到教程里的自定义模块,直接用Keras内置的ImageDataGenerator来读取本地数据集是更稳妥的方案,代码示例如下:
首先添加必要的导入:
from keras.preprocessing.image import ImageDataGenerator
然后替换掉data = datasets.read_train_sets(...)这部分代码:
# 先定义图像尺寸,根据你的需求调整 img_size = 128 # 训练数据生成器,支持数据增强提升模型泛化能力 train_datagen = ImageDataGenerator( rescale=1./255, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, validation_split=0.2 # 直接从训练集拆分出20%作为验证集 ) # 读取训练集(注意你的train_path下需要有dogs、cats两个子文件夹,每个文件夹放对应类别的图片) training_set = train_datagen.flow_from_directory( train_path, target_size=(img_size, img_size), batch_size=batch_size, class_mode='binary', subset='training' # 指定为训练集 ) # 读取验证集 validation_set = train_datagen.flow_from_directory( train_path, target_size=(img_size, img_size), batch_size=batch_size, class_mode='binary', subset='validation' # 指定为验证集 )
这样你就可以直接用training_set和validation_set来训练模型了,完全不用依赖那个自定义的datasets模块。
内容的提问来源于stack exchange,提问作者Jalaluddin Rumi
相关产品推荐
相关产品推荐

