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这边是用目录树来分和打标签的,所以目录树要改成这样的标准形式

在这里插入图片描述

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

运行就不会有问题了

  • 16
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值