当前位置: 首页 > 面试题库 >

预测期间,数据标准化如何在keras中起作用?

何勇
2023-03-14
问题内容

我看到imageDataGenerator允许我指定不同样式的数据规范化,例如featurewise_center,samplewise_center等。

从示例中可以看到,如果我指定了这些选项之一,则需要在生成器上调用fit方法,以允许生成器计算统计信息,例如生成器上的均值图像。

(X_train, y_train), (X_test, y_test) = cifar10.load_data()
Y_train = np_utils.to_categorical(y_train, nb_classes)
Y_test = np_utils.to_categorical(y_test, nb_classes)

datagen = ImageDataGenerator(
    featurewise_center=True,
    featurewise_std_normalization=True,
    rotation_range=20,
    width_shift_range=0.2,
    height_shift_range=0.2,
    horizontal_flip=True)

# compute quantities required for featurewise normalization
# (std, mean, and principal components if ZCA whitening is applied)
datagen.fit(X_train)

# fits the model on batches with real-time data augmentation:
model.fit_generator(datagen.flow(X_train, Y_train, batch_size=32),
                samples_per_epoch=len(X_train), nb_epoch=nb_epoch)

我的问题是,如果我在训练期间指定了数据归一化,预测将如何工作?我看不到如何在框架中传递训练集均值/标准差的知识来预测如何使我自己对测试数据进行标准化,但是我也看不到训练代码中的这些信息存储。

归一化所需的图像统计信息是否存储在模型中,以便可以在预测期间使用?


问题答案:

是的-这是一个很大的缺点Keras.ImageDataGenerator,您无法自行提供标准统计信息。但是-有一个简单的方法可以解决这个问题。

假设您具有normalize(x)标准化图像 批处理的功能 (请记住,生成器提供的不是简单图像,而是图像的数组-具有形状的 批处理
(nr_of_examples_in_batch, image_dims ..)您可以使用以下方法使自己的生成器具有标准化功能:

def gen_with_norm(gen, normalize):
    for x, y in gen:
        yield normalize(x), y

然后,您可以简单地使用gen_with_norm(datagen.flow, normalize)而不是datagen.flow

此外-
您可以通过从datagen中适当的字段(例如和)获取方法来恢复meanstd计算fit方法。datagen.mean``datagen.std



 类似资料:
  • 我目前正在尝试在Keras中使用批处理规范化实现一个模型。我已经成功地在训练阶段实现了它。 然而,对于测试,在通过网络进行前向传递之前,批次归一化会计算整个群体的统计信息(平均值和方差)(BN平均值和方差是预先计算的,然后保持不变;这与训练阶段相反,在训练阶段,平均值和方差由批次确定)。 我关于Keras的问题是: 假设(X, y)是整个总体。假设(X_batch,y_batch)是一个批次(整个

  • 我的问题是批处理规范化(BN)正在规范化什么。 我在问,BN是单独标准化每个像素的通道还是一起标准化所有像素的通道。它是在每张图像的基础上还是在整个批次的所有通道上进行的。 具体而言,BN在X上运行。比如说,。因此,当轴=3时,它在“c”维度上运行,即通道数(对于rgb)或特征图数。 因此,假设X是rgb,因此有3个通道。BN是否做到了以下几点:(这是BN的简化版本,用于讨论维度方面。我知道gam

  • 通过Keras神经网络运行一组标记向量。 查看Keras数据集示例mnist: 它似乎是一个三维Numpy数组: 第一个维度用于样本 每个示例功能的第二个和第三个 构建标记向量: 为什么对于如此简单的数据集,我会得到如此糟糕的结果?我的数据集是否格式错误? 谢谢

  • 本文向大家介绍如何使用TensorFlow使用Auto MPG数据集将数据标准化以预测燃油效率?,包括了如何使用TensorFlow使用Auto MPG数据集将数据标准化以预测燃油效率?的使用技巧和注意事项,需要的朋友参考一下 Tensorflow是Google提供的一种机器学习框架。它是一个开放源代码框架,与Python结合使用以实现算法,深度学习应用程序等等。可以使用下面的代码行在Window

  • 本文向大家介绍如何标准化R数据框中的列?,包括了如何标准化R数据框中的列?的使用技巧和注意事项,需要的朋友参考一下 这可以通过使用缩放功能来完成。 示例

  • 本文向大家介绍python转化excel数字日期为标准日期操作,包括了python转化excel数字日期为标准日期操作的使用技巧和注意事项,需要的朋友参考一下 伙伴遇到一个关于excel导入数据到python中,日期变成数字而不是日期格式的问题。第一反应这个数字应该是excel里面的时间戳类似的,所以我就实验增加一天是不是对应的数字就加1。最后证明了我的想法,这样就可以倒推excel里面的数字日期