【问题标题】:Number of samples in each epoch for CNN KerasCNN Keras 在每个 epoch 中的样本数
【发布时间】:2017-10-07 00:25:17
【问题描述】:

我无法理解每个时期步骤中的观察次数。

我在 Keras 中实现了 CNN 来识别图片中的方格图案,并且。我准备了 240 张用于训练的图像和 60 张用于交叉验证的图像,并进行了数据增强。

train_datagen = ImageDataGenerator(rescale=1./255,
        shear_range=0.2,
        zoom_range=0.2,
        horizontal_flip=True)

test_datagen = ImageDataGenerator(rescale=1. / 255)

train_generator = train_datagen.flow_from_directory(
    train_data_dir,
    target_size=(img_width, img_height),
    batch_size=32,
    class_mode='categorical')

validation_generator = test_datagen.flow_from_directory(
    validation_data_dir,
    target_size=(img_width, img_height),
    batch_size=32,
    class_mode='categorical')

接下来我训练了我的 CNN:

history = model.fit_generator(
                train_generator,
                steps_per_epoch = 240,
                epochs=epochs,
                validation_data=validation_generator,
                validation_steps= 60) 

我得到了输出

Found 240 images belonging to 2 classes.
Found 60 images belonging to 2 classes.
Epoch 1/50
7/7[==============================] - 45s - loss: 4.1905 - acc: 0.4777 - val_loss: 0.7081 - val_acc: 0.5000  
Epoch 2/50
7/7[==============================] - 41s - loss: 0.7049 - acc: 0.0.4973 - val_loss: 0.6851 - val_acc: 0.6786

我的问题是为什么是 7?如果我正确理解它应该是 240。这是 7 因为浴缸的大小?

【问题讨论】:

    标签: tensorflow keras


    【解决方案1】:

    您的 batch_size 是 32。这意味着每步使用 32 张图像。 对于 1 个 epoch,它需要解析 240。 240/32 = 7.5 您需要将 steps_per_epoch 从 240 更改为 8 (np.ceil(7.5)) 和validation_steps 从 60 到 2

    【讨论】:

    • 谢谢!现在我明白了。我还有一个问题,这个图像数据生成器是如何工作的?对于每个调用(对于每个时期),它会在图片中生成这种随机变化?
    • 没错。对于每个epoch ImageDataGenerator,随机生成图片的变化。
    • 好的。非常感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2020-12-09
    • 2020-05-05
    • 2020-10-17
    • 2017-06-06
    • 1970-01-01
    • 2018-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多