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之os操作方法(详解)
Jun 15 Python
python中format()函数的简单使用教程
Mar 14 Python
在python中使用requests 模拟浏览器发送请求数据的方法
Dec 26 Python
python消费kafka数据批量插入到es的方法
Dec 27 Python
Python学习笔记之读取文件、OS模块、异常处理、with as语法示例
Jun 04 Python
python获取磁盘号下盘符步骤详解
Jun 19 Python
Django多数据库的实现过程详解
Aug 01 Python
python实现微信小程序用户登录、模板推送
Aug 28 Python
Python 模拟动态产生字母验证码图片功能
Dec 24 Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
Feb 15 Python
pycharm开发一个简单界面和通用mvc模板(操作方法图解)
May 27 Python
Python使用Turtle模块绘制国旗的方法示例
Feb 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
使用PHPMyAdmin修复论坛数据库的图文方法
2012/01/09 PHP
php中get_headers函数的作用及用法的详细介绍
2013/04/27 PHP
分享常见的几种页面静态化的方法
2015/01/08 PHP
基于PHP实现的多元线性回归模拟曲线算法
2018/01/30 PHP
详解PHP素材图片上传、下载功能
2019/04/12 PHP
JavaScript 不只是脚本
2007/05/30 Javascript
js left,right,mid函数
2008/06/10 Javascript
JSQL 批量图片切换的实现代码
2010/05/05 Javascript
jquery获取css中的选择器(实例讲解)
2013/12/02 Javascript
详细解读AngularJS中的表单验证编程
2015/06/19 Javascript
极易被忽视的javascript面试题七问七答
2016/02/15 Javascript
jquery表单验证插件validation使用方法详解
2017/01/20 Javascript
vue读取本地的excel文件并显示在网页上方法示例
2019/05/29 Javascript
webpack 如何解析代码模块路径的实现
2019/09/04 Javascript
[53:10]完美世界DOTA2联赛决赛日 FTD vs GXR 第二场 11.08
2020/11/11 DOTA
Python编程之Re模块下的函数介绍
2017/10/28 Python
python 除法保留两位小数点的方法
2018/07/16 Python
Django框架实现的普通登录案例【使用POST方法】
2019/05/15 Python
Python学习笔记之pandas索引列、过滤、分组、求和功能示例
2019/06/03 Python
树莓派动作捕捉抓拍存储图像脚本
2019/06/22 Python
python3 反射的四种基本方法解析
2019/08/26 Python
使用Python实现正态分布、正态分布采样
2019/11/20 Python
Python numpy.zero() 初始化矩阵实例
2019/11/27 Python
python 浮点数四舍五入需要注意的地方
2020/08/18 Python
Python random模块的使用示例
2020/10/10 Python
HTML5实现文件断点续传的方法
2017/01/04 HTML / CSS
请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1
2015/07/16 面试题
《纸船和风筝》教学反思
2014/02/15 职场文书
文明餐桌行动实施方案
2014/02/19 职场文书
夫妻分居协议书范本(有子女版)
2014/11/01 职场文书
2015政治思想表现评语
2015/03/25 职场文书
格林童话读书笔记
2015/06/30 职场文书
2016年庆祝六一儿童节活动总结
2016/04/06 职场文书
css3中transform属性实现的4种功能
2021/08/07 HTML / CSS
JavaScript函数柯里化
2021/11/07 Javascript
go goth封装第三方认证库示例详解
2022/08/14 Golang