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

Keras - GPU ID 和顯存占用設(shè)定步驟

 更新時(shí)間:2020年06月22日 10:36:28   作者:AIHGF  
這篇文章主要介紹了Keras - GPU ID 和顯存占用設(shè)定步驟,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

初步嘗試 Keras (基于 Tensorflow 后端)深度框架時(shí), 發(fā)現(xiàn)其對(duì)于 GPU 的使用比較神奇, 默認(rèn)竟然是全部占滿顯存, 1080Ti 跑個(gè)小分類問題, 就一下子滿了. 而且是服務(wù)器上的兩張 1080Ti.

服務(wù)器上的多張 GPU 都占滿, 有點(diǎn)浪費(fèi)性能.

因此, 需要類似于 Caffe 等框架的可以設(shè)定 GPU ID 和顯存自動(dòng)按需分配.

實(shí)際中發(fā)現(xiàn), Keras 還可以限制 GPU 顯存占用量.

這里涉及到的內(nèi)容有:

GPU ID 設(shè)定

GPU 顯存占用按需分配

GPU 顯存占用限制

GPU 顯存優(yōu)化

1. GPU ID 設(shè)定

#! -- coding: utf-8 --*--
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "1"

這里將 GPU ID 設(shè)為 1.

GPU ID 從 0 開始, GPUID=1 即表示第二塊 GPU.

2. GPU 顯存占用按需分配

#! -- coding: utf-8 --*--
import tensorflow as tf
import keras.backend.tensorflow_backend as ktf

# GPU 顯存自動(dòng)調(diào)用
config = tf.ConfigProto()
config.gpu_options.allow_growth=True
session = tf.Session(config=config)
ktf.set_session(session)

3. GPU 顯存占用限制

#! -- coding: utf-8 --*--
import tensorflow as tf
import keras.backend.tensorflow_backend as ktf

# 設(shè)定 GPU 顯存占用比例為 0.3
config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.3
session = tf.Session(config=config)
ktf.set_session(session )

這里雖然是設(shè)定了 GPU 顯存占用的限制比例(0.3), 但如果訓(xùn)練所需實(shí)際顯存占用超過該比例, 仍能正常訓(xùn)練, 類似于了按需分配.

設(shè)定 GPU 顯存占用比例實(shí)際上是避免一定的顯存資源浪費(fèi).

4. GPU ID 設(shè)定與顯存按需分配

#! -- coding: utf-8 --*--
import os
import tensorflow as tf
import keras.backend.tensorflow_backend as ktf

# GPU 顯存自動(dòng)分配
config = tf.ConfigProto()
config.gpu_options.allow_growth=True
#config.gpu_options.per_process_gpu_memory_fraction = 0.3
session = tf.Session(config=config)
ktf.set_session(session)

# 指定GPUID, 第一塊GPU可用
os.environ["CUDA_VISIBLE_DEVICES"] = "0"

5. 利用fit_generator最小化顯存占用比例/數(shù)據(jù)Batch化

#! -- coding: utf-8 --*--

# 將內(nèi)存中的數(shù)據(jù)分批(batch_size)送到顯存中進(jìn)行運(yùn)算
def generate_arrays_from_memory(data_train, labels_train, batch_size):
  x = data_train
  y=labels_train
  ylen=len(y)
  loopcount=ylen // batch_size
  while True:
    i = np.random.randint(0,loopcount)
    yield x[i*batch_size:(i+1)*batch_size],y[i*batch_size:(i+1)*batch_size]

# load數(shù)據(jù)到內(nèi)存
data_train=np.loadtxt("./data_train.txt")
labels_train=np.loadtxt('./labels_train.txt')
data_val=np.loadtxt('./data_val.txt')
labels_val=np.loadtxt('./labels_val.txt')

hist=model.fit_generator(generate_arrays_from_memory(data_train,
                           labels_train,
                           batch_size),
             steps_per_epoch=int(train_size/bs),
             epochs=ne,
             validation_data=(data_val,labels_val),
             callbacks=callbacks )

5.1 數(shù)據(jù) Batch 化

#! -- coding: utf-8 --*--

def process_line(line): 
  tmp = [int(val) for val in line.strip().split(',')] 
  x = np.array(tmp[:-1]) 
  y = np.array(tmp[-1:]) 
  return x,y 

def generate_arrays_from_file(path,batch_size): 
  while 1: 
    f = open(path) 
    cnt = 0 
    X =[] 
    Y =[] 
    for line in f: 
      # create Numpy arrays of input data 
      # and labels, from each line in the file 
      x, y = process_line(line) 
      X.append(x) 
      Y.append(y) 
      cnt += 1 
      if cnt==batch_size: 
        cnt = 0 
        yield (np.array(X), np.array(Y)) 
        X = [] 
        Y = [] 
  f.close() 

補(bǔ)充知識(shí):Keras+Tensorflow指定運(yùn)行顯卡以及關(guān)閉session空出顯存

Step1: 查看GPU

watch -n 3 nvidia-smi #在命令行窗口中查看當(dāng)前GPU使用的情況, 3為刷新頻率

Step2: 導(dǎo)入模塊

