一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語(yǔ)言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - 在keras中model.fit_generator()和model.fit()的區(qū)別說(shuō)明

在keras中model.fit_generator()和model.fit()的區(qū)別說(shuō)明

2020-06-18 09:31Hodors Python

這篇文章主要介紹了在keras中model.fit_generator()和model.fit()的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

首先Keras中的fit()函數(shù)傳入的x_train和y_train是被完整的加載進(jìn)內(nèi)存的,當(dāng)然用起來(lái)很方便,但是如果我們數(shù)據(jù)量很大,那么是不可能將所有數(shù)據(jù)載入內(nèi)存的,必將導(dǎo)致內(nèi)存泄漏,這時(shí)候我們可以用fit_generator函數(shù)來(lái)進(jìn)行訓(xùn)練。

keras中文文檔

fit

fit(x=None, y=None, batch_size=None, epochs=1, verbose=1, callbacks=None, validation_split=0.0, validation_data=None, shuffle=True, class_weight=None, sample_weight=None, initial_epoch=0, steps_per_epoch=None, validation_steps=None)

以給定數(shù)量的輪次(數(shù)據(jù)集上的迭代)訓(xùn)練模型。

參數(shù)

x: 訓(xùn)練數(shù)據(jù)的 Numpy 數(shù)組(如果模型只有一個(gè)輸入), 或者是 Numpy 數(shù)組的列表(如果模型有多個(gè)輸入)。 如果模型中的輸入層被命名,你也可以傳遞一個(gè)字典,將輸入層名稱映射到 Numpy 數(shù)組。 如果從本地框架張量饋送(例如 TensorFlow 數(shù)據(jù)張量)數(shù)據(jù),x 可以是 None(默認(rèn))。

y: 目標(biāo)(標(biāo)簽)數(shù)據(jù)的 Numpy 數(shù)組(如果模型只有一個(gè)輸出), 或者是 Numpy 數(shù)組的列表(如果模型有多個(gè)輸出)。 如果模型中的輸出層被命名,你也可以傳遞一個(gè)字典,將輸出層名稱映射到 Numpy 數(shù)組。 如果從本地框架張量饋送(例如 TensorFlow 數(shù)據(jù)張量)數(shù)據(jù),y 可以是 None(默認(rèn))。

batch_size: 整數(shù)或 None。每次梯度更新的樣本數(shù)。如果未指定,默認(rèn)為 32。

epochs: 整數(shù)。訓(xùn)練模型迭代輪次。一個(gè)輪次是在整個(gè) x 和 y 上的一輪迭代。 請(qǐng)注意,與 initial_epoch 一起,epochs 被理解為 「最終輪次」。模型并不是訓(xùn)練了 epochs 輪,而是到第 epochs 輪停止訓(xùn)練。

verbose: 0, 1 或 2。日志顯示模式。 0 = 安靜模式, 1 = 進(jìn)度條, 2 = 每輪一行。

callbacks: 一系列的 keras.callbacks.Callback 實(shí)例。一系列可以在訓(xùn)練時(shí)使用的回調(diào)函數(shù)。 詳見 callbacks。

validation_split: 0 和 1 之間的浮點(diǎn)數(shù)。用作驗(yàn)證集的訓(xùn)練數(shù)據(jù)的比例。 模型將分出一部分不會(huì)被訓(xùn)練的驗(yàn)證數(shù)據(jù),并將在每一輪結(jié)束時(shí)評(píng)估這些驗(yàn)證數(shù)據(jù)的誤差和任何其他模型指標(biāo)。 驗(yàn)證數(shù)據(jù)是混洗之前 x 和y 數(shù)據(jù)的最后一部分樣本中。

validation_data: 元組 (x_val,y_val) 或元組 (x_val,y_val,val_sample_weights), 用來(lái)評(píng)估損失,以及在每輪結(jié)束時(shí)的任何模型度量指標(biāo)。 模型將不會(huì)在這個(gè)數(shù)據(jù)上進(jìn)行訓(xùn)練。這個(gè)參數(shù)會(huì)覆蓋 validation_split。

shuffle: 布爾值(是否在每輪迭代之前混洗數(shù)據(jù))或者 字符串 (batch)。 batch 是處理 HDF5 數(shù)據(jù)限制的特殊選項(xiàng),它對(duì)一個(gè) batch 內(nèi)部的數(shù)據(jù)進(jìn)行混洗。 當(dāng) steps_per_epoch 非 None 時(shí),這個(gè)參數(shù)無(wú)效。

class_weight: 可選的字典,用來(lái)映射類索引(整數(shù))到權(quán)重(浮點(diǎn))值,用于加權(quán)損失函數(shù)(僅在訓(xùn)練期間)。 這可能有助于告訴模型 「更多關(guān)注」來(lái)自代表性不足的類的樣本。

