【转载】 tf.ConfigProto和tf.GPUOptions用法总结
原文地址:
https://blog.csdn.net/C_chuxin/article/details/84990176
------------------------------------------------------------------------------------------
【题目】tf.ConfigProto和tf.GPUOptions用法总结
概述
tf.ConfigProto一般用在创建session的时候,用来对session进行参数配置,而tf.GPUOptions可以作为设置tf.ConfigProto时的一个参数选项,一般用于限制GPU资源的使用。
一、tf.ConfigProto
tf.ConfigProto一般用在创建session的时候,用来对session进行参数配置。
1.1 tf.ConfigProto()的参数
log_device_placement=True : 是否打印设备分配日志 allow_soft_placement=True : 如果你指定的设备不存在,允许TF自动分配设备
1.2 tf.ConfigProto()使用参数的两种方法
(1)第一种实在构造config对象时直接赋值,如下:
tf.ConfigProto(log_device_placement=True, allow_soft_placement=True)
(2)第二种是先构造config对象,再对构造的config对象进行赋值,如下:
config = tf.ConfigProto() config.log_device_placement= True config.allow_soft_placement=True
PS:tf.ConfigProto()含有的部分参数(属性与方法,可使用dir(tf.ConfigProto())进行查看)如下:

1.3 让参数设置生效的方法
session = tf.Session(config=config)
PS:在Keras中使用:
from keras.backend.tensorflow_backend import set_session set_session(tf.Session(config=config))
二、使用tf.GPUOptions限制GPU资源的使用
参考链接:https://blog.csdn.net/dcrmg/article/details/79091941
tf.GPUOptions可以作为设置tf.ConfigProto时的一个参数选项,一般用于限制GPU资源的使用。同样有两种方法实现。
为了加快运行效率,TensorFlow在初始化时会尝试分配所有可用的GPU显存资源给自己,这在多人使用的服务器上工作就会导致GPU占用,别人无法使用GPU工作的情况。
tf提供了两种控制GPU资源使用的方法,一是让TensorFlow在运行过程中动态申请显存,需要多少就申请多少;第二种方式就是限制GPU的使用率。
2.1 动态申请显存
方法一:
config = tf.ConfigProto() config.gpu_options.allow_growth = True session = tf.Session(config=config)
方法二:
gpu_options=tf.GPUOptions(allow_growth = True) config=tf.ConfigProto(gpu_options=gpu_options) session = tf.Session(config=config)
2.2 限制GPU的使用率
方法一:
config = tf.ConfigProto() config.gpu_options.per_process_gpu_memory_fraction = 0.85 #占用85%显存 session = tf.Session(config=config)
方法二:
gpu_options=tf.GPUOptions(per_process_gpu_memory_fraction=0.85) config=tf.ConfigProto(gpu_options=gpu_options) session = tf.Session(config=config)
【注意】当限制GPU使用率时,GPU所占的显存是一直占着的,哪怕你Ctrl+Z 终止了程序,这时你需要手动kill进程。(参考链接:https://blog.csdn.net/c20081052/article/details/82345454)具体如下:
如果你在linux终端运行深度学习python脚本文件,运行中发现占用多个GPU和内存资源,可用下面的方法解决:
(1)请先查看占用资源的进程归属方是谁,以及使用的是什么指令:
ps -f PID号
(2)然后确认该进程可以kill掉情况下直接杀掉:
kill -9 PID号 #注意必须加-9,否则可能杀不掉进程
————————————————
版权声明:本文为CSDN博主「C小C」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/C_chuxin/article/details/84990176
【转载】 tf.ConfigProto和tf.GPUOptions用法总结的更多相关文章
- 【转载】 TensorFlow学习——tf.GPUOptions和tf.ConfigProto用法解析
原文地址: https://blog.csdn.net/c20081052/article/details/82345454 ------------------------------------- ...
- tensorflow中tf.ConfigProto()用法解释
在看C3D代码的时候,看见有一段代码是 config = tf.ConfigProto()#主要是配置tf.Session的运行方式,GPU还是CPU,在这里选择的是GPU的运行方式 config.g ...
- [转载]tensorflow中使用tf.ConfigProto()配置Session运行参数&&GPU设备指定
tf.ConfigProto()函数用在创建session的时候,用来对session进行参数配置: config = tf.ConfigProto(allow_soft_placement=True ...
- tf.Session()函数的参数应用(tensorflow中使用tf.ConfigProto()配置Session运行参数&&GPU设备指定)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/dcrmg/article/details ...
- tensorflow中使用tf.ConfigProto()配置Session运行参数&&GPU设备指定
tf.ConfigProto()函数用在创建session的时候,用来对session进行参数配置: config = tf.ConfigProto(allow_soft_placement=True ...
- TensorFlow中tf.ConfigProto()配置Sesion运算方式
博主个人网站:https://chenzhen.online tf.configProto用于在创建Session的时候配置Session的运算方式,即使用GPU运算或CPU运算: 1. tf.Con ...
- 使用tf.ConfigProto()配置Session运行参数和GPU设备指定
参考链接:https://blog.csdn.net/dcrmg/article/details/79091941 tf.ConfigProto()函数用在创建session的时候,用来对sessio ...
- Tensorflow中tf.ConfigProto()详解
参考Tensorflow Machine Leanrning Cookbook tf.ConfigProto()主要的作用是配置tf.Session的运算方式,比如gpu运算或者cpu运算 具体代码如 ...
- tf.concat, tf.stack和tf.unstack的用法
tf.concat, tf.stack和tf.unstack的用法 tf.concat相当于numpy中的np.concatenate函数,用于将两个张量在某一个维度(axis)合并起来,例如: a ...
随机推荐
- Linux下 svn相关操作
Linux下 svn相关操作 一.首先看看svn安装的位置: 命令: find / -name svn /var/svn :表示安装目录 /user/bin/svn :表示命令目录 可以看到的是svn ...
- Odoo定时任务(自动任务)
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826270.html 一:定时任务模型 Odoo中内置了一个定时任务模型 ir.cron ,它定义了一 ...
- 性能测试之Jmeter插件安装
使用Jmeter的实际过程中,需要使用到很多插件,比如json的插件,还有就是做websocket接口测试的时候需要下载websocket的插件,虽然官方提供了插件下载的地址,但是知道为什么每次访问的 ...
- 《快活帮》第九次团队作业:【Beta】Scrum meeting 1
项目 内容 这个作业属于哪个课程 2016计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验十三 团队作业9:BETA冲刺与团队项目验收 团队名称 快活帮 作业学习目标 (1)掌 ...
- 一次性开启discuz所有版块的 [audio] [video] [flash] 等多媒体代码
开启全部版块的sql语句是: update cdb_forums set allowmediacode =1 开启指定版块的sql语句是: update cdb_forums set allowmed ...
- Spring Boot 缓存 知识点
每次调用需要缓存功能的方法时,Spring会检查指定参数的指定的目标方法是否已经被调用过:如果有就直接从缓存中获取方法调用后的结果,如果没有就调用方法并缓存结果后返回给用户.下次调用直接从缓存中获取. ...
- 在jsp中获取SpringSecurity中已登录的用户的用户名
1.先引入secrity的标签库 <%@ taglib prefix="security" uri="http://www.springframework.org/ ...
- webpack.config.js配置信息的说明
module.exports = { entry: "./src/main.js", output: { filename: "build/build.js" ...
- PHP获取一年有多少周和每周开始和结束日期
/*PHP获取当前日期是第几周和本周开始日期和本周结束日期*/ //$now = '2018-11-13';周二 public function getNowTimeInfo($now) { $str ...
- AlexNet梳理
创新点 成功的使用relu函数替代了sigmoid函数,解决了使用sigmoid的梯度消散问题 成功的在全连接层使用dropout 成功的使用重叠最大池化 提出了LRN 利用GPU进行运算 数据增强2 ...