为了账号安全,请及时绑定邮箱和手机立即绑定

从熊猫数据帧在Keras中加载一批图像

从熊猫数据帧在Keras中加载一批图像

牛魔王的故事 2021-05-05 13:23:30
我有一个带有两列的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我想将此数据帧提供给Keras CNN,但整个数据集太大而无法立即加载到内存中。这个站点上的其他答案告诉我,为此,我应该使用Keras ImageDataGenerator,但是老实说,我不理解如何从文档中做到这一点。将延迟加载的批次中的数据馈送到模型的最简单方法是什么?如果它是ImageDataGenerator,如何创建一个ImageDataGenerator来对Dataframe进行初始化,并将批处理通过我的函数传递,以创建适当的numpy数组?以及如何使用ImageDataGenerator拟合模型?
查看完整描述

2 回答

?
缥缈止盈

TA贡献2041条经验 获得超4个赞

我是Keras的新手,所以请服食我的盐。我认为您应该使用Keras ImageDataGenerator,尤其是该flow_from_dataframe选项,因为您说您拥有Pandas数据框。Flow_from_dataframe读取数据框的cols以获取文件名和标签。


以下是一个示例片段。在网上查找教程。


train_datagen = ImageDataGenerator(horizontal_flip=True,

                                   vertical_flip=False,

                                   rescale=1/255.0)


train_generator = train_datagen.flow_from_dataframe(     

    dataframe=trainDataframe,  

    directory=imageDir,

    x_col="file", # name of col in data frame that contains file names

    y_col=y_col_list, # name of col with labels

    has_ext=True, 

    batch_size=batch_size,

    shuffle=True,

    save_to_dir=saveDir,

    target_size=(img_width,img_height),

    color_mode='grayscale',

    class_mode='categorical', # for classification task

    interpolation='bilinear')


查看完整回答
反对 回复 2021-05-25
  • 2 回答
  • 0 关注
  • 110 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信