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 29 Python
编写Python脚本抓取网络小说来制作自己的阅读器
Aug 20 Python
批处理与python代码混合编程的方法
May 19 Python
Python中new方法的详解
Jan 15 Python
python内存动态分配过程详解
Jul 15 Python
Django model update的多种用法介绍
Mar 28 Python
Python 列表的清空方式
Jan 13 Python
python3+opencv生成不规则黑白mask实例
Feb 19 Python
在keras下实现多个模型的融合方式
May 23 Python
Python实现定时监测网站运行状态的示例代码
Sep 30 Python
python爬虫调度器用法及实例代码
Nov 30 Python
Python趣味爬虫之用Python实现智慧校园一键评教
May 28 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和ACCESS写聊天室(七)
2006/10/09 PHP
php比较相似字符串的方法
2015/06/05 PHP
ThinkPHP自定义函数解决模板标签加减运算的方法
2015/07/03 PHP
php简单实现数组分页的方法
2016/04/30 PHP
PHP实现字符串大小写转函数的功能实例
2019/02/06 PHP
关于laravel 子查询 & join的使用
2019/10/16 PHP
js 判断计算字符串长度/判断空的简单方法
2013/08/05 Javascript
探寻Javascript执行效率问题
2014/11/12 Javascript
JavaScript运动框架 解决速度正负取整问题(一)
2017/05/17 Javascript
angular select 默认值设置方法
2017/06/23 Javascript
VUE长按事件需求详解
2017/10/18 Javascript
angular4 共享服务在多个组件中数据通信的示例
2018/03/30 Javascript
vue代理和跨域问题的解决
2018/07/18 Javascript
JS实现移动端触屏拖拽功能
2018/07/31 Javascript
layui插件表单验证提交触发提交的例子
2019/09/09 Javascript
three.js 利用uv和ThreeBSP制作一个快递柜功能
2020/08/18 Javascript
[01:01:04]2018DOTA2亚洲邀请赛 4.5 淘汰赛 OpTic vs TNC 第一场
2018/04/06 DOTA
Python实现CET查分的方法
2015/03/10 Python
以一段代码为实例快速入门Python2.7
2015/03/31 Python
Python多维/嵌套字典数据无限遍历的实现
2016/11/04 Python
在python中实现强制关闭线程的示例
2019/01/22 Python
Python用Try语句捕获异常的实例方法
2019/06/26 Python
PowerBI和Python关于数据分析的对比
2019/07/11 Python
python django 原生sql 获取数据的例子
2019/08/14 Python
使用css3绘制出各种几何图形
2016/08/17 HTML / CSS
好的自荐信的要求
2013/10/30 职场文书
经贸日语专业个人求职信范文
2013/12/28 职场文书
环境建设实施方案
2014/03/14 职场文书
差生评语大全
2014/05/04 职场文书
捐助贫困学生倡议书
2014/05/16 职场文书
化妆品活动策划方案
2014/05/23 职场文书
经典禁毒标语
2014/06/16 职场文书
环境工程专业自荐信范文
2014/06/24 职场文书
房屋分割离婚协议书范本
2014/12/01 职场文书
个人思想政治总结
2015/03/05 职场文书
MySQL 不等于的三种使用及区别
2021/06/03 MySQL