Tensorflow与Keras自适应使用显存方式


Posted in Python onJune 22, 2020

Tensorflow支持基于cuda内核与cudnn的GPU加速,Keras出现较晚,为Tensorflow的高层框架,由于Keras使用的方便性与很好的延展性,之后更是作为Tensorflow的官方指定第三方支持开源框架。

但两者在使用GPU时都有一个特点,就是默认为全占满模式。在训练的情况下,特别是分步训练时会导致显存溢出,导致程序崩溃。

可以使用自适应配置来调整显存的使用情况。

一、Tensorflow

1、指定显卡

代码中加入

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0"

或者在运行代码前,在终端

export CUDA_VISIBLE_DEVICES=0

2、为显存分配使用比例

在建立tf.Session加入设置数据(显存使用比例为1/3),但有时你虽然设置了使用上限,在程序需要更高显存时还是会越过该限制

gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.333)
sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options))

3、自适应分配

会自适应分配显存,不会将显存全部分配导致资源浪费

config = tf.ConfigProto() 
config.gpu_options.allow_growth=True 
sess = tf.Session(config=config)

二、Keras

与tensorflow大差不差,就是将tf.Session配置转置Keras配置

1、指定显卡

代码中加入

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0"

或者在运行代码前,在终端

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、自适应分配

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、如有设置fit_generator

将多线程关闭

#可将
use_multiprocessing=True
#改为
use_multiprocessing=False

补充知识:Keras 自动分配显存,不占用所有显存

自动分配显存,不占用所有显存

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自适应使用显存方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
用python实现的线程池实例代码
Jan 06 Python
python检测空间储存剩余大小和指定文件夹内存占用的实例
Jun 11 Python
对python中xlsx,csv以及json文件的相互转化方法详解
Dec 25 Python
Python和Go语言的区别总结
Feb 20 Python
浅谈python之高阶函数和匿名函数
Mar 21 Python
Python爬虫:将headers请求头字符串转为字典的方法
Aug 21 Python
Python处理mysql特殊字符的问题
Mar 02 Python
使用tensorflow实现VGG网络,训练mnist数据集方式
May 26 Python
Python 解决相对路径问题:"No such file or directory"
Jun 05 Python
Win10环境中如何实现python2和python3并存
Jul 20 Python
python按顺序重命名文件并分类转移到各个文件夹中的实现代码
Jul 21 Python
Python中的特殊方法以及应用详解
Sep 20 Python
python数据类型强制转换实例详解
Jun 22 #Python
keras 指定程序在某块卡上训练实例
Jun 22 #Python
python Socket网络编程实现C/S模式和P2P
Jun 22 #Python
Python手动或自动协程操作方法解析
Jun 22 #Python
keras使用Sequence类调用大规模数据集进行训练的实现
Jun 22 #Python
Python socket服务常用操作代码实例
Jun 22 #Python
Python如何实现后端自定义认证并实现多条件登陆
Jun 22 #Python
You might like
雄兵连:天使彦天使彦为爱折翼,彦和炙心同时念动的誓言!
2020/03/02 国漫
PHP输出控制功能在简繁体转换中的应用
2006/10/09 PHP
PHP中上传大体积文件时需要的设置
2006/10/09 PHP
深入分析php中接口与抽象类的区别
2013/06/08 PHP
Yii2前后台分离及migrate使用(七)
2016/05/04 PHP
php中分页及SqlHelper类用法实例
2017/01/12 PHP
PHP递归算法的简单实例
2019/02/28 PHP
基于pthread_create,readlink,getpid等函数的学习与总结
2013/07/17 Javascript
判断文件是否正在被使用的JS代码
2013/12/21 Javascript
Jquery弹出层插件ThickBox的使用方法
2014/12/09 Javascript
js+css实现tab菜单切换效果的方法
2015/01/20 Javascript
Jquery遍历Json数据的方法
2015/04/20 Javascript
详解JavaScript中|单竖杠运算符的使用方法
2016/05/23 Javascript
js前端解决跨域问题的8种方案(最新最全)
2016/11/18 Javascript
VUE element-ui 写个复用Table组件的示例代码
2017/11/18 Javascript
js最简单的双向绑定实例讲解
2018/01/02 Javascript
详解react-native WebView 返回处理(非回调方法可解决)
2018/02/27 Javascript
Vue 获取数组键名的方法
2018/06/21 Javascript
nodejs使用node-xlsx生成excel的方法示例
2019/08/22 NodeJs
Vue实现图书管理小案例
2020/12/03 Vue.js
[03:16]DOTA2完美大师赛主赛事首日集锦
2017/11/23 DOTA
[52:06]完美世界DOTA2联赛决赛日 Inki vs LBZS 第一场 11.08
2020/11/10 DOTA
详谈python http长连接客户端
2017/06/12 Python
浅析python的Lambda表达式
2019/02/27 Python
python:目标检测模型预测准确度计算方式(基于IoU)
2020/01/18 Python
PyTorch中的C++扩展实现
2020/04/02 Python
Python3爬虫带上cookie的实例代码
2020/07/28 Python
详解Python中@staticmethod和@classmethod区别及使用示例代码
2020/12/14 Python
css3针对移动端卡顿问题的解决(动画性能优化)
2020/02/14 HTML / CSS
德国排名第一的主题公园门票网站:Attraction Tickets Direct
2019/09/09 全球购物
如何撰写一封出色的求职信
2014/04/27 职场文书
群众路线剖析材料
2014/09/30 职场文书
2015年“公民道德宣传日”活动方案
2015/05/06 职场文书
创作书写之导游词实用技巧分享(干货)
2019/12/20 职场文书
SpringBoot整合minio快速入门教程(代码示例)
2022/04/03 Java/Android
HTML CSS 一个标签实现带动画的抖音LOGO
2022/04/26 HTML / CSS