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

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

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

服務器之家 - 腳本之家 - Python - Keras - GPU ID 和顯存占用設定步驟

Keras - GPU ID 和顯存占用設定步驟

2020-06-22 11:27AIHGF Python

這篇文章主要介紹了Keras - GPU ID 和顯存占用設定步驟,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

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

服務器上的多張 GPU 都占滿, 有點浪費性能.

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

實際中發現, Keras 還可以限制 GPU 顯存占用量.

這里涉及到的內容有:

GPU ID 設定

GPU 顯存占用按需分配

GPU 顯存占用限制

GPU 顯存優化

1. GPU ID 設定

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

這里將 GPU ID 設為 1.

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

2. GPU 顯存占用按需分配

?
1
2
3
4
5
6
7
8
9
#! -- coding: utf-8 --*--
import tensorflow as tf
import keras.backend.tensorflow_backend as ktf
 
# GPU 顯存自動調用
config = tf.ConfigProto()
config.gpu_options.allow_growth=True
session = tf.Session(config=config)
ktf.set_session(session)

3. GPU 顯存占用限制

?
1
2
3
4
5
6
7
8
9
#! -- coding: utf-8 --*--
import tensorflow as tf
import keras.backend.tensorflow_backend as ktf
 
# 設定 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 )

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

設定 GPU 顯存占用比例實際上是避免一定的顯存資源浪費.

4. GPU ID 設定與顯存按需分配

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#! -- coding: utf-8 --*--
import os
import tensorflow as tf
import keras.backend.tensorflow_backend as ktf
 
# GPU 顯存自動分配
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最小化顯存占用比例/數據Batch化

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#! -- coding: utf-8 --*--
 
# 將內存中的數據分批(batch_size)送到顯存中進行運算
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數據到內存
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 數據 Batch 化

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#! -- 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()

補充知識:Keras+Tensorflow指定運行顯卡以及關閉session空出顯存

Keras - GPU ID 和顯存占用設定步驟

Step1: 查看GPU

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

Step2: 導入模塊

導入必要的模塊

?
1
2
3
4
import os
import tensorflow as tf
from keras.backend.tensorflow_backend import set_session
from numba import cuda

Step3: 指定GPU

程序開頭指定程序運行的GPU

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

Step4: 創建會話,指定顯存使用百分比

創建tensorflow的Session

?
1
2
3
config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.1 # 設定顯存的利用率
set_session(tf.Session(config=config))

Step5: 釋放顯存

確保Volatile GPU-Util顯示0%

程序運行完畢,關閉Session

?
1
2
3
4
K.clear_session() # 方法一:如果不關閉,則會一直占用顯存
 
cuda.select_device(1) # 方法二:選擇GPU1
cuda.close() #關閉選擇的GPU

Keras - GPU ID 和顯存占用設定步驟

以上這篇Keras - GPU ID 和顯存占用設定步驟就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/zziahgf/article/details/80226129

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产黄色精品 | 1区2区视频 | 精品免费久久久久 | 精品久久久精品 | 国产成人精品免高潮在线观看 | 天堂资源 | av网站免费看 | 国产精品二区三区 | 欧美在线播放一区 | 久久懂色精品99综一区合 | 性毛片| 性色av一区二区三区 | 欧美一级片在线观看 | 九九九久久国产免费 | 日韩视频一区 | 日本成人高清视频 | 在线国产视频 | 三级在线观看 | 久久久久久久久一区二区三区 | 亚洲成年人网址 | 国产精品成人一区二区三区夜夜夜 | 日韩视频一区 | 亚洲精品男人的天堂 | 国产一级片儿 | 美女一区| 精品国产欧美一区二区三区成人 | 成人h动漫精品一区二区器材 | 高清中文字幕av | 国产成人在线一区二区 | 激情毛片 | 久久久久久久久久久网站 | 国产精品日本欧美一区二区三区 | 午夜啪 | 国产免费自拍 | 在线天堂av| 成人在线小视频 | 91国产精品 | 久久精品国产亚洲 | 综合二区| 蜜桃视频 精品区 | 亚洲欧美一区二区三区在线 |