2017-10-06 33 views
0

我在理解每个历元步骤中的观测次数方面存在问题。CNN Keras每个历元的样本数量

我在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因为浴缸的大小?

回答

0

您的batch_size是32.它表示每步使用32个图像。 对于1个划时代它需要解析240 三十二分之二百四十= 7.5 则需要从240改变steps_per_epoch从60 8(np.ceil(7.5)) 和validation_steps至2

+0

谢谢!现在我明白了。 我还有一个问题,这个图像数据生成器如何工作?对于每个呼叫(对于每个时期),它会在图片中产生这种随机变化? – Witek

+0

没错。对于每个时代ImageDataGenerator,都会随机生成图片中的更改。 –

+0

好的。非常感谢您的帮助! – Witek