zoukankan      html  css  js  c++  java
  • 【转载】 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

  • 相关阅读:
    linux下挂载(mount)光盘镜像文件、移动硬盘
    Windows 7与虚拟机VMware下运行的UBUNTU10.10共享文件夹
    Install Language support in CentOS 5 or Red Hat Enterprise Linux CentOS add Chinese Support
    卫星定位授时系统的时间表示主要有以下几种方法:
    How to mount ntfs external USB drive to CentOS 5,CentOS挂载移动硬盘
    解决Audacious 乱码问题
    2011030914来去匆匆的武子
    VLA的AIPS简单绘图
    解决ubuntu没有声音的方法
    儒略日的计算
  • 原文地址:https://www.cnblogs.com/devilmaycry812839668/p/12034866.html
Copyright © 2011-2022 走看看