【问题标题】:How to simultaneously apply augmentation to X_train and y_train如何同时对 X_train 和 y_train 应用增强
【发布时间】:2020-01-19 15:24:38
【问题描述】:

我正面临从很少的图像创建数据集的问题。

输入 (X_train) 和输出 (y_train) 都包含 (28x28) 大小的图像,例如 MNIST。例如在我的代码中:

(X_train, y_train), (X_test, y_test) = mnist.load_data()
X_train = X_train.reshape((X_train.shape[0], 28, 28, 1))
X_train = X_train.astype('float32')
y_train=X_train

datagen = ImageDataGenerator(zca_whitening=True)

我怎样才能将这个 datagen 同时适合 X_trainy_train 并将它们保存在数据集数组中。不想将其传递给培训。

感谢您的帮助

【问题讨论】:

  • 为什么需要增加 y_train?假设你正在做某种二元/多类分类,那么增加你的真实标签的目的是什么?
  • 我有输入 x_train 散焦图像(从实验中获得)和输出 y_train(聚焦图像)。由于我的数据有限,我想增加我的数据集。因此,当我对输入应用效果时,我也必须对输出这样做。

标签: python tensorflow image-processing keras deep-learning


【解决方案1】:

请注意,增强本身并未应用于目标变量y_train,而仅应用于输入变量X_train。生成器只会为新生成的X 重现相同的真实标签y

因此拟合生成器仅使用X_train:

datagen.fit(X_train)

如果您不想将增强后的数据传递给训练,您可以在拟合后循环生成器以获取生成的样本:

for X_batch, y_batch in datagen.flow(X_train, y_train, batch_size=32):
# Do whatever you want with the generated X_batch and y_batch.

我知道这是你愿意做的。 请参阅keras doc 上的示例。

【讨论】:

  • 就像我提到的,我想对 X_train 和 y_train 应用增强。我怎样才能做到这一点。我的输入 x_train 是一组散焦图像(从实验中获得)和输出 y_train= 聚焦图像。我想乘以我的数据集,为此,当我增加时,我对 x_train 应用的效果需要应用于 y_train
  • 我会说 keras 做不到。另一种选择是使用scikit-image.transform 生成新图像,对X_trainy_train 使用相同的转换。
猜你喜欢
  • 2018-11-12
  • 1970-01-01
  • 2021-05-06
  • 2022-01-14
  • 2020-04-28
  • 2021-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多