如何在 Tensorflow Keras 中标准化我的图像数据

Posted

技术标签:

【中文标题】如何在 Tensorflow Keras 中标准化我的图像数据【英文标题】:how to normalize my image data in Tensorflow Keras 【发布时间】:2020-10-04 04:37:46 【问题描述】:

如前所述,我正在尝试在训练我的模型之前标准化我的数据集。我以前使用tf.keras.preprocessing.image.ImageDataGenerator 来执行此操作。

        train_data = tf.cast(train_data, tf.float32)
        train_gen = ImageDataGenerator(
            featurewise_center=True,
            featurewise_std_normalization=True
        )
        train_gen.fit(train_data)
        train_generator = train_gen.flow(train_data, train_labels,
                                         batch_size=batch_size,
                                         shuffle=True)
        model.fit(train_generator, epochs=base_epochs)

但是,我不得不放弃它,因为我使用自定义层实现了一个复杂的损失函数。因此,需要将数据和标签分别作为输入发送到模型。 Tensorflow Keras 中是否提供任何其他功能来规范化我的样本?

【问题讨论】:

这些是您可以自己实现的简单操作(如果您无法使用生成器)。 您可以尝试使用 numpy 数组,但是,它不会像您在 ImageDataGenerator 中提到的那样批量处理。 np.mean(train_data, axis=0) 然后是 train_data -= train_data_mean。同样,对于所有样本,对于 std,沿轴 0 的 np.std。 @AkashKumar 感谢您的友好建议!我在检查源代码后解决了问题,并完全按照您的建议进行操作。 【参考方案1】:
    def standardize(image_data):
        image_data -= np.mean(image_data, axis=0)
        image_data /= np.std(image_data, axis=0)
        return image_data

这是解决问题的简单方法。自己预处理数据。

【讨论】:

对于其他读者,这是实现standard scoring (aka z-scoring)

以上是关于如何在 Tensorflow Keras 中标准化我的图像数据的主要内容,如果未能解决你的问题,请参考以下文章

标准化 Keras:TensorFlow 2.0 高级 API 指南

如何在 Keras 中计算精度和召回率

如何使用 tensorflow 在 keras 中禁用 GPU?

如何让 Keras 在 Anaconda 中使用 Tensorflow 后端?

如何在 Google colab 中更改 Keras/tensorflow 版本?

如何在 tensorflow 2.0 w/keras 中保存/恢复大型模型?