Tensorflow與Keras自適應(yīng)使用顯存方式
Tensorflow支持基于cuda內(nèi)核與cudnn的GPU加速,Keras出現(xiàn)較晚,為T(mén)ensorflow的高層框架,由于Keras使用的方便性與很好的延展性,之后更是作為T(mén)ensorflow的官方指定第三方支持開(kāi)源框架。
但兩者在使用GPU時(shí)都有一個(gè)特點(diǎn),就是默認(rèn)為全占滿模式。在訓(xùn)練的情況下,特別是分步訓(xùn)練時(shí)會(huì)導(dǎo)致顯存溢出,導(dǎo)致程序崩潰。
可以使用自適應(yīng)配置來(lái)調(diào)整顯存的使用情況。
一、Tensorflow
1、指定顯卡
代碼中加入
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0"
或者在運(yùn)行代碼前,在終端
export CUDA_VISIBLE_DEVICES=0
2、為顯存分配使用比例
在建立tf.Session加入設(shè)置數(shù)據(jù)(顯存使用比例為1/3),但有時(shí)你雖然設(shè)置了使用上限,在程序需要更高顯存時(shí)還是會(huì)越過(guò)該限制
gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.333)
sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options))
3、自適應(yīng)分配
會(huì)自適應(yīng)分配顯存,不會(huì)將顯存全部分配導(dǎo)致資源浪費(fèi)
config = tf.ConfigProto() config.gpu_options.allow_growth=True sess = tf.Session(config=config)
二、Keras
與tensorflow大差不差,就是將tf.Session配置轉(zhuǎn)置Keras配置
1、指定顯卡
代碼中加入
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0"
或者在運(yùn)行代碼前,在終端
export CUDA_VISIBLE_DEVICES=0
2、為顯存分配使用比例
import tensorflow as tf import keras.backend.tensorflow_backend as KTF config = tf.ConfigProto() config.gpu_options.per_process_gpu_memory_fraction = 0.333 session = tf.Session(config=config) KTF.set_session(session)
3、自適應(yīng)分配
import keras.backend.tensorflow_backend as KTF config = tf.ConfigProto() config.gpu_options.allow_growth=True session = tf.Session(config=config) KTF.set_session(session)
4、如有設(shè)置fit_generator
將多線程關(guān)閉
#可將 use_multiprocessing=True #改為 use_multiprocessing=False
補(bǔ)充知識(shí):Keras 自動(dòng)分配顯存,不占用所有顯存
自動(dòng)分配顯存,不占用所有顯存
import keras.backend.tensorflow_backend as KTF import tensorflow as tf import os os.environ["CUDA_VISIBLE_DEVICES"] = "1" config = tf.ConfigProto() config.gpu_options.allow_growth=True #不全部占滿顯存, 按需分配 sess = tf.Session(config=config) KTF.set_session(sess)
以上這篇Tensorflow與Keras自適應(yīng)使用顯存方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
drf-router和authenticate認(rèn)證源碼分析
在 Rest Framework 中提供了兩個(gè) router , 可以幫助我們快速的實(shí)現(xiàn)路由的自動(dòng)生成,本文通過(guò)實(shí)例代碼給大家介紹drf-router和authenticate認(rèn)證源碼分析,感興趣的朋友跟隨小編一起看看吧2021-07-07
用python實(shí)現(xiàn)監(jiān)控視頻人數(shù)統(tǒng)計(jì)
今天教各位小伙伴學(xué)習(xí)怎么用python實(shí)現(xiàn)監(jiān)控視頻人數(shù)統(tǒng)計(jì),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴有很大的幫助,需要的朋友可以參考下2021-05-05
Python使用微信SDK實(shí)現(xiàn)的微信支付功能示例
這篇文章主要介紹了Python使用微信SDK實(shí)現(xiàn)的微信支付功能,結(jié)合實(shí)例形式分析了Python調(diào)用微信SDK接口實(shí)現(xiàn)微信支付功能的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-06-06
Python多線程處理實(shí)例詳解【單進(jìn)程/多進(jìn)程】
這篇文章主要介紹了Python多線程處理,結(jié)合實(shí)例形式總結(jié)分析了Python單進(jìn)程、多進(jìn)程、多線程等相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2019-01-01
Python連接和操作PostgreSQL數(shù)據(jù)庫(kù)的流程步驟
PostgreSQL 是一種開(kāi)源的對(duì)象關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(ORDBMS),以其強(qiáng)大的功能和穩(wěn)定性而廣受歡迎,本文將詳細(xì)介紹如何使用 Python 連接和操作 PostgreSQL 數(shù)據(jù)庫(kù),需要的朋友可以參考下2024-10-10
Pytest使用logging模塊寫(xiě)日志的實(shí)例詳解
logging是python語(yǔ)言中的一個(gè)日志模塊,專門(mén)用來(lái)寫(xiě)日志的,日志級(jí)別通常分為debug、info、warning、error、critical幾個(gè)級(jí)別,一般情況下,默認(rèn)的日志級(jí)別為warning,在調(diào)試或者測(cè)試階段,下面就快速體驗(yàn)一下logging模塊寫(xiě)日志的用法,感興趣的朋友跟隨小編一起看看吧2022-12-12
Python利用三層神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)手寫(xiě)數(shù)字分類詳解
這篇文章主要介紹了如何設(shè)計(jì)一個(gè)三層神經(jīng)網(wǎng)絡(luò)模型來(lái)實(shí)現(xiàn)手寫(xiě)數(shù)字分類。本文給大家介紹的非常詳細(xì),感興趣的小伙伴快來(lái)跟小編一起學(xué)習(xí)一下2021-11-11

