问题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
当param shuffle
在 flow
方法中设置为 True
时,这是否意味着批次在每个时期都被洗牌,或者批次中的图像是否在每个时代都被洗牌?
例如,假设我们的训练数据由15个图像(标记为I1-I15)组成,在第1纪元开始之前分为3批/小批(标记为B1,B2,B3) .
让我们说在纪元1之前,图像被分配给批次如下:
-
B1 = {I1,I2,I3,I4,I5}
-
B2 = {I6,I7,I8,I9,I10}
-
B3 = {I11,I12,I13,I14,I15}
现在在时代1中,批次按照B1,B2,B3的顺序进行训练 .
当纪元2开始时,B1,B2,B3中的图像是否会被洗牌,以便每个批次不包含同一组5张图像?
1 回答
Question 1 旋转范围是[-rotation_range,rotation_range] . 我建议您使用方法
flow
中的参数save_to_dir
检查增强图像 . 这样您就可以确保图像按照您的预期进行扩充 .Question 2 当调用
next
时,根据您给ImageDataGenerator
的构造函数的参数,在加载后立即对每个图像应用随机扩充 . 即图像可以在一个时期中保持旋转,并且在下一个时期中,相同的图像可以被右旋转 . 这就是使扩充如此高效的原因 - 您人为地增加了数据的大小 .Question 3 图像列表在每个纪元之前被洗牌 . 一批图像永远不会重复(好吧......你可以计算赔率)