sample_weight: 訓(xùn)練樣本的可選 Numpy 權(quán)重?cái)?shù)組,用于對(duì)損失函數(shù)進(jìn)行加權(quán)(僅在訓(xùn)練期間)。 您可以傳遞與輸入樣本長(zhǎng)度相同的平坦(1D)Numpy 數(shù)組(權(quán)重和樣本之間的 1:1 映射), 或者在時(shí)序數(shù)據(jù)的情況下,可以傳遞尺寸為 (samples, sequence_length) 的 2D 數(shù)組,以對(duì)每個(gè)樣本的每個(gè)時(shí)間步施加不同的權(quán)重。 在這種情況下,你應(yīng)該確保在 compile() 中指定 sample_weight_mode="temporal"。

initial_epoch: 整數(shù)。開始訓(xùn)練的輪次(有助于恢復(fù)之前的訓(xùn)練)。

steps_per_epoch: 整數(shù)或 None。 在聲明一個(gè)輪次完成并開始下一個(gè)輪次之前的總步數(shù)(樣品批次)。 使用 TensorFlow 數(shù)據(jù)張量等輸入張量進(jìn)行訓(xùn)練時(shí),默認(rèn)值 None 等于數(shù)據(jù)集中樣本的數(shù)量除以 batch 的大小,如果無(wú)法確定,則為 1。

validation_steps: 只有在指定了 steps_per_epoch 時(shí)才有用。停止前要驗(yàn)證的總步數(shù)(批次樣本)。

返回

一個(gè) History 對(duì)象。其 History.history 屬性是連續(xù) epoch 訓(xùn)練損失和評(píng)估值,以及驗(yàn)證集損失和評(píng)估值的記錄(如果適用)。

異常

RuntimeError: 如果模型從未編譯。

ValueError: 在提供的輸入數(shù)據(jù)與模型期望的不匹配的情況下。

fit_generator

fit_generator(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 生成器(或 Sequence 實(shí)例)逐批生成的數(shù)據(jù),按批次訓(xùn)練模型。

生成器與模型并行運(yùn)行,以提高效率。 例如,這可以讓你在 CPU 上對(duì)圖像進(jìn)行實(shí)時(shí)數(shù)據(jù)增強(qiáng),以在 GPU 上訓(xùn)練模型。

keras.utils.Sequence 的使用可以保證數(shù)據(jù)的順序, 以及當(dāng) use_multiprocessing=True 時(shí) ,保證每個(gè)輸入在每個(gè) epoch 只使用一次。

參數(shù)

generator: 一個(gè)生成器,或者一個(gè) Sequence (keras.utils.Sequence) 對(duì)象的實(shí)例, 以在使用多進(jìn)程時(shí)避免數(shù)據(jù)的重復(fù)。 生成器的輸出應(yīng)該為以下之一:

一個(gè) (inputs, targets) 元組

一個(gè) (inputs, targets, sample_weights) 元組。

這個(gè)元組(生成器的單個(gè)輸出)組成了單個(gè)的 batch。 因此,這個(gè)元組中的所有數(shù)組長(zhǎng)度必須相同(與這一個(gè) batch 的大小相等)。 不同的 batch 可能大小不同。 例如,一個(gè) epoch 的最后一個(gè) batch 往往比其他 batch 要小, 如果數(shù)據(jù)集的尺寸不能被 batch size 整除。 生成器將無(wú)限地在數(shù)據(jù)集上循環(huán)。當(dāng)運(yùn)行到第 steps_per_epoch 時(shí),記一個(gè) epoch 結(jié)束。

steps_per_epoch: 在聲明一個(gè) epoch 完成并開始下一個(gè) epoch 之前從 generator 產(chǎn)生的總步數(shù)(批次樣本)。 它通常應(yīng)該等于你的數(shù)據(jù)集的樣本數(shù)量除以批量大小。 對(duì)于 Sequence,它是可選的:如果未指定,將使用len(generator) 作為步數(shù)。

epochs: 整數(shù)。訓(xùn)練模型的迭代總輪數(shù)。一個(gè) epoch 是對(duì)所提供的整個(gè)數(shù)據(jù)的一輪迭代,如 steps_per_epoch 所定義。注意,與 initial_epoch 一起使用,epoch 應(yīng)被理解為「最后一輪」。模型沒有經(jīng)歷由 epochs 給出的多次迭代的訓(xùn)練,而僅僅是直到達(dá)到索引 epoch 的輪次。

verbose: 0, 1 或 2。日志顯示模式。 0 = 安靜模式, 1 = 進(jìn)度條, 2 = 每輪一行。

callbacks: keras.callbacks.Callback 實(shí)例的列表。在訓(xùn)練時(shí)調(diào)用的一系列回調(diào)函數(shù)。

validation_data: 它可以是以下之一:

驗(yàn)證數(shù)據(jù)的生成器或 Sequence 實(shí)例

一個(gè) (inputs, targets) 元組

一個(gè) (inputs, targets, sample_weights) 元組。

在每個(gè) epoch 結(jié)束時(shí)評(píng)估損失和任何模型指標(biāo)。該模型不會(huì)對(duì)此數(shù)據(jù)進(jìn)行訓(xùn)練。

validation_steps: 僅當(dāng) validation_data 是一個(gè)生成器時(shí)才可用。 在停止前 generator 生成的總步數(shù)(樣本批數(shù))。 對(duì)于 Sequence,它是可選的:如果未指定,將使用 len(generator) 作為步數(shù)。

class_weight: 可選的將類索引(整數(shù))映射到權(quán)重(浮點(diǎn))值的字典,用于加權(quán)損失函數(shù)(僅在訓(xùn)練期間)。 這可以用來(lái)告訴模型「更多地關(guān)注」來(lái)自代表性不足的類的樣本。

max_queue_size: 整數(shù)。生成器隊(duì)列的最大尺寸。 如未指定,max_queue_size 將默認(rèn)為 10。

workers: 整數(shù)。使用的最大進(jìn)程數(shù)量,如果使用基于進(jìn)程的多線程。 如未指定,workers 將默認(rèn)為 1。如果為 0,將在主線程上執(zhí)行生成器。

use_multiprocessing: 布爾值。如果 True,則使用基于進(jìn)程的多線程。 如未指定, use_multiprocessing 將默認(rèn)為 False。 請(qǐng)注意,由于此實(shí)現(xiàn)依賴于多進(jìn)程,所以不應(yīng)將不可傳遞的參數(shù)傳遞給生成器,因?yàn)樗鼈儾荒鼙惠p易地傳遞給子進(jìn)程。

