簡體   English   中英

更大的批量大小減少了培訓時間

[英]Bigger batch size reduce training time

我正在使用CNN進行圖像分類; 我用keras ImageDataGenerator進行數據擴充

我想我錯過了一些東西。

A ///  train =model.fit_generator(image_gen.flow(train_X, train_label, batch_size=64),epochs=100,verbose=1,validation_data=(valid_X, valid_label),class_weight=class_weights,callbacks=[metrics],steps_per_epoch=len(train_X)/64)  # 1 epoch =20 secondes

B /// train =model.fit_generator(image_gen.flow(train_X, train_label, batch_size=15),epochs=100,verbose=1,validation_data=(valid_X, valid_label),class_weight=class_weights,callbacks=[metrics],steps_per_epoch=len(train_X)/15)  # 1 epoch = 60 secondes

C /// train =model.fit_generator(image_gen.flow(train_X, train_label, batch_size=256),epochs=100,verbose=1,validation_data=(valid_X, valid_label),class_weight=class_weights,callbacks=[metrics],steps_per_epoch=len(train_X)/256)   # 1 epoch =345secondes



在情況AI中使用批量大小為64,我需要每個時期20秒。 批量大小為15的情況B我需要每個時期60秒。 批量大小為256的情況C需要每個時期345次借調。

我的理解:

- 批量大小=用於重量更新的圖像數量 如果我得到100張圖像,批量大小為10,則每個時期的重量將更新10次。 我對嗎?

Steps_per_epochKeras DataAugmenteur生成的圖像數。 由於我指定了值長度(Train_X)/ batch_size,這應該是指,在重量更新之前使用batch_size數據。 我對嗎?

如果我的兩個肯定是真的,那應該意味着減少批量大小將增加1個時期的時間,因為將有更多的重量更新。

為什么我的較低的紀元時間是我使用64的批量大小? 為什么我使用批量大小= 256時有一個大的紀元時間?

如果您了解更多信息或重新制定,請與我們聯系

編輯:我不明白為什么,但是當我設置批量大小= 256時,我有一個256個時期的總步數(樣本批次),它應該是len(Train_X)/ 256(= 58)

在這種情況下,更新重量的時間幾乎不計算在內

你可以檢查計算是否需要在內存和磁盤之間傳輸東西

使用256尺寸時

如果要使用添加批量大小來減少時間,可以設置並發任務!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM