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

如何从tf.keras的flow_from_directory返回结果中提取X_train数据集

提取X_train的方法

flow_from_directory返回的是无限迭代的批次生成器,你需要遍历所有批次拼接得到完整的X_train,具体实现如下:

import numpy as np

X_train = []
# 按批次遍历完整数据集,len(train_set)就是总批次数量
for i in range(len(train_set)):
    # 每个批次返回(批次图片, 批次标签),取第一个元素即为图片数据
    batch_imgs = train_set[i][0]
    X_train.extend(batch_imgs)

# 转为numpy数组,最终形状为 (总样本数, 224, 224, 3)
X_train = np.array(X_train)

注意事项

  • 如果你在初始化ImageDataGenerator时开启了随机增强(旋转、翻转、缩放等参数),每次生成的图片数据都会变化,提取的X_train无法和固定的train_set.classes一一对应,建议同时提取每个批次的标签保证匹配:
    X_train = []
    Y_train = []
    for i in range(len(train_set)):
        batch_x, batch_y = train_set[i]
        X_train.extend(batch_x)
        Y_train.extend(batch_y)
    X_train = np.array(X_train)
    Y_train = np.array(Y_train)
    
  • 默认情况下flow_from_directory会开启shuffle打乱样本顺序,单独提取的X_train和train_set.classes顺序不匹配,要么初始化生成器时设置shuffle=False,要么用上面同时提取X、Y的方式获取匹配的数据集。
  • 数据集过大时不建议一次性提取全部X_train到内存,直接用生成器喂给模型训练即可,避免内存溢出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 23:54:03