在使用 per_image_standardization 之前,我还应该标准化图像数据(除以 255)吗?

Kri*_*ves 3 machine-learning tensorflow

使用 Tensorflow 和加载图像数据时,我目前有:

image = tf.io.decode_png(tf.io.read_file(path), channels=3)
image = tf.reshape(image, [84, 84, 3])
image = tf.cast(image, tf.float32)
return image / 255.0
Run Code Online (Sandbox Code Playgroud)

但是,我想使用tf.per_imdage_standardization,我应该保持除以 255 还是不再需要它?

gor*_*jan 9

不再需要它了。对图像进行归一化的原因是为了避免由于像素范围大而导致梯度爆炸的可能性[0, 255],并提高收敛速度。因此,您要么对每个图像进行标准化,以便范围是,[-1, 1]要么只是在执行时将其与最大像素值相除,以便像素的[0, 1]范围在范围内。

您可能想要标准化图像数据的另一个原因是您是否正在使用迁移学习。例如,如果您使用的预训练模型已使用像素在该[0, 1]范围内的图像进行训练,则应确保您提供给模型的输入在同一范围内。否则,你的结果会一团糟。