最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Keras之fit_generator與train_on_batch用法

 更新時間:2020年06月17日 10:42:15   作者:鵲踏枝-碼農(nóng)  
這篇文章主要介紹了Keras之fit_generator與train_on_batch用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

關(guān)于Keras中,當(dāng)數(shù)據(jù)比較大時,不能全部載入內(nèi)存,在訓(xùn)練的時候就需要利用train_on_batch或fit_generator進行訓(xùn)練了。

兩者均是利用生成器,每次載入一個batch-size的數(shù)據(jù)進行訓(xùn)練。

那么fit_generator與train_on_batch該用哪一個呢?

train_on_batch(self, x, y, class_weight=None, sample_weight=None)

fit_generator(self, generator, samples_per_epoch, nb_epoch, verbose=1, callbacks=[], validation_data=None, nb_val_samples=None, class_weight=None, max_q_size=10)

推薦使用fit_generator,因為其同時可以設(shè)置 validation_data,但是采用train_on_batch也沒什么問題,這個主要看個人習(xí)慣了,沒有什么標(biāo)準(zhǔn)的答案。

下面是François Chollet fchollet本人給出的解答:

With fit_generator, you can use a generator for the validation data as well. In general I would recommend using fit_generator, but using train_on_batch works fine too. These methods only exist as for the sake of convenience in different use cases, there is no "correct" method.

補充知識:tf.keras中model.fit_generator()和model.fit()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

返回

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

異常

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ù)據(jù),按批次訓(xùn)練模型。

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

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

參數(shù)

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

一個 (inputs, targets) 元組

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

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

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

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

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

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

validation_data: 它可以是以下之一:

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

一個 (inputs, targets) 元組

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

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

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

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

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

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

use_multiprocessing: 布爾值。如果 True,則使用基于進程的多線程。 如未指定, use_multiprocessing 將默認為 False。 請注意,由于此實現(xiàn)依賴于多進程,所以不應(yīng)將不可傳遞的參數(shù)傳遞給生成器,因為它們不能被輕易地傳遞給子進程。

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

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

返回

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

異常

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

model.fit_generator(
  train_generator,
  steps_per_epoch=10, # 100
  validation_steps=1, # 50
  epochs=600, # 20個周期
  validation_data=validation_generator)

以上這篇Keras之fit_generator與train_on_batch用法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于python使MUI登錄頁面的美化

    基于python使MUI登錄頁面的美化

    之前的文章Python用HBuilder創(chuàng)建交流社區(qū)APP我們已經(jīng)在HBuilder上創(chuàng)建的APP ,現(xiàn)HBuilder中已經(jīng)有了登錄頁面的相關(guān)的html文件,但是按照html已有的頁面來看,它缺少外觀的美化,本篇文章主要講的是MUI登錄頁面的美化。,需要的朋友可以參考一下
    2021-11-11
  • python實現(xiàn)經(jīng)典排序算法的示例代碼

    python實現(xiàn)經(jīng)典排序算法的示例代碼

    這篇文章主要介紹了python實現(xiàn)經(jīng)典排序算法的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 如何使用Python JSON解析和轉(zhuǎn)換數(shù)據(jù)

    如何使用Python JSON解析和轉(zhuǎn)換數(shù)據(jù)

    JSON 是文本,使用 JavaScript 對象表示法編寫,Python 有一個內(nèi)置的 json 包,可用于處理 JSON 數(shù)據(jù),本文給大家介紹使用Python JSON解析和轉(zhuǎn)換數(shù)據(jù)的方法,感興趣的朋友跟隨小編一起看看吧
    2023-11-11
  • 為python設(shè)置socket代理的方法

    為python設(shè)置socket代理的方法

    這篇文章主要介紹了為python設(shè)置socket代理的方法,需要的朋友可以參考下
    2015-01-01
  • Python隊列的定義與使用方法示例

    Python隊列的定義與使用方法示例

    這篇文章主要介紹了Python隊列的定義與使用方法,結(jié)合具體實例形式分析了Python定義及使用隊列的具體操作技巧與注意事項,需要的朋友可以參考下
    2017-06-06
  • python 發(fā)送get請求接口詳解

    python 發(fā)送get請求接口詳解

    這篇文章主要介紹了python 發(fā)送get請求接口詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • python簡單操作excle的方法

    python簡單操作excle的方法

    Python操作Excle文件:使用xlwt庫將數(shù)據(jù)寫入Excel表格,使用xlrd 庫從Excel讀取數(shù)據(jù)。這篇文章主要介紹了python簡單操作excle的方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-09-09
  • Python+Wordpress制作小說站

    Python+Wordpress制作小說站

    本文給大家講解的是使用python實現(xiàn)采集并入庫到WordPress小說站中,非常的簡單使用,有需要的小伙伴可以參考下
    2017-04-04
  • 在Gnumeric下使用Python腳本操作表格的教程

    在Gnumeric下使用Python腳本操作表格的教程

    這篇文章主要介紹了在Gnumeric下使用Python腳本操作表格的教程,本文來自于IBM官方網(wǎng)站,需要的朋友可以參考下
    2015-04-04
  • 最炫Python煙花代碼全解析

    最炫Python煙花代碼全解析

    2022虎年新年即將來臨,小編為大家?guī)砹艘粋€利用Python編寫的虎年煙花特效,堪稱全網(wǎng)最絢爛,文中的示例代碼簡潔易懂,感興趣的同學(xué)可以動手試一試
    2022-02-02

最新評論

东辽县| 平阳县| 开平市| 同江市| 雷波县| 西宁市| 巨野县| 策勒县| 山阳县| 勐海县| 吉首市| 全南县| 石林| 连城县| 玉树县| 瑞昌市| 获嘉县| 故城县| 佳木斯市| 盖州市| 疏勒县| 阳山县| 新密市| 镇康县| 博乐市| 灵武市| 中山市| 济阳县| 华池县| 柯坪县| 揭西县| 兴山县| 承德县| 延安市| 民和| 天津市| 藁城市| 嘉祥县| 寿宁县| 南宁市| 阜新市|