我正在使用Keras数据增强进行图像分类。我想为width_shift_range和height_shift_range指定多个值。例如,我想在一个训练课程中增加具有移位范围的倍数值的图像,例如0.2,0.4,0.6。有没有办法做到这一点。
提前感谢您的帮助。
答案 0 :(得分:2)
您不需要为width_shift_range
指定多个值(分别为height_shift_range
)。它基本上做的是它从区间x
(分别为[-width_shift_range, width_shift_range]
)中的均匀分布中抽取随机数[-height_shift_range, height_shift_range]
,并应用与...成比例的图像的平移x
乘以相应的图像宽度(相应的高度)。
这里是来自keras的random_shift
函数:
def random_shift(x, wrg, hrg, row_axis=1, col_axis=2, channel_axis=0,
fill_mode='nearest', cval=0.):
# wrg: Width shift range, as a float fraction of the width.
# hrg: Height shift range, as a float fraction of the height.
h, w = x.shape[row_axis], x.shape[col_axis]
tx = np.random.uniform(-hrg, hrg) * h
ty = np.random.uniform(-wrg, wrg) * w
translation_matrix = np.array([[1, 0, tx],
[0, 1, ty],
[0, 0, 1]])
transform_matrix = translation_matrix # no need to do offset
x = apply_transform(x, transform_matrix, channel_axis, fill_mode, cval)
return x
结论取最大值,因为您要在[-x,x], id est 区间内进行绘制,如果您想要在0.2,0.4和0.6范围转换,只需使用0.6。