濮阳杆衣贸易有限公司

主頁 > 知識庫 > 基于keras中訓練數(shù)據(jù)的幾種方式對比(fit和fit_generator)

基于keras中訓練數(shù)據(jù)的幾種方式對比(fit和fit_generator)

熱門標簽:騰訊外呼線路 白銀外呼系統(tǒng) 海南400電話如何申請 公司電話機器人 廣告地圖標注app 激戰(zhàn)2地圖標注 唐山智能外呼系統(tǒng)一般多少錢 陜西金融外呼系統(tǒng) 哈爾濱ai外呼系統(tǒng)定制

一、train_on_batch

model.train_on_batch(batchX, batchY)

train_on_batch函數(shù)接受單批數(shù)據(jù),執(zhí)行反向傳播,然后更新模型參數(shù),該批數(shù)據(jù)的大小可以是任意的,即,它不需要提供明確的批量大小,屬于精細化控制訓練模型,大部分情況下我們不需要這么精細,99%情況下使用fit_generator訓練方式即可,下面會介紹。

二、fit

model.fit(x_train, y_train, batch_size=32, epochs=10)

fit的方式是一次把訓練數(shù)據(jù)全部加載到內存中,然后每次批處理batch_size個數(shù)據(jù)來更新模型參數(shù),epochs就不用多介紹了。這種訓練方式只適合訓練數(shù)據(jù)量比較小的情況下使用。

三、fit_generator

利用Python的生成器,逐個生成數(shù)據(jù)的batch并進行訓練,不占用大量內存,同時生成器與模型將并行執(zhí)行以提高效率。例如,該函數(shù)允許我們在CPU上進行實時的數(shù)據(jù)提升,同時在GPU上進行模型訓練

接口如下:

fit_generator(self, generator, steps_per_epoch, epochs=1, verbose=1, callbacks=None, validation_data=None, validation_steps=None, class_weight=None, max_q_size=10, workers=1, pickle_safe=False, initial_epoch=0)

generator:生成器函數(shù)

steps_per_epoch:整數(shù),當生成器返回steps_per_epoch次數(shù)據(jù)時,計一個epoch結束,執(zhí)行下一個epoch。也就是一個epoch下執(zhí)行多少次batch_size。

epochs:整數(shù),控制數(shù)據(jù)迭代的輪數(shù),到了就結束訓練。

callbacks=None, list,list中的元素為keras.callbacks.Callback對象,在訓練過程中會調用list中的回調函數(shù)

舉例:

def generate_arrays_from_file(path):
            while True:
                with open(path) as f:
                    for line in f:
                        # create numpy arrays of input data
                        # and labels, from each line in the file
                        x1, x2, y = process_line(line)
                        yield ({'input_1': x1, 'input_2': x2}, {'output': y})
 
model.fit_generator(generate_arrays_from_file('./my_folder'),
                            steps_per_epoch=10000, epochs=10)

補充:keras.fit_generator()屬性及取值

如下所示:

fit_generator(self, generator, 
                    steps_per_epoch=None, 
                    epochs=1, 
                    verbose=1, 
                    callbacks=None, 
                    validation_data=None, 
                    validation_steps=None,  
                    class_weight=None,
                    max_queue_size=10,   
                    workers=1, 
                    use_multiprocessing=False, 
                    shuffle=True, 
                    initial_epoch=0)

通過Python generator產生一批批的數(shù)據(jù)用于訓練模型。generator可以和模型并行運行,例如,可以使用CPU生成批數(shù)據(jù)同時在GPU上訓練模型。

參數(shù):

generator:一個generator或Sequence實例,為了避免在使用multiprocessing時直接復制數(shù)據(jù)。

steps_per_epoch:從generator產生的步驟的總數(shù)(樣本批次總數(shù))。通常情況下,應該等于數(shù)據(jù)集的樣本數(shù)量除以批量的大小。

epochs:整數(shù),在數(shù)據(jù)集上迭代的總數(shù)。

works:在使用基于進程的線程時,最多需要啟動的進程數(shù)量。

use_multiprocessing:布爾值。當為True時,使用基于基于過程的線程。

例如:

datagen = ImageDataGenator(...)
model.fit_generator(datagen.flow(x_train, y_train,
                                 batch_size=batch_size),
                    epochs=epochs,
                    validation_data=(x_test, y_test),
                    workers=4)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • keras修改backend的簡單方法
  • keras的get_value運行越來越慢的解決方案
  • 淺談Keras中fit()和fit_generator()的區(qū)別及其參數(shù)的坑
  • Keras保存模型并載入模型繼續(xù)訓練的實現(xiàn)
  • TensorFlow2.0使用keras訓練模型的實現(xiàn)
  • tensorflow2.0教程之Keras快速入門
  • 淺析關于Keras的安裝(pycharm)和初步理解
  • 基于Keras的擴展性使用

標簽:益陽 常德 惠州 黑龍江 鷹潭 四川 上海 黔西

巨人網(wǎng)絡通訊聲明:本文標題《基于keras中訓練數(shù)據(jù)的幾種方式對比(fit和fit_generator)》,本文關鍵詞  基于,keras,中,訓練,數(shù)據(jù),;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《基于keras中訓練數(shù)據(jù)的幾種方式對比(fit和fit_generator)》相關的同類信息!
  • 本頁收集關于基于keras中訓練數(shù)據(jù)的幾種方式對比(fit和fit_generator)的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    石狮市| 双流县| 海南省| 石家庄市| 丰县| 福州市| 巢湖市| 利辛县| 武鸣县| 平顶山市| 南安市| 望江县| 绥中县| 南皮县| 陇西县| 青田县| 五常市| 来安县| 那坡县| 突泉县| 开封市| 师宗县| 怀来县| 凌云县| 博乐市| 公主岭市| 从江县| 宜川县| 通江县| 曲松县| 安西县| 东乡族自治县| 二手房| 虹口区| 曲沃县| 南涧| 贺州市| 庆云县| 霍城县| 西丰县| 永福县|