首页 文章

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

提问于
浏览
0

问题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 shuffleflow 方法中设置为 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 回答

  • 1

    Question 1 旋转范围是[-rotation_range,rotation_range] . 我建议您使用方法 flow 中的参数 save_to_dir 检查增强图像 . 这样您就可以确保图像按照您的预期进行扩充 .

    Question 2 当调用 next 时,根据您给 ImageDataGenerator 的构造函数的参数,在加载后立即对每个图像应用随机扩充 . 即图像可以在一个时期中保持旋转,并且在下一个时期中,相同的图像可以被右旋转 . 这就是使扩充如此高效的原因 - 您人为地增加了数据的大小 .

    Question 3 图像列表在每个纪元之前被洗牌 . 一批图像永远不会重复(好吧......你可以计算赔率)

相关问题