shuffle: 是否在每輪迭代之前打亂 batch 的順序。 只能與 Sequence (keras.utils.Sequence) 實(shí)例同用。

initial_epoch: 開始訓(xùn)練的輪次(有助于恢復(fù)之前的訓(xùn)練)。

返回

一個(gè) History 對(duì)象。其 History.history 屬性是連續(xù) epoch 訓(xùn)練損失和評(píng)估值,以及驗(yàn)證集損失和評(píng)估值的記錄(如果適用)。

異常

ValueError: 如果生成器生成的數(shù)據(jù)格式不正確。

?
1
2
3
4
5
6
7
8
9
10
11
def generate_arrays_from_file(path):
 while True:
 with open(path) as f:
  for line in f:
  # 從文件中的每一行生成輸入數(shù)據(jù)和標(biāo)簽的 numpy 數(shù)組,
  x1, x2, y = process_line(line)
  yield ({'input_1': x1, 'input_2': x2}, {'output': y})
 f.close()
 
model.fit_generator(generate_arrays_from_file('/my_file.txt'),
   steps_per_epoch=10000, epochs=10)

總結(jié):

在使用fit函數(shù)的時(shí)候,需要有batch_size,但是在使用fit_generator時(shí)需要有steps_per_epoch

以上這篇在keras中model.fit_generator()和model.fit()的區(qū)別說(shuō)明就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。

原文鏈接:https://blog.csdn.net/Hodors/article/details/97500808

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 男生同性视频twink在线 | 国产成人精品三级在线 | 黄色a | 色亚洲色图 | 操美女b | 亚洲国产精品久久丫 | 国内精品一区二区三区东京 | 女bbbxxx毛片视频 | 校园高h | 99re在线视频免费观看 | 福利片福利一区二区三区 | 美女班主任让我爽了一夜视频 | 91精品综合国产在线观看 | 亚洲国产精品第一页 | 四虎在线网址 | 无人在线观看免费高清视频播放 | 欧美老肥妇bbbw | 国产精品网站在线观看 | 男女男精品网站免费观看 | 国产专区亚洲欧美另类在线 | 538精品视频 | 欧美国产在线观看 | 好男人在线观看hd中字 | 午夜爱情动作片P | 啊啊啊好大好爽视频 | 国产成+人+综合+欧美 亚洲 | 369手机看片| 久久草香蕉频线观 | 性插图动态图无遮挡 | 亚洲国产精品第一页 | 美女张开下身让男人桶 | 国产精品人人视频 | 亚洲AV久久无码精品九号 | 欧美一区二区视频 | free白嫩性hd | 日韩在线观看一区二区不卡视频 | 3黑人巨大vs北岛玲 3d肉浦团在线观看 3d动漫免费 | 日本强不卡在线观看 | 免看一级a一片成人123 | 青草国产在线视频 | 日本精品人妖shemale人妖 |