2016-11-22 48 views
1

我请有关ImageDataGenerator两个问题:Augementations在Keras ImageDataGenerator

1)对整批使用相同的扩充或每个图像都有自己的随机变换? 例如对于旋转,模块是否以相同角度旋转批次中的所有图像,或者每个图像是否获得随机旋转角度?

2)ImageDataGenerator.flow中的数据无限期地循环(分批)。有没有办法阻止这个无限循环,即只做n次增强。因为我需要在每个步骤中修改batch_size(不是每个时期)。 感谢

回答

1
Francois Chollet

答:

1)对整批使用相同的扩充或每个图像都有自己的随机变换?例如对于旋转,模块是否以相同角度旋转批次中的所有图像,或者每个图像是否获得随机旋转角度?

每一个样本都有不同的独特变换(例如在一定范围内的随机旋转)。

2)ImageDataGenerator.flow中的数据无限期地循环(批量)。有没有办法阻止这个无限循环,即只做n次增强。因为我需要在每个步骤中修改batch_size(不是每个时期)。谢谢

不清楚这里是什么意思。但是,如果您使用的是model.fit_generator(ImageDataGenerator.flow()),那么您可以指定samples_per_epoch=...仅从发生器产生特定数量的样本。如果你想批量级粒度,你可以这样做:

for x, y in model.fit_generator(ImageDataGenerator.flow()): 
    model.train_on_batch(x, y) 

你可以任意数量的批后仅break(这是一个循环),您想要的话。

0

@便利:感谢您的及时答复!你说得对,我可能需要更好地解释我的任务。我的工作与分类视频序列类似,但我的数据保存在数据库中。我想我的代码遵循这一步骤,一个时代:
因为我在(number_of_sequences):

  1. 获得N,序列中的帧数我(我认为这是 相当于BATCH_SIZE,数量每个序列的N被 已经保存在列表中)
  2. 从我的数据库及其标签抓取N个连续帧: X_train,y_train
  3. 对于j在范围(number_of_rotation): -
  4. Pe rform所述序列(的所有帧(同一)数据增强可能使用datagen = ImageDataGenerator()datagen.flow())
  5. 列车上X上的网络,Y

我首先想到的是使用model.fit_generator(发电机= ImageDataGenerator ()。流())但这样,我不能修改我的batch_size,老实说,我不明白你的解决方案。 对不起,对于很长的文章,但我仍然是Python和NN的新手,但我真的是凯拉斯的粉丝;) Thnx!

相关问题