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模拟登录12306的方法
Dec 30 Python
Python两个整数相除得到浮点数值的方法
Mar 18 Python
使用python检测主机存活端口及检查存活主机
Oct 12 Python
python3中str(字符串)的使用教程
Mar 23 Python
Python实现脚本锁功能(同时只能执行一个脚本)
May 10 Python
Python读取数据集并消除数据中的空行方法
Jul 12 Python
Django实现单用户登录的方法示例
Mar 28 Python
利用python、tensorflow、opencv、pyqt5实现人脸实时签到系统
Sep 25 Python
numpy:找到指定元素的索引示例
Nov 26 Python
python利用JMeter测试Tornado的多线程
Jan 12 Python
基于tensorflow for循环 while循环案例
Jun 30 Python
微软开源最强Python自动化神器Playwright(不用写一行代码)
Jan 05 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
索尼SONY ICF-7600A(W)电路分析
2021/03/01 无线电
PHP版自动生成文章摘要
2008/07/23 PHP
linux实现php定时执行cron任务详解
2013/12/24 PHP
PHPMailer发送HTML内容、带附件的邮件实例
2014/07/01 PHP
php实现获取及设置用户访问页面语言类
2014/09/24 PHP
JavaScript中令你抓狂的魔术变量
2006/11/30 Javascript
我也种棵OO树JXTree[js+css+xml]
2007/04/02 Javascript
javascript中的有名函数和无名函数
2007/10/17 Javascript
浅谈类似于(function(){}).call()的js语句
2015/03/30 Javascript
JS中使用变量保存arguments对象的方法
2016/06/03 Javascript
jQuery层级选择器实例代码
2017/02/06 Javascript
Vue路由跳转问题记录详解
2017/06/15 Javascript
JS获取子节点、父节点和兄弟节点的方法实例总结
2018/07/06 Javascript
JavaScript实现简单的隐藏式侧边栏功能示例
2018/08/31 Javascript
javascript中函数的写法实例代码详解
2018/10/28 Javascript
vue 使用axios 数据请求第三方插件的使用教程详解
2019/07/05 Javascript
js实现蒙版效果
2020/01/11 Javascript
Vue filter 过滤器、以及在table中的使用介绍
2020/09/07 Javascript
vue+iview使用树形控件的具体使用
2020/11/02 Javascript
Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度
2018/04/09 Python
Python操作mongodb的9个步骤
2018/06/04 Python
python pygame模块编写飞机大战
2018/11/20 Python
python3实现高效的端口扫描
2019/08/31 Python
Python基于WordCloud制作词云图
2019/11/29 Python
Python生成并下载文件后端代码实例
2020/08/31 Python
Mytheresa美国官网:德国知名的女性奢侈品电商
2017/05/27 全球购物
PatPat阿根廷:妈妈们的购物平台
2019/05/30 全球购物
小学生自我鉴定
2013/10/12 职场文书
自荐信模版
2013/10/24 职场文书
销售岗位职责范本
2014/06/12 职场文书
小学秋季运动会报道稿
2014/09/30 职场文书
傲慢与偏见电影观后感
2015/06/10 职场文书
四年级作文之说明文作文
2019/10/14 职场文书
多表查询、事务、DCL
2021/04/05 MySQL
如何理解及使用Python闭包
2021/06/01 Python
MySQL的prepare使用以及遇到的bug
2022/05/11 MySQL