了解ImageDataGenerator中的参数和Keras中的流程

时间:2018-07-24 01:59:49

标签: python keras image-preprocessing

问题1

rotation_range: Int. Degree range for random rotations是否引用范围[0,rotation_range]或[-rotation_range,rotation_range]。如果我设置rotation_range=40,我的图像会在[-40,40]或[0,40]之间随机旋转吗?

问题2

ImageDataStore.flow是在每个时期随机生成输入图像的不同扩充,还是在开始时生成并用于所有时期的单个扩充。

例如,假设我有一些图像 A ,这是我在flow方法中输入的一部分。图像 A 是否在训练之前仅进行了一次扩充,并且此扩充版本适用于所有时期?还是图像 A 在每个时期随机增大?

问题3

shuffle方法中将参数True设置为flow时,这是否意味着在每个时期都对批次进行了混洗,或者在每个时期中对批次中的图像进行了混洗?

例如,假设我们的训练数据包含15张图像(标记为I 1 -I 15 ),在时期1开始之前分为3个批次/小批次(标记为B 1 ,B 2 ,B 3 )。

让我们说在第1阶段之前,将图像分配给以下批次:

  • B 1 = {I 1 ,I 2 ,I 3 ,I 4 < / sub>,我 5 }
  • B 2 = {I 6 ,I 7 ,I 8 ,I 9 < / sub>,我 10 }
  • B 3 = {I 11 ,I 12 ,I 13 ,I 14 < / sub>,我 15 }

现在在第1阶段,按B 1 ,B 2 ,B 3 的顺序训练批次。

第2个时期开始时,将对B 1 ,B 2 ,B 3 中的图像进行混洗,以使每批图像中不包含同一套5张图片?

1 个答案:

答案 0 :(得分:1)

问题1 旋转范围是[-rotation_range,rotation_range]。建议您使用方法kendo-chart-x-axis-item-labels中的参数save_to_dir检查增强图像。这样,您可以确定图像是否按预期进行了放大。

问题2 调用flow时,根据您为next的构造函数提供的参数,在图像加载后立即对每个图像进行随机扩充。即可以在一个时期内左旋转图像,而在下一个时期内可以右旋转同一图像。这就是增强如此高效的原因-您可以人为地增加数据大小。

问题3 在每个时期之前,图像列表都会被随机播放。一批图像将永远不会重复出现(嗯...您可以计算几率)