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脚本生成Android SALT扰码的方法
Sep 18 Python
为Python程序添加图形化界面的教程
Apr 29 Python
Python的装饰器用法学习笔记
Jun 24 Python
python 性能优化方法小结
Mar 31 Python
浅谈flask中的before_request与after_request
Jan 20 Python
Python网络爬虫神器PyQuery的基本使用教程
Feb 03 Python
Python批量合并有合并单元格的Excel文件详解
Apr 05 Python
Python闭包和装饰器用法实例详解
May 22 Python
django 中QuerySet特性功能详解
Jul 25 Python
python禁用键鼠与提权代码实例
Aug 16 Python
python深copy和浅copy区别对比解析
Dec 26 Python
Python3 虚拟开发环境搭建过程(图文详解)
Jan 06 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 foreach 使用&(与运算符)引用赋值要注意的问题
2010/02/16 PHP
Windows7下PHP开发环境安装配置图文方法
2010/05/20 PHP
使用PHP和HTML5 FormData实现无刷新文件上传教程
2014/09/06 PHP
Flash+XML滚动新闻代码 无图片 附源码下载
2007/11/22 Javascript
myFocus slide3D v1.1.0 使用方法与下载
2011/01/12 Javascript
javascript工具库代码
2012/03/29 Javascript
Windows系统下使用Sublime搭建nodejs环境
2015/04/13 NodeJs
详解JavaScript中的blink()方法的使用
2015/06/08 Javascript
jquery validate demo 基础
2015/10/29 Javascript
javascript Slip.js实现整屏滑动的手机网页
2015/11/25 Javascript
ionic隐藏tabs的方法
2016/08/29 Javascript
微信小程序 自定义对话框实例详解
2017/01/20 Javascript
ajax请求+vue.js渲染+页面加载的示例
2018/02/11 Javascript
vue+axios实现文件下载及vue中使用axios的实例
2018/09/21 Javascript
在angularJs中进行数据遍历的2种方法
2018/10/08 Javascript
vue项目首屏加载时间优化实战
2019/04/23 Javascript
vue v-for 使用问题整理小结
2019/08/04 Javascript
微信公众号服务器验证Token步骤图解
2019/12/30 Javascript
js实现移动端吸顶效果
2020/01/08 Javascript
package.json各个属性说明详解
2020/03/11 Javascript
Python文件和目录操作详解
2015/02/08 Python
利用Python演示数型数据结构的教程
2015/04/03 Python
python实现判断一个字符串是否是合法IP地址的示例
2018/06/04 Python
python调用matplotlib模块绘制柱状图
2019/10/18 Python
Python常用模块logging——日志输出功能(示例代码)
2019/11/20 Python
tensorflow求导和梯度计算实例
2020/01/23 Python
利用CSS3实现单选框动画特效示例代码
2016/09/26 HTML / CSS
英国日常交易网站:Wowcher
2018/09/04 全球购物
伦敦一卡通:The London Pass
2018/11/30 全球购物
公务员年总结的自我评价
2013/10/25 职场文书
纺织工程专业推荐信
2014/09/08 职场文书
2014年学生资助工作总结
2014/12/18 职场文书
个人党性锻炼总结
2015/03/05 职场文书
2016同学毕业寄语大全
2015/12/04 职场文书
使用canvas实现雪花飘动效果的示例代码
2021/03/30 HTML / CSS
python内置模块之上下文管理contextlib
2022/06/14 Python