溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

keras中訓(xùn)練數(shù)據(jù)的方式有哪些

發(fā)布時間:2022-03-01 10:26:52 來源:億速云 閱讀:179 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹了keras中訓(xùn)練數(shù)據(jù)的方式有哪些的相關(guān)知識,內(nèi)容詳細(xì)易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇keras中訓(xùn)練數(shù)據(jù)的方式有哪些文章都會有所收獲,下面我們一起來看看吧。

Keras訓(xùn)練數(shù)據(jù)可以采用很多種方式,其中比較常見的三種分別是fit、fit_generator和train_on_batch。第三種和前兩種差別比較大,所以本篇文章主要進(jìn)行fit和fit_generator的對比。

一、train_on_batch

model.train_on_batch(batchX, batchY)

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

二、fit

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

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

三、fit_generator

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

接口如下:

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ù),當(dāng)生成器返回steps_per_epoch次數(shù)據(jù)時,計(jì)一個epoch結(jié)束,執(zhí)行下一個epoch。也就是一個epoch下執(zhí)行多少次batch_size。

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

callbacks=None, list,list中的元素為keras.callbacks.Callback對象,在訓(xùn)練過程中會調(diào)用list中的回調(diào)函數(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)

補(bǔ)充: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產(chǎn)生一批批的數(shù)據(jù)用于訓(xùn)練模型。generator可以和模型并行運(yùn)行,例如,可以使用CPU生成批數(shù)據(jù)同時在GPU上訓(xùn)練模型。

參數(shù):

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

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

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

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

use_multiprocessing:布爾值。當(dāng)為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)

關(guān)于“keras中訓(xùn)練數(shù)據(jù)的方式有哪些”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“keras中訓(xùn)練數(shù)據(jù)的方式有哪些”知識都有一定的了解,大家如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI