我想在Keras中使用图像增强。我当前的代码如下所示:
# define image augmentations
train_datagen = ImageDataGenerator(
featurewise_center=True,
featurewise_std_normalization=True,
zca_whitening=True)
# generate image batches from directory
train_datagen.flow_from_directory(train_dir)
当我使用此选项运行模型时,会出现以下错误:
"ImageDataGenerator specifies `featurewise_std_normalization`, but it hasn't been fit on any training data."
但是我没有找到关于如何将train_dataget.fit()
与flow_from_directory
一起使用的明确信息
你是对的,docs在这方面不是很有启发性
您需要的实际上是一个4步流程:
flow_from_directory()
设置生成器fit_generator()
培训您的模型以下是假设图像分类情况的必要代码:
显然,有几个参数需要定义(
train_data_dir
,nb_train_samples
等等),但希望您能理解如果您还需要使用
validation_generator
,如我的示例中所示,那么应该以与train_generator
相同的方式定义它更新(评论后)
步骤2需要一些讨论;这里,
x_train
是实际数据,理想情况下,这些数据应该放在主内存中。另外(documentation),此步骤是然而,在许多实际情况下,要求所有的训练数据都适合内存显然是不现实的。在这种情况下,如何集中/规范化/删除数据本身就是一个(巨大的)子领域,可以说是Spark等大数据处理框架存在的主要原因
那么,在实践中该怎么做呢?那么,在这种情况下,下一个合乎逻辑的操作是采样您的数据;事实上,这正是社区的建议——以下是Keras创始人Francois Chollet on Working with large datasets like Imagenet:
另一段引自ongoing open discussion的关于扩展
ImageDataGenerator
的话(重点添加):相关问题 更多 >
编程相关推荐