重新缩放 1./255 或 1/255 或 1/255 是否有任何区别. 预处理图像数据?



很多图像处理程序,我们在数据进行处理之前对数据使用预处理,并对数据进行预处理使用重新缩放

keras.preprocessing.image.ImageDataGenerator(rescale=1/255)

keras.preprocessing.image.ImageDataGenerator(rescale=1./255)

keras.preprocessing.image.ImageDataGenerator(rescale=1/255.)

那么,它们的功能或返回值是否有任何差异

绝对没有区别,假设(如您的标签所示(您使用的是 Python 3.x 或更高版本。在CPython下,所有三个表达式都编译为相同的字节码。您可以使用dis模块轻松看到这一点。

这是我机器上三个表达式中每个表达式的dis.dis输出,在 Python 3.8.0 下;你可以看到它是逐字节相同的,并且在每种情况下都预先计算了常量。

>>> import dis
>>> dis.dis("keras.preprocessing.image.ImageDataGenerator(rescale=1/255)")
1           0 LOAD_NAME                0 (keras)
2 LOAD_ATTR                1 (preprocessing)
4 LOAD_ATTR                2 (image)
6 LOAD_ATTR                3 (ImageDataGenerator)
8 LOAD_CONST               0 (0.00392156862745098)
10 LOAD_CONST               1 (('rescale',))
12 CALL_FUNCTION_KW         1
14 RETURN_VALUE
>>> dis.dis("keras.preprocessing.image.ImageDataGenerator(rescale=1./255)")
1           0 LOAD_NAME                0 (keras)
2 LOAD_ATTR                1 (preprocessing)
4 LOAD_ATTR                2 (image)
6 LOAD_ATTR                3 (ImageDataGenerator)
8 LOAD_CONST               0 (0.00392156862745098)
10 LOAD_CONST               1 (('rescale',))
12 CALL_FUNCTION_KW         1
14 RETURN_VALUE
>>> dis.dis("keras.preprocessing.image.ImageDataGenerator(rescale=1/255.)")
1           0 LOAD_NAME                0 (keras)
2 LOAD_ATTR                1 (preprocessing)
4 LOAD_ATTR                2 (image)
6 LOAD_ATTR                3 (ImageDataGenerator)
8 LOAD_CONST               0 (0.00392156862745098)
10 LOAD_CONST               1 (('rescale',))
12 CALL_FUNCTION_KW         1
14 RETURN_VALUE

更详细地说:在CPython中,对于第一个常数1/255,我们正在执行整数的真除法,并计算最接近商真值的浮点数。在第二种情况下,1./255,分子已经是一个float分母首先隐式转换为float,然后计算商。但是因为分母是一个小整数,所以转换为float是精确的,所以我们最终再次计算最接近确切商1/255的最接近可表示浮点数。第三种情况类似,但在这种情况下,分子再次隐式转换为float,因此计算常量再次是最接近精确商的可表示float。简而言之,常量在所有三种情况下都是相同的。

因此,所有三个版本都具有相同的语义和性能。你应该使用任何你认为最易读的东西。对我来说,这是第一个版本。

第一个是你按整数重新缩放,因为你正在用整数除以整数

作为第二个和第三个,您按浮点数重新缩放,因为您要么除以要么除以浮点数

最好的解决方案是使整数除法和除以浮点数

相关内容

最新更新