Asked to retrieve element 0, but the Sequence has length 0 解决

问题现象

这个问题是这样的,在用Keras做一个极为简单的图像分类时候,我使用ImageDataGenerator构建了图片的预处理模型,用函数flow_from_directory来获取文件夹中的所有图片,然后使用函数fit_generator 去读取,这个时候出现model.fit_generator(train_generator, 这个位置报错  ,提示Asked to retrieve element 0, but the Sequence has length 0

 

部分代码如下:

train_datagen = ImageDataGenerator(rescale=1./255,
                                   shear_range=0.7,
                                   zoom_range=0.7,
                                   horizontal_flip=True)

test_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(train_path,
                                                    target_size=(64,64),
                                                    batch_size=6,
                                                    class_mode='binary')

validation_generator = test_datagen.flow_from_directory(test_path,
                                                        target_size=(64,64),
                                                        batch_size=6,
                                                        class_mode='binary')

# 这里报错
model.fit_generator(train_generator,
                    steps_per_epoch=18,   #训练数据的数量除以batch_size,108/6=18
                    epochs=200,   #训练迭代次数
                    validation_data=validation_generator,
                    validation_steps=200)

 

问题解决流程

在出现错误提示后,我看了一下终端的提示:Please use Model.fit, which supports generators.     这个意思就是让我使用新的model.fit 这个函数,我的是比较新的keras,fit_generator是旧版本使用的

 

那么就把

model.fit_generator(train_generator,

改成

model.fit(train_generator,

但是还是出错,但这下终端的提示变成了:Found 0 images belonging to 0 classes. 意思是找到0个分类,因为keras这边是用目录树来分和打标签的,所以目录树要改成这样的标准形式

Asked to retrieve element 0, but the Sequence has length 0 解决_第1张图片

所以,根据这个规范,我们要把文件夹改成这样使用类型名称来命名,把图片全部都装进去

Asked to retrieve element 0, but the Sequence has length 0 解决_第2张图片

运行就不会有问题了

Asked to retrieve element 0, but the Sequence has length 0 解决_第3张图片

你可能感兴趣的:(AI,日常问题,图片识别,Keras)