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中的函数编程
Apr 13 Python
python实现数组插入新元素的方法
May 22 Python
从局部变量和全局变量开始全面解析Python中变量的作用域
Jun 16 Python
Python学生成绩管理系统简洁版
Apr 05 Python
python3+PyQt5自定义视图详解
Apr 24 Python
python利用微信公众号实现报警功能
Jun 10 Python
python安装virtualenv虚拟环境步骤图文详解
Sep 18 Python
pycharm通过anaconda安装pyqt5的教程
Mar 24 Python
升级keras解决load_weights()中的未定义skip_mismatch关键字问题
Jun 12 Python
利用Python实现Json序列化库的方法步骤
Sep 09 Python
PyCharm上安装Package的实现(以pandas为例)
Sep 18 Python
python sleep和wait对比总结
Feb 03 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
php设计模式 Template (模板模式)
2011/06/26 PHP
input file获得文件根目录简单实现
2013/04/26 PHP
如何利用PHP执行.SQL文件
2013/07/05 PHP
php画图实例
2014/11/05 PHP
Yii实现自动加载类地图的方法
2015/04/01 PHP
编写PHP程序检查字符串中的中文字符个数的实例分享
2016/03/17 PHP
tp5(thinkPHP5框架)时间查询操作实例分析
2019/05/29 PHP
一个很酷的拖动层的js类,兼容IE及Firefox
2009/06/23 Javascript
boxy基于jquery的弹出层对话框插件扩展应用 弹出层选择器
2010/11/21 Javascript
基于JQuery实现的Select级联
2014/01/27 Javascript
JavaScript设计模式之适配器模式介绍
2014/12/28 Javascript
详解JavaScript按概率随机生成事件
2017/08/02 Javascript
微信小程序 websocket 实现SpringMVC+Spring+Mybatis
2017/08/04 Javascript
Nodejs实现用户注册功能
2019/04/14 NodeJs
localstorage实现带过期时间的缓存功能
2019/06/28 Javascript
Js参数RSA加密传输之jsencrypt.js的使用
2020/02/07 Javascript
解决vue+router路由跳转不起作用的一项原因
2020/07/19 Javascript
[03:36]DOTA2完美大师赛coL战队趣味视频——我演你猜
2017/11/23 DOTA
理解生产者消费者模型及在Python编程中的运用实例
2016/06/26 Python
11月编程语言排行榜 Python逆袭C#上升到第4
2017/11/15 Python
ubuntu安装sublime3并配置python3环境的方法
2018/03/15 Python
Python中%是什么意思?python中百分号如何使用?
2018/03/20 Python
python中单下划线_的常见用法总结
2018/07/10 Python
python爬虫 urllib模块反爬虫机制UA详解
2019/08/20 Python
python 实现多维数组转向量
2019/11/30 Python
tensorflow2.0保存和恢复模型3种方法
2020/02/03 Python
python实现简单的井字棋游戏(gui界面)
2021/01/22 Python
美国网上订购鲜花:FTD
2016/09/23 全球购物
经贸日语专业个人求职信范文
2013/12/28 职场文书
家长给小学生的评语
2014/01/30 职场文书
大龄毕业生求职别忘职业规划
2014/03/11 职场文书
共产党员公开承诺书范文
2014/03/28 职场文书
学习优秀党员杨宗兴先进事迹材料思想汇报
2014/09/14 职场文书
2015元旦联欢晚会结束语
2014/12/14 职场文书
少儿励志名言(80句)
2019/08/14 职场文书
Win10系统下配置Java环境变量
2021/06/13 Java/Android