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

Keras使用flow_from_dataframe加载数据时报FileNotFound错误如何解决

错误原因
  • 参数拼写错误:调用flow_from_dataframe方法时,将必填参数directory错误拼写为diretory,缺少字母c,导致Keras无法识别根目录参数,拼接文件路径时仅使用DataFrame中存储的文件名,没有补充根目录前缀,最终找不到对应文件。
  • 关闭了文件名校验:你设置了validate_filenames=False,生成器初始化阶段不会校验文件路径有效性,因此初始化时不会抛出错误,直到模型训练阶段实际读取文件才会触发异常。这也是当你将validate_filenames设为True时,代码会在初始化阶段直接报错的核心原因。
  • 附加排查项:如果修正拼写后仍报错,需要确认base_folder路径是否正确指向图片存储的根目录,以及DataFrame的files列是否仅存储文件名,没有多余的路径前缀、空格或格式错误。
解决方案
  1. 修正参数拼写,将两处diretory改为正确的directory
  2. 开启文件名校验,将validate_filenames设为True,方便初始化阶段就定位路径问题
  3. 可提前手动验证路径有效性,避免训练阶段报错:
import os
# 测试路径拼接是否正确
sample_path = os.path.join(base_folder, trainn.iloc[0]['files'])
print(f"测试路径:{sample_path},是否存在:{os.path.exists(sample_path)}")
  1. 修正后的生成器代码示例:
data_gen_object=ImageDataGenerator(rescale=1.0/255.0, validation_split=0.25)

data_gen_object_training_flow = data_gen_object.flow_from_dataframe(
    trainn,
    directory=base_folder,
    subset='training',
    x_col='files', 
    y_col='class',
    target_size=(200,200), 
    batch_size=64,
    class_mode='binary',
    validate_filenames=True
)

data_gen_object_testing_flow = data_gen_object.flow_from_dataframe(
    trainn,
    directory=base_folder,
    subset='validation',
    x_col='files', 
    y_col='class',
    target_size=(200,200), 
    batch_size=64,
    class_mode='binary',
    validate_filenames=True
)

如果需要使用独立的测试集评估模型,再单独为testt DataFrame创建对应生成器即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:36:01