【问题标题】:Images not standardizing in Keras图像在 Keras 中没有标准化
【发布时间】:2019-08-26 19:41:41
【问题描述】:

我正在关注 2017 年关于 Python 深度学习的教程,我正在尝试对来自著名的 MNIST 数据集的一些图像进行标准化。作者对下面的代码有以下看法(决定将其全部包含在内,因此任何想要帮助的人都可以简单地复制/粘贴并重现该问题)。

还可以对整个数据集的像素值进行标准化。这称为特征标准化,反映了通常对表格中的每一列执行的标准化类型 数据集。这与上一节中描述的样本标准化不同,因为像素值在所有样本(数据集中的所有图像)中都是标准化的。在这种情况下,每个图像都被视为一个特征。您可以通过设置特征中心来执行特征标准化 和 ImageDataGenerator 类的特征标准标准化参数。

代码如下:

from keras.datasets import mnist
from keras.preprocessing.image import ImageDataGenerator
from matplotlib import pyplot as plt
from keras import backend as K
K.set_image_dim_ordering('th')

#Load data
(X_train, y_train), (X_test, y_test) = mnist.load_data()

# Reshape to be [samples][pixels][width][height]
X_train = X_train.reshape(X_train.shape[0], 1, 28, 28).astype('float32')
X_test = X_test.reshape(X_test.shape[0], 1, 28, 28).astype('float32')

datagen = ImageDataGenerator(featurewise_center=True, featurewise_std_normalization=True) #This standardizes pixel values across the entire dataset.

# Fit parameters from data
datagen.fit(X_train)

#Configure batch size and retrieve one batch of images
for X_batch, y_batch in datagen.flow(X_train, y_train, batch_size=9, shuffle=False):
    #Create grid of 3x3 images
    for i in range(0,9):
        plt.subplot(330 + 1 + i)
        plt.imshow(X_batch[i].reshape(28,28), cmap=plt.get_cmap('gray'))
    plt.show()
    break

我认为自 2017 年以来,Keras 发生了一些变化,尤其是在 ImageDataGenerator 类或该类的流函数中,所以我现在必须以不同的方式来做这件事。问题是:我找不到如何。任何帮助将不胜感激

当前输出:

预期输出:

【问题讨论】:

    标签: python keras mnist


    【解决方案1】:

    ImageDataGenerator 在 Keras 中对代码示例中的所有图像执行规范化。您可以使用以下代码检查实际的 X_batch 值:

    for X_batch, y_batch in datagen.flow(X_train, y_train, batch_size=9, shuffle=False):
        print(X_batch[0])
        break 
    

    问题与imshow 的行为有关,默认为uses color normalization。因此,imshow 将标准化图像可视化为非标准化图像。

    【讨论】:

    • 你的传奇!已经坚持了一段时间了。我猜是找错地方了!非常感谢,非常感谢。
    • 有没有办法按照书中的意图显示图像?
    • @Psychotechnopath 你曾经能够在 Jupyter 中正确显示图像吗?
    • 我已经有一段时间没有研究这个问题了,但我不记得我解决了这个问题。
    猜你喜欢
    • 2020-10-04
    • 2021-07-03
    • 2016-10-27
    • 2022-01-12
    • 1970-01-01
    • 2017-10-21
    • 1970-01-01
    • 2017-07-05
    • 2021-05-12
    相关资源
    最近更新 更多