使用Keras训练CNN时触发OSError:无法识别图片文件求助
解决Keras fit_generator报错“无法识别图像文件”但文件不存在的问题
这问题我之前帮人排查过好几次,核心原因几乎都是图像生成器的文件缓存残留,或者旧的数据集索引在捣乱!给你几个靠谱的解决步骤:
禁用
ImageDataGenerator的缓存功能
你用的flow_from_directory默认会缓存文件列表到本地,哪怕你删掉了目标文件,缓存里还存着旧路径。修改生成器代码,加上cache_subdir=None参数,强制它每次都重新扫描文件夹:train_batches = ImageDataGenerator().flow_from_directory( 'D:/PDF/Train', target_size=(224,224), classes=['factors','notfactors'], batch_size=你的批量大小, cache_subdir=None # 关键:关闭缓存 )清理Keras默认缓存文件夹
如果上面的方法没用,手动删掉Keras的图像缓存目录。Windows系统一般在C:\Users\你的用户名\.keras\datasets\下面,找到和你数据集相关的缓存文件夹直接删除就行。验证文件夹真实文件列表
有时候Windows的隐藏文件或者文件名大小写问题会误导你,打开命令提示符,运行dir D:\PDF\Train\notfactors /a(/a显示所有文件,包括隐藏的),确认这个notfactors59.jpg真的不存在。如果真的没找到,那肯定是缓存的锅。检查代码中的数据集索引缓存
如果你之前手动保存过文件列表(比如用pickle存过),记得删掉这些缓存文件,让代码重新生成新的文件索引。
内容的提问来源于stack exchange,提问作者Jordan
相关产品推荐
相关产品推荐

