Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用ImageDataGenerator将图像从[0255]重新缩放到[-1,1]?_Python_Tensorflow_Keras - Fatal编程技术网

Python 如何使用ImageDataGenerator将图像从[0255]重新缩放到[-1,1]?

Python 如何使用ImageDataGenerator将图像从[0255]重新缩放到[-1,1]?,python,tensorflow,keras,Python,Tensorflow,Keras,我正在使用ImageDataGenerator和flow_from_dataframe加载数据集 ImageDataGenerator允许您指定如下的重缩放因子 datagen = ImageDataGenerator(rescale=1./255) 但是如果我想在[-1,1]范围内重新缩放图像,该怎么办?我应该先做减法,再做除法 images -= 128.0 images /= 128.0 如何在ImageDataGenerator的重缩放中执行这两个操作?您可以使用如下预处理功能: d

我正在使用ImageDataGenerator和flow_from_dataframe加载数据集

ImageDataGenerator允许您指定如下的重缩放因子

datagen = ImageDataGenerator(rescale=1./255)
但是如果我想在[-1,1]范围内重新缩放图像,该怎么办?我应该先做减法,再做除法

images -= 128.0
images /= 128.0

如何在ImageDataGenerator的重缩放中执行这两个操作?

您可以使用如下预处理功能:

def rescale_img(img):
    img = img.astype(np.float32) / 255.0
    img = (img - 0.5) * 2
    return img
datagen = ImageDataGenerator(rescale=2/255.0,
                             featurewise_center=True,
                             samplewise_center=True,)
然后在“重缩放”部分,您可以执行以下操作:

datagen = ImageDataGenerator(rescale=rescale_img())

Keras imagedatagen rescale参数将数据与给定值相乘。这就是为什么它被用作1/255.0等

执行此操作时:

datagen = ImageDataGenerator(rescale=1./255)
数据的平均值为0.5,范围为0到1。现在是棘手的部分,首先要将平均值设置为0。为此,可以使用featurewise\u centersamplewise\u center。现在,它完成了,但是您的数据在-0.5和0.5之间缩放

为了确保它介于-1和1之间,我们将按2/255.0重新缩放它。最后一段代码应该是这样的:

def rescale_img(img):
    img = img.astype(np.float32) / 255.0
    img = (img - 0.5) * 2
    return img
datagen = ImageDataGenerator(rescale=2/255.0,
                             featurewise_center=True,
                             samplewise_center=True,)

有关_center参数的更多详细信息,可以参考

尝试使用rescale=1/127.5-1,也可以使用预定义的处理器功能,如

preprocessing_function=tf.keras.applications.mobilenet.preprocess_input