激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

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

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

在keras中model.fit_generator()和model.fit()的區別說明

2020-06-18 09:31Hodors Python

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

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

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)

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

參數

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

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

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

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

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

callbacks: 一系列的 keras.callbacks.Callback 實例。一系列可以在訓練時使用的回調函數。 詳見 callbacks。

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

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

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

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

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

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

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

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

返回

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

異常

RuntimeError: 如果模型從未編譯。

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

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 實例)逐批生成的數據,按批次訓練模型。

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

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

參數

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

一個 (inputs, targets) 元組

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

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

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

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

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

callbacks: keras.callbacks.Callback 實例的列表。在訓練時調用的一系列回調函數。

validation_data: 它可以是以下之一:

驗證數據的生成器或 Sequence 實例

一個 (inputs, targets) 元組

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

在每個 epoch 結束時評估損失和任何模型指標。該模型不會對此數據進行訓練。

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

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

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

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

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

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

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

返回

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

異常

ValueError: 如果生成器生成的數據格式不正確。

?
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:
  # 從文件中的每一行生成輸入數據和標簽的 numpy 數組,
  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)

總結:

在使用fit函數的時候,需要有batch_size,但是在使用fit_generator時需要有steps_per_epoch

以上這篇在keras中model.fit_generator()和model.fit()的區別說明就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: xxxeexxx性国产| 日本网站在线播放 | 国产亚洲精品影达达兔 | 亚洲一区二区三区日本久久九 | 色猫av| 亚洲啪啪 | 欧美日韩亚州综合 | 美女扒开腿让男生桶爽网站 | 国产精品免费看 | 色吧久久 | 毛片免费视频网站 | 福利在线免费 | 成年免费视频黄网站在线观看 | 精品国产乱码久久久久久久 | av电影手机在线看 | 亚洲一区二区免费 | 国产成人av一区二区 | 久久国产夫妻视频 | 国产精品久久99精品毛片三a | 男女亲热网站 | 高清成人在线 | 久久精品国产精品亚洲 | 免费人成在线观看网站 | 激情视频免费观看 | 色域tv | 久久久久久久爱 | 亚洲第一成网站 | 狠狠婷婷综合久久久久久妖精 | 92看片淫黄大片欧美看国产片 | 国产精品视频专区 | 成人午夜视频在线观看 | 色中色激情影院 | 天天夜夜操操 | 国产精品久久久久久久成人午夜 | 国产一级淫片免费看 | 男人天堂新地址 | 国内精品久久久久久久星辰影视 | 美女羞羞视频在线观看 | 亚州视频在线 | 中文字幕在线观看91 | 国产一级aaa全黄毛片 |