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解析基于xml格式的日志文件
Feb 25 Python
python+pyqt实现右下角弹出框
Oct 26 Python
python实现自动发送邮件发送多人、群发、多附件的示例
Jan 23 Python
Django实现分页功能
Jul 02 Python
Python实现常见的回文字符串算法
Nov 14 Python
Django admin.py 在修改/添加表单界面显示额外字段的方法
Aug 22 Python
30秒学会30个超实用Python代码片段【收藏版】
Oct 15 Python
python 连续不等式语法糖实例
Apr 15 Python
Pycharm插件(Grep Console)自定义规则输出颜色日志的方法
May 27 Python
什么是Python中的顺序表
Jun 02 Python
Python3爬虫关于代理池的维护详解
Jul 30 Python
Python将QQ聊天记录生成词云的示例代码
Feb 10 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中使用explode查找某个字符是否存在的方法
2011/07/12 PHP
PHP字符串的编码问题的详细介绍
2013/04/27 PHP
php的array数组和使用实例简明教程(容易理解)
2014/03/20 PHP
php实现ip白名单黑名单功能
2015/03/12 PHP
formStorage 基于jquery的一个插件(存储表单中元素的状态到本地)
2012/01/20 Javascript
jquery offset函数应用实例
2012/11/14 Javascript
谈谈JavaScript中的函数与闭包
2013/04/14 Javascript
jquery遍历筛选数组的几种方法和遍历解析json对象
2013/12/13 Javascript
JavaScript forEach()遍历函数使用及介绍
2015/07/08 Javascript
JS常见问题之为什么点击弹出的i总是最后一个
2016/01/05 Javascript
使用Object.defineProperty实现简单的js双向绑定
2016/04/15 Javascript
node.js 中国天气预报 简单实现
2016/06/06 Javascript
Angularjs之filter过滤器(推荐)
2016/11/27 Javascript
livereload工具实现前端可视化开发【推荐】
2016/12/23 Javascript
简单实现JavaScript弹幕效果
2020/08/27 Javascript
vue源码中的检测方法的实现
2019/09/26 Javascript
Bootstrap简单实用的表单验证插件BootstrapValidator用法实例详解
2020/03/29 Javascript
antd Form组件方法getFieldsValue获取自定义组件的值操作
2020/10/29 Javascript
windows如何把已安装的nodejs高版本降级为低版本(图文教程)
2020/12/14 NodeJs
python简单实现刷新智联简历
2016/03/30 Python
python实现域名系统(DNS)正向查询的方法
2016/04/19 Python
python学习教程之Numpy和Pandas的使用
2017/09/11 Python
python pandas dataframe 行列选择,切片操作方法
2018/04/10 Python
对python中Matplotlib的坐标轴的坐标区间的设定实例讲解
2018/05/25 Python
3分钟学会一个Python小技巧
2018/11/23 Python
PyQt5创建一个新窗口的实例
2019/06/20 Python
python中必要的名词解释
2019/11/20 Python
德国在线购买葡萄酒网站:Geile Weine
2019/09/24 全球购物
GOLFINO英国官网:高尔夫服装
2020/04/11 全球购物
环境工程大学生自荐信
2013/10/21 职场文书
网络工程专业毕业生推荐信
2013/10/28 职场文书
小学中秋节活动方案
2014/02/06 职场文书
今冬明春火灾防控工作方案
2014/05/29 职场文书
学校2014重阳节活动策划方案
2014/09/16 职场文书
锦旗赠语
2015/06/23 职场文书
Spring Boot 使用 Spring-Retry 进行重试框架
2022/04/24 Java/Android