【问题标题】:Data Augmentation: What exactly does steps_per_epoch mean?数据增强:steps_per_epoch 到底是什么意思?
【发布时间】:2020-10-23 11:07:23
【问题描述】:

我是深度学习的新手。我有一个基本的疑问。这对你来说可能听起来很愚蠢。
我正在从卫星图像中提取道路。我只有 1080 张样本图像。这就是我应用数据增强的原因。

以下是数据增强的代码

aug = ImageDataGenerator(rotation_range=10,
zoom_range=0.15,
horizontal_flip=True,
fill_mode="nearest")

所有这三个属性,即rotation_range、zoom_range 和horizo​​ntal_flip 将分别应用。我的意思是我会得到一张旋转图像、一张缩放图像和一张水平翻转图像。我猜对了吗?

len(trainX)  # output 875

现在,我正在将我的训练数据拟合到我的模型上

batch_size = 4
epochs = 10
roadModel_train = roadModel.fit(
    x=aug.flow(trainX, trainY, batch_size=batch_size),
    validation_data=(validX, validY),
    epochs=epochs,
  verbose=1,steps_per_epoch=len(trainX)//batch_size)

我的输出:

我的问题是,这个 218 表示什么?我知道,它通常表示样本(或我的情况下的图像)的总数。

但是当我们应用数据增强时它表示什么?它需要 218 张图像还是 218 * 3(数据增强中的应用属性)= 654 张图像?

我的数据集图像的像素大小为 10m。那么我应该如何扩充数据呢?我应该应用哪些属性?

如果您能提供帮助,我将非常高兴!

提前致谢!

【问题讨论】:

    标签: keras deep-learning conv-neural-network data-augmentation


    【解决方案1】:

    在您的 roadModel.fit() 中,您将 4 设置为批量大小。这意味着每批拍摄 4 张图像,并根据该批计算损失。获取训练集中的每张图像需要 218 步。

    如果我们使用218*4,我们会得到872。你的训练集的长度是875,所以这是有道理的。

    批处理用于限制运行网络所需的 RAM 量。在这种情况下,我建议设置 batch_size=35,因为这将导致每个 epoch 执行 25 步。

    ImageDataGenerator 增强随机应用于每个图像。根据您的参数,有些会被翻转,有些会放大到 1.15 倍。

    我希望这能回答你的问题。

    有关所有增强功能的更多详细信息,请访问here

    【讨论】:

      猜你喜欢
      • 2011-04-07
      • 1970-01-01
      • 2017-08-07
      • 2017-07-20
      • 2014-09-23
      • 2014-07-25
      • 2012-09-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多