欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

keras實(shí)現(xiàn)多GPU或指定GPU的使用介紹

 更新時(shí)間:2020年06月17日 16:36:58   作者:shuangyumelody  
這篇文章主要介紹了keras實(shí)現(xiàn)多GPU或指定GPU的使用介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

1. keras新版本中加入多GPU并行使用的函數(shù)

下面程序段即可實(shí)現(xiàn)一個(gè)或多個(gè)GPU加速:

注意:使用多GPU加速時(shí),Keras版本必須是Keras2.0.9以上版本

from keras.utils.training_utils import multi_gpu_model  #導(dǎo)入keras多GPU函數(shù)
import VGG19   #導(dǎo)入已經(jīng)寫好的函數(shù)模型,例如VGG19

if G <= 1:
  print("[INFO] training with 1 GPU...")
  model = VGG19()

# otherwise, we are compiling using multiple GPUs
else:
  print("[INFO] training with {} GPUs...".format(G))
  # we'll store a copy of the model on *every* GPU and then combine
  # the results from the gradient updates on the CPU
  with tf.device("/cpu:0"):
    # initialize the model
    model1 = VGG19()
    # make the model parallel(if you have more than 2 GPU)
    model = multi_gpu_model(model1, gpus=G)

2.指定使用某個(gè)GPU

首先在終端查看主機(jī)中GPU編號(hào):

watch -n -9 nvidia-smi

查詢結(jié)果如下所示:

顯示主機(jī)中只有一塊GPU,編號(hào)為0

2.1 下面方法是直接在終端運(yùn)行時(shí)加入相關(guān)語(yǔ)句實(shí)現(xiàn)指定GPU的使用

export CUDA_VISIBLE_DEVICES=0 python test.py
# 表示運(yùn)行test.py文件時(shí),使用編號(hào)為0的GPU卡
export CUDA_VISIBLE_DEVICES=0,2 python test.py
# 表示運(yùn)行test.py文件時(shí),使用編號(hào)為0和2的GPU卡

2.2 下面方法是在Python程序中添加

import os
# 使用第一張與第三張GPU卡
os.environ["CUDA_VISIBLE_DEVICES"] = "0, 2"

補(bǔ)充知識(shí):踩坑記----large batch_size cause low var_acc

有時(shí)候,我們?cè)谟?xùn)練模型前期,會(huì)出現(xiàn)很高的train_acc(訓(xùn)練準(zhǔn)確率),但var_acc(驗(yàn)證準(zhǔn)確率)卻很低。這往往是因?yàn)槲覀兡P驮谟?xùn)練過程中已經(jīng)進(jìn)入局部最優(yōu),或者出現(xiàn)過擬合的現(xiàn)象。造成這種情況有多種原因,我只提出以下幾點(diǎn),有補(bǔ)充的可以在下面留言,我補(bǔ)充。

(1).訓(xùn)練數(shù)據(jù)分布不均勻,可能你的訓(xùn)練數(shù)據(jù)某一類別占據(jù)了大多數(shù),比如95%的數(shù)據(jù)為蘋果,5%的數(shù)據(jù)為其他類別,那么模型為了擬合訓(xùn)練數(shù)據(jù),則模型會(huì)偏袒于把識(shí)別結(jié)果歸屬于蘋果,而驗(yàn)證集的數(shù)據(jù)是正常的,那么便會(huì)出現(xiàn)高train_acc,低val_acc。

(2).訓(xùn)練數(shù)據(jù)沒有shuffle,那么整個(gè)batch里面將會(huì)是同一個(gè)類別數(shù)據(jù),比如都為蘋果的圖片,那么訓(xùn)練一個(gè)batch,那么模型輸出將會(huì)往這一類別靠攏,會(huì)形成一個(gè)很高的acc的假象,但這個(gè)模型泛化能力卻很低,因?yàn)檫@個(gè)模型都只會(huì)為了擬合這批同類的數(shù)據(jù)。

(3).訓(xùn)練集跟驗(yàn)證集的預(yù)處理不一致,這個(gè)是細(xì)節(jié)問題,輸入的圖片分布不一致,那么必然會(huì)影響到驗(yàn)證結(jié)果。

(4).模型過于復(fù)雜,造成過擬合現(xiàn)象,特別是在于訓(xùn)練數(shù)據(jù)集不多的情況下,更容易出現(xiàn)過擬合。

