我想在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 onWorking with large datasets like Imagenet:
以及ongoing open discussion中关于扩展
ImageDataGenerator
的另一段引述(强调部分已添加):希望这有帮助。。。
相关问题 更多 >
编程相关推荐