導(dǎo)入必要的模塊

import os
import tensorflow as tf
from keras.backend.tensorflow_backend import set_session
from numba import cuda

Step3: 指定GPU

程序開頭指定程序運(yùn)行的GPU

os.environ['CUDA_VISIBLE_DEVICES'] = '1' # 使用單塊GPU,指定其編號(hào)即可 (0 or 1or 2 or 3)
os.environ['CUDA_VISIBLE_DEVICES'] = '1,2,3' # 使用多塊GPU,指定其編號(hào)即可 (引號(hào)中指定即可)

Step4: 創(chuàng)建會(huì)話,指定顯存使用百分比

創(chuàng)建tensorflow的Session

config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.1 # 設(shè)定顯存的利用率
set_session(tf.Session(config=config))

Step5: 釋放顯存

確保Volatile GPU-Util顯示0%

程序運(yùn)行完畢,關(guān)閉Session

K.clear_session() # 方法一:如果不關(guān)閉,則會(huì)一直占用顯存

cuda.select_device(1) # 方法二:選擇GPU1
cuda.close() #關(guān)閉選擇的GPU

以上這篇Keras - GPU ID 和顯存占用設(shè)定步驟就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • wxPython實(shí)現(xiàn)帶顏色的進(jìn)度條

    wxPython實(shí)現(xiàn)帶顏色的進(jìn)度條

    這篇文章主要介紹了wxPython實(shí)現(xiàn)帶顏色的進(jìn)度條,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • 用Pelican搭建一個(gè)極簡(jiǎn)靜態(tài)博客系統(tǒng)過程解析

    用Pelican搭建一個(gè)極簡(jiǎn)靜態(tài)博客系統(tǒng)過程解析

    這篇文章主要介紹了用Pelican搭建一個(gè)極簡(jiǎn)靜態(tài)博客系統(tǒng)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Python實(shí)現(xiàn)病毒仿真器的方法示例(附demo)

    Python實(shí)現(xiàn)病毒仿真器的方法示例(附demo)

    這篇文章主要介紹了Python實(shí)現(xiàn)病毒仿真器的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 用Python獲取亞馬遜商品信息

    用Python獲取亞馬遜商品信息

    大家好,本篇文章主要講的是用Python獲取亞馬遜商品信息,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • 解決Python paramiko 模塊遠(yuǎn)程執(zhí)行ssh 命令 nohup 不生效的問題

    解決Python paramiko 模塊遠(yuǎn)程執(zhí)行ssh 命令 nohup 不生效的問題

    這篇文章主要介紹了解決Python paramiko 模塊遠(yuǎn)程執(zhí)行ssh 命令 nohup 不生效的問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 我在七夕佳節(jié)用Python制作的表白神器,程序員也應(yīng)該擁有愛情!建議收藏

    我在七夕佳節(jié)用Python制作的表白神器,程序員也應(yīng)該擁有愛情!建議收藏

    這篇文章主要介紹了我在七夕佳節(jié)用Python制作的表白神器,建議收藏,程序員也該擁有愛情,感興趣的小伙伴快來看看吧
    2021-08-08
  • 跟老齊學(xué)Python之Python文檔

    跟老齊學(xué)Python之Python文檔

    文檔,這個(gè)詞語在經(jīng)常在程序員的嘴里冒出來,有時(shí)候他們還經(jīng)常以文檔有沒有或者全不全為標(biāo)準(zhǔn)來衡量一個(gè)軟件項(xiàng)目是否高大上。那么,軟件中的文檔是什么呢?有什么要求呢?python文檔又是什么呢?文檔有什么用呢?
    2014-10-10
  • Python獲取百度熱搜的完整代碼

    Python獲取百度熱搜的完整代碼

    這篇文章主要介紹了Python獲取百度熱搜的完整代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • Pytorch生成隨機(jī)數(shù)Tensor的方法匯總

    Pytorch生成隨機(jī)數(shù)Tensor的方法匯總

    這篇文章主要介紹了Pytorch生成隨機(jī)數(shù)Tensor的方法匯總,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 使用Python中wordcloud庫繪制詞云圖的詳細(xì)教程

    使用Python中wordcloud庫繪制詞云圖的詳細(xì)教程

    這篇文章主要介紹了如何使用Python的wordcloud庫從Excel數(shù)據(jù)生成詞云圖,包括環(huán)境準(zhǔn)備、詞云圖的基本原理、生成詞云圖的步驟、保存詞云圖以及高級(jí)自定義(形狀與顏色),文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-12-12

最新評(píng)論

吴桥县| 光山县| 朝阳市| 晋江市| 青河县| 吉安县| 集贤县| 迁安市| 安庆市| 桓仁| 福鼎市| 股票| 富源县| 英德市| 合山市| 东宁县| 华坪县| 永安市| 贵南县| 成安县| 花垣县| 满洲里市| 汉中市| 闽侯县| 潞西市| 鄄城县| 沧州市| 娄底市| 泾源县| 营山县| 新乡市| 依兰县| 广州市| 迭部县| 公安县| 灌云县| 襄城县| 磐石市| 山阳县| 五寨县| 建德市|