(5).這個(gè)也是最難發(fā)現(xiàn)的,就是過大的batch_size,造成訓(xùn)練前期,模型還未收斂,出現(xiàn)很高的train_acc,卻有很低的val_acc,親測(cè),在120個(gè)類別,參數(shù)只有七萬的分類模型中,在batch-size等于64的情況下,在第二個(gè)epoch時(shí),train_acc達(dá)到80%,val_acc卻只有6%,train_loss跟val_loss也是相差很大,而在batch_size在等于8的情況下,在第二個(gè)epoch,train_acc跟val_acc皆能達(dá)到60%,且還有上升的趨勢(shì)。至于為什么,個(gè)人認(rèn)為,模型在大的batch_size的情況下,模型泛化能力下降,且更難擬合,每個(gè)epoch所包含的step也更少,且在adam的優(yōu)化算法,前期的學(xué)習(xí)率較高,模型出現(xiàn)了振蕩,一直在局部最優(yōu)值徘徊,具體原因不知。

接下來分析下,batc_size對(duì)模型的影響:

large batch_size:

好處:訓(xùn)練的更快,每一step都包含更多的訓(xùn)練集,模型準(zhǔn)確率會(huì)更高,不容易受到噪聲的影響,穩(wěn)定性更好。

small batch_size:

好處:不容易陷入局部最優(yōu),泛化能力更強(qiáng)。

總結(jié):

(1).large batch_size,雖然訓(xùn)練模型的訓(xùn)練誤差會(huì)更低,但往往在execute的時(shí)候,效果卻不盡人意。

(2).在時(shí)間允許的情況下,建議batch_size在32或以下。

以上這篇keras實(shí)現(xiàn)多GPU或指定GPU的使用介紹就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • numpy數(shù)組廣播的機(jī)制

    numpy數(shù)組廣播的機(jī)制

    這篇文章主要介紹了numpy數(shù)組廣播的機(jī)制,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python中文糾錯(cuò)的簡(jiǎn)單實(shí)現(xiàn)

    Python中文糾錯(cuò)的簡(jiǎn)單實(shí)現(xiàn)

    這篇文章主要是用 Python 實(shí)現(xiàn)了簡(jiǎn)單的中文分詞的同音字糾錯(cuò),目前的案例中只允許錯(cuò)一個(gè)字,感興趣的小伙伴們可以參考一下
    2021-07-07
  • pandas添加新列的5種常見方法

    pandas添加新列的5種常見方法

    pandas為DataFrame格式數(shù)據(jù)添加新列的方法非常簡(jiǎn)單,下面這篇文章主要給大家介紹了關(guān)于pandas添加新列的5種常見方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • pyqt5 從本地選擇圖片 并顯示在label上的實(shí)例

    pyqt5 從本地選擇圖片 并顯示在label上的實(shí)例

    今天小編就為大家分享一篇pyqt5 從本地選擇圖片 并顯示在label上的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • 詳解pandas賦值失敗問題解決

    詳解pandas賦值失敗問題解決

    這篇文章主要介紹了詳解pandas賦值失敗問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 基于循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)實(shí)現(xiàn)影評(píng)情感分類

    基于循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)實(shí)現(xiàn)影評(píng)情感分類

    這篇文章主要為大家詳細(xì)介紹了基于循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)實(shí)現(xiàn)影評(píng)情感分類,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Python Numpy中數(shù)據(jù)的常用保存與讀取方法

    Python Numpy中數(shù)據(jù)的常用保存與讀取方法

    這篇文章主要介紹了Python Numpy中數(shù)據(jù)的常用保存與讀取方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • python中使用np.delete()的實(shí)例方法

    python中使用np.delete()的實(shí)例方法

    在本篇文章里小編給大家整理的是一篇關(guān)于python中使用np.delete()的實(shí)例方法,對(duì)此有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-02-02
  • Scrapy基于selenium結(jié)合爬取淘寶的實(shí)例講解

    Scrapy基于selenium結(jié)合爬取淘寶的實(shí)例講解

    今天小編就為大家分享一篇Scrapy基于selenium結(jié)合爬取淘寶的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Python利用PyAutoGUI輕松搞定圖片上傳

    Python利用PyAutoGUI輕松搞定圖片上傳

    PyAutoGUI作為一個(gè)GUI操作的神器,我們看到了它的操作都很簡(jiǎn)單,非常通俗易懂,基本上看到函數(shù)就能知道它的功效。本文將用它實(shí)現(xiàn)圖片上傳功能,感興趣的可以了解一下
    2022-09-09

最新評(píng)論