如何在 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 指南
如何使用 tensorflow 在 keras 中禁用 GPU?
如何让 Keras 在 Anaconda 中使用 Tensorflow 后端?