国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

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

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

服務器之家 - 腳本之家 - Python - 淺談keras2 predict和fit_generator的坑

淺談keras2 predict和fit_generator的坑

2020-06-18 09:37BYR_jiandong Python

這篇文章主要介紹了淺談keras2 predict和fit_generator的坑,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

1、使用predict時,必須設置batch_size,否則效率奇低。

查看keras文檔中,predict函數原型:

predict(self, x, batch_size=32, verbose=0)

說明:

只使用batch_size=32,也就是說每次將batch_size=32的數據通過PCI總線傳到GPU,然后進行預測。在一些問題中,batch_size=32明顯是非常小的。而通過PCI傳數據是非常耗時的。

所以,使用的時候會發現預測數據時效率奇低,其原因就是batch_size太小了。

經驗:

使用predict時,必須人為設置好batch_size,否則PCI總線之間的數據傳輸次數過多,性能會非常低下。

2、fit_generator

說明:keras 中 fit_generator參數steps_per_epoch已經改變含義了,目前的含義是一個epoch分成多少個batch_size。舊版的含義是一個epoch的樣本數目。

如果說訓練樣本樹N=1000,steps_per_epoch = 10,那么相當于一個batch_size=100,如果還是按照舊版來設置,那么相當于

batch_size = 1,會性能非常低。

經驗:

必須明確fit_generator參數steps_per_epoch

補充知識:Keras:創建自己的generator(適用于model.fit_generator),解決內存問題

為什么要使用model.fit_generator?

在現實的機器學習中,訓練一個model往往需要數量巨大的數據,如果使用fit進行數據訓練,很有可能導致內存不夠,無法進行訓練。

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)

其中各項的具體解釋,請參考Keras中文文檔

我們重點關注的是generator參數:

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

一個 (inputs, targets) 元組

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

那么,問題來了,如何構建這個generator呢?有以下幾種辦法:

自己創建一個generator生成器

自己定義一個 Sequence (keras.utils.Sequence) 對象

使用Keras自帶的ImageDataGenerator和.flow/.flow_from_dataframe/.flow_from_directory來生成一個generator

1.自己創建一個generator生成器

使用Keras自帶的ImageDataGenerator和.flow/.flow_from_dataframe/.flow_from_directory 靈活度不高,只有當數據集滿足一定格式(例如,按照分類文件夾存放)或者具備一定條件時,使用才使用才較為方便。

此時,自己創建一個generator就很重要了,關于python的generator是什么原理,怎么使用,就不加贅述,可以查看python的基本語法。

此處,我們用yield來返回數據組,標簽組,從而使fit_generator可以調用我們的generator來成批處理數據。

具體實現如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def myGenerator(batch_size):
  # loading data
  X_train,Y_train=load_data(...)
  
  # data processing
  # ................
  
  total_size=X_train.size
  #batch_size means how many data you want to train one step
  
  while 1:
    for i in range(total_size//batch_size):
      yield x_train[i*batch_size:(i+1)*batch_size], y[i*batch_size:(i+1)*batch_size]
return myGenerator

接著你可以調用該生成器:

self._model.fit_generator(myGenerator(batch_size),steps_per_epoch=total_size//batch_size, epochs=epoch_num)

以上這篇淺談keras2 predict和fit_generator的坑就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/lujiandong1/article/details/73556163

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产一区二区三区视频在线观看 | 亚洲精品久久久 | 中文日韩av| 亚洲欧美一区二区三区在线 | 国产精品不卡视频 | 亚洲国产成人久久 | 91麻豆精品国产91久久久资源速度 | 欧美精品一区在线观看 | 久久久久无码国产精品一区 | 久久久久久久久久久精 | 国产精品国产精品国产专区不片 | 在线激情视频 | av福利在线观看 | 91免费版在线观看 | 免费观看a毛片 | 国产视频aaa | 神马电影午夜 | 精品国产乱码久久久久久蜜柚 | 成人午夜精品一区二区三区 | 精品国产精品三级精品av网址 | 精品在线91| 久久久久亚洲 | 伊人激情综合 | 欧美精品一区二区三区蜜桃视频 | 亚洲成人午夜电影 | 在线久 | 欧美久久精品一级黑人c片 成人在线视频免费观看 | 欧美与黑人午夜性猛交久久久 | 欧美一区二区三 | 国产欧美日韩视频 | 狠狠av| 亚洲欧美激情视频 | 日本中文一区二区 | 一区二区三区四区av | 精品一区二区三区久久 | 亚洲电影在线播放 | 毛片网页| 亚洲日韩中文字幕一区 | 天天精品 | 天堂资源| 色爱亚洲 |