Keras的ImageDataGenerator类
文档中提到——
width_shift_range: 浮点数、一维数组或整数 – 浮点数:如果小于1,则为总宽度的比例;如果大于或等于1,则为像素数。 – 一维数组:从数组中随机选择元素。 – 整数:从区间
(-width_shift_range, +width_shift_range)
中选择整数像素数 – 当width_shift_range=2
时,可能的值为整数[-1, 0, +1]
,与width_shift_range=[-1, 0, +1]
相同,而当width_shift_range=1.0
时,可能的值为区间[-1.0, +1.0)内的浮点数。
height_shift_range: 浮点数、一维数组或整数 – 浮点数:如果小于1,则为总高度的比例;如果大于或等于1,则为像素数。 – 一维数组:从数组中随机选择元素。 – 整数:从区间
(-height_shift_range, +height_shift_range)
中选择整数像素数 – 当height_shift_range=2
时,可能的值为整数[-1, 0, +1]
,与height_shift_range=[-1, 0, +1]
相同,而当height_shift_range=1.0
时,可能的值为区间[-1.0, +1.0)内的浮点数。
我刚开始学习Keras和机器学习,对此还不太熟悉。
我在理解和使用Keras ImageDataGenerator类
的这两个参数width_shift_range
和height_shift_range
时遇到了困难。我搜索了很多,但除了官方文档外,没有找到其他好的文档。这两个参数到底做什么用?什么时候需要使用它们?
在这里讨论这个问题似乎不太合适,但由于互联网上没有任何讨论,我认为在这里讨论会很好。
如果有人能帮助我理解这些,我将不胜感激。非常感谢您。
回答:
ImageDataGenerator类
中的这两个参数用于在将图像输入网络之前对其进行预处理。如果你想使模型更加健壮,少量的数据是不够的。这就是数据增强派上用场的地方。这些参数用于生成随机数据。
width_shift_range: 它实际上是将图像向左或向右移动(水平移动)。如果值为float且<=1
,它将使用总宽度的百分比作为范围。假设图像宽度为100像素
,如果width_shift_range = 1.0
,它将使用-100%到+100%
,即-100像素到+100像素
。图像将在这个范围内随机移动。随机选择的正值将图像向右移动,负值将图像向左移动。我们也可以通过选择像素来实现这一点。如果我们设置width_shift_range = 100
,效果将相同。更重要的是,整数值>=1以像素为范围
,而浮点值<=1以总宽度的百分比为范围
。下面是width_shift_range = 1.0
的图像示例。
height_shift_range: 它的工作原理与width_shift_range
相同,但进行的是垂直移动(向上或向下)。下面是height_shift_range=0.2,fill_mode="constant"
的图像示例
fill_mode: 它为输入区域中新移动的像素设置规则。
## fill_mode: 之一 {"constant", "nearest", "reflect" 或 "wrap"}. ## 输入边界之外的点根据给定的模式填充:## "constant": kkkkkkkk|abcd|kkkkkkkk (cval=k)## "nearest": aaaaaaaa|abcd|dddddddd## "reflect": abcddcba|abcd|dcbaabcd## "wrap": abcdabcd|abcd|abcdabcd
更多信息可以查看这个博客