原文地址:

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用法总结的更多相关文章

  1. 【转载】 TensorFlow学习——tf.GPUOptions和tf.ConfigProto用法解析

    原文地址: https://blog.csdn.net/c20081052/article/details/82345454 ------------------------------------- ...

  2. tensorflow中tf.ConfigProto()用法解释

    在看C3D代码的时候,看见有一段代码是 config = tf.ConfigProto()#主要是配置tf.Session的运行方式,GPU还是CPU,在这里选择的是GPU的运行方式 config.g ...

  3. [转载]tensorflow中使用tf.ConfigProto()配置Session运行参数&&GPU设备指定

    tf.ConfigProto()函数用在创建session的时候,用来对session进行参数配置: config = tf.ConfigProto(allow_soft_placement=True ...

  4. tf.Session()函数的参数应用(tensorflow中使用tf.ConfigProto()配置Session运行参数&&GPU设备指定)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/dcrmg/article/details ...

  5. tensorflow中使用tf.ConfigProto()配置Session运行参数&&GPU设备指定

    tf.ConfigProto()函数用在创建session的时候,用来对session进行参数配置: config = tf.ConfigProto(allow_soft_placement=True ...

  6. TensorFlow中tf.ConfigProto()配置Sesion运算方式

    博主个人网站:https://chenzhen.online tf.configProto用于在创建Session的时候配置Session的运算方式,即使用GPU运算或CPU运算: 1. tf.Con ...

  7. 使用tf.ConfigProto()配置Session运行参数和GPU设备指定

    参考链接:https://blog.csdn.net/dcrmg/article/details/79091941 tf.ConfigProto()函数用在创建session的时候,用来对sessio ...

  8. Tensorflow中tf.ConfigProto()详解

    参考Tensorflow Machine Leanrning Cookbook tf.ConfigProto()主要的作用是配置tf.Session的运算方式,比如gpu运算或者cpu运算 具体代码如 ...

  9. tf.concat, tf.stack和tf.unstack的用法

    tf.concat, tf.stack和tf.unstack的用法 tf.concat相当于numpy中的np.concatenate函数,用于将两个张量在某一个维度(axis)合并起来,例如: a ...

随机推荐

  1. Sql 语句中 IN 和 EXISTS 的区别

    IN 语句:只执行一次 确定给定的值是否与子查询或列表中的值相匹配.in在查询的时候,首先查询子查询的表,然后将内表和外表做一个笛卡尔积,然后按照条件进行筛选.所以相对内表比较小的时候,in的速度较快 ...

  2. 模块加载——modprobe和insmod的区别(转)

    转载地址:https://blog.csdn.net/qianyizhou17/article/details/44135133 linux设备驱动有两种加载方式insmod和modprobe,下面谈 ...

  3. pid 控制

    static std::map<pid_t, TTask *> Tasks; TError TTask::Fork(bool detach) { PORTO_ASSERT(!PostFor ...

  4. SpringBoot项目的测试类

    1. package soundsystem; import static org.junit.Assert.*; import org.junit.Test; import org.junit.ru ...

  5. python应用-获取文件后缀名

    def get_suffix(filename,has_dot=False): """ 获取文件后缀名 :param filename: 文件名 :param has_d ...

  6. Easyui combobox 源码修改模糊查询v=1.34

    原来的匹配方式: $.fn.combobox.defaults=$.extend({},$.fn.combo.defaults,{valueField:"value",textFi ...

  7. 【大数据】虚拟机-Ubuntu环境

    目标 1.宿主机器能相互访问 2.虚拟机能访问互联网 方法 1.VMWare--编辑---虚拟网络编辑器,选择宿主机上网网卡 2.虚拟机设置-网络适配器 3.宿主机网络设置查看 4.Ubuntu网络设 ...

  8. 开启了wpjam以后网站语言不能设置英文的解决方法

    一位网友问ytkah开启了wpjam以后网站语言不能设置英文了这是什么情况?选择English保存以后还是简体中文,禁用插件再设置语言是可以设为English,好几个站点都是这样 其实很简单,只要把这 ...

  9. Can总线上的电平及物理层仲裁

    CAN总线采用差分信号传输,通常情况下只需要两根信号线(CAN-H和CAN-L)就可以进行正常的通信.在干扰比较强的场合,还需要用到屏蔽地即CAN-G(主要功能是屏蔽干扰信号),CAN协议推荐用户使用 ...

  10. 15-网页,网站,微信公众号基础入门(网页版MQTT,做自己的MQTT调试助手)

    https://www.cnblogs.com/yangfengwu/p/11198572.html 说一下哈,,如果教程哪里看不明白...就去自己百度补充哪一部分,,学习不是死记硬背,需要会学习,永 ...