Keras规范化会污染数据

Keras规范化会污染数据,keras,deep-learning,normalization,Keras,Deep Learning,Normalization,我编写了一个简单的数字识别模型,该模型由MNIST的图像提供,我想用这个模型来预测我自己的数字,但我遇到了标准化的问题 要规范化来自MNIST的图像,我使用了: x_train = keras.utils.normalize(x_train, axis=1) x_test = keras.utils.normalize(x_test, axis=1) # shape = (60000, 28, 28) 但当我试图对自己的形象做同样的事情时: my_digit = cv2.imread("thr

我编写了一个简单的数字识别模型,该模型由MNIST的图像提供,我想用这个模型来预测我自己的数字,但我遇到了标准化的问题

要规范化来自MNIST的图像,我使用了:

x_train = keras.utils.normalize(x_train, axis=1)
x_test = keras.utils.normalize(x_test, axis=1) # shape = (60000, 28, 28)
但当我试图对自己的形象做同样的事情时:

my_digit = cv2.imread("three.jpg") # shape = (28, 28, 3)
my_digit = cv2.cvtColor(my_digit, cv2.COLOR_RGB2GRAY) # shape = (28, 28)
my_digits = np.array([my_digit]) # shape = (1, 28, 28)
my_digits = keras.utils.normalize(my_digits, axis=1)
使用keras标准化后,图像变得有点脏:

当我删除:

my_digits = keras.utils.normalize(my_digits, axis=1)
然后图像就好了

我找到的“解决方案”是将每个元素除以255,如下所示:

my_digit = np.divide(my_digit, 255)
然后图像看起来像正常化之前一样

编辑: 在规范化x_序列(MNIST数据集)之前,其数据类型为uint8,规范化之后为float64。对于我的图像-在标准化之前(utils.keras),它的数据类型是uint8,标准化之后是float64。当我通过将每一项都除以255来规范化我的数字时也是一样的——我的意思是在前面加上uint8,后面加上float64


我想知道为什么我要规范化自己的图像(keras.utils.normalization之后的MNIST图像看起来和规范化之前一样好)手动,然后它们看起来正常,但当我使用keras.utils.normalization时,我会受到一些“污染”

请检查规范化前后
x\u列
my\u digits
/
my\u digits
数据的数据类型,并将此信息添加到帖子中。我已经检查过了,不幸的是,数据类型看起来不错。我编辑了这篇文章。