我有一个包含两列的pandas数据帧,一列有图像路径,另一列有字符串类标签.
我还编写了以下函数,这些函数从数据框加载图像,重新规范化它们并将类标签转换为单热矢量.
def prepare_data(df):
data_X, data_y = df.values[:,0], df.values[:,1]
# Load images
data_X = np.array([np.array(imread(fname)) for fname in data_X])
# Normalize input
data_X = data_X / 255 - 0.5
# Prepare labels
data_y = np.array([label2int[label] for label in data_y])
data_y = to_categorical(data_y)
return data_X, data_y
Run Code Online (Sandbox Code Playgroud)
我想将此数据帧提供给Keras CNN,但整个数据集太大而无法立即加载到内存中.
本网站的其他答案告诉我,为此我应该使用Keras ImageDataGenerator,但说实话,我不明白如何从文档中做到这一点.
将延迟加载批次中的数据提供给模型的最简单方法是什么?
如果它是一个ImageDataGenerator,我如何创建一个ImageDataGenerator,它接受初始化Dataframe并通过我的函数传递批次来创建适当的numpy数组?我如何使用ImageDataGenerator拟合模型?