2017-10-06 54 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