zoukankan      html  css  js  c++  java
  • tf.Session()函数的参数应用(tensorflow中使用tf.ConfigProto()配置Session运行参数&&GPU设备指定)

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

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

    config = tf.ConfigProto(allow_soft_placement=True, allow_soft_placement=True)
    config.gpu_options.per_process_gpu_memory_fraction = 0.4 #占用40%显存
    sess = tf.Session(config=config)
     

    1. 记录设备指派情况 :  tf.ConfigProto(log_device_placement=True)


    设置tf.ConfigProto()中参数log_device_placement = True ,可以获取到 operations 和 Tensor 被指派到哪个设备(几号CPU或几号GPU)上运行,会在终端打印出各项操作是在哪个设备上运行的。


    2. 自动选择运行设备 : tf.ConfigProto(allow_soft_placement=True)

    在tf中,通过命令 "with tf.device('/cpu:0'):",允许手动设置操作运行的设备。如果手动设置的设备不存在或者不可用,就会导致tf程序等待或异常,为了防止这种情况,可以设置tf.ConfigProto()中参数allow_soft_placement=True,允许tf自动选择一个存在并且可用的设备来运行操作。


    3. 限制GPU资源使用:

    为了加快运行效率,TensorFlow在初始化时会尝试分配所有可用的GPU显存资源给自己,这在多人使用的服务器上工作就会导致GPU占用,别人无法使用GPU工作的情况。

    tf提供了两种控制GPU资源使用的方法,一是让TensorFlow在运行过程中动态申请显存,需要多少就申请多少;第二种方式就是限制GPU的使用率。


    一、动态申请显存

    config = tf.ConfigProto()
    config.gpu_options.allow_growth = True
    session = tf.Session(config=config)
     


    二、限制GPU使用率

    config = tf.ConfigProto()
    config.gpu_options.per_process_gpu_memory_fraction = 0.4 #占用40%显存
    session = tf.Session(config=config)

    或者:

    gpu_options=tf.GPUOptions(per_process_gpu_memory_fraction=0.4)
    config=tf.ConfigProto(gpu_options=gpu_options)
    session = tf.Session(config=config)
     

    设置使用哪块GPU

    方法一、在python程序中设置:

    os.environ['CUDA_VISIBLE_DEVICES'] = '0' #使用 GPU 0
    os.environ['CUDA_VISIBLE_DEVICES'] = '0,1' # 使用 GPU 0,1
     


    方法二、在执行python程序时候:

    CUDA_VISIBLE_DEVICES=0,1 python yourcode.py

    推荐使用更灵活一点的第二种方法。

  • 相关阅读:
    ZOJ 1002 Fire Net (火力网)
    UVa OJ 117 The Postal Worker Rings Once (让邮差只走一圈)
    UVa OJ 118 Mutant Flatworld Explorers (变体扁平世界探索器)
    UVa OJ 103 Stacking Boxes (嵌套盒子)
    UVa OJ 110 MetaLoopless Sorts (无循环元排序)
    第一次遇到使用NSNull的场景
    NSURL使用浅析
    从CNTV下载《小小智慧树》
    NSDictionary and NSMutableDictionary
    Category in static library
  • 原文地址:https://www.cnblogs.com/tangjunjun/p/11768533.html
Copyright © 2011-2022 走看看