zoukankan      html  css  js  c++  java
  • Tensorflow与Keras自适应使用显存

    Tensorflow支持基于cuda内核与cudnn的GPU加速,Keras出现较晚,为Tensorflow的高层框架,由于Keras使用的方便性与很好的延展性,之后更是作为Tensorflow的官方指定第三方支持开源框架。但两者在使用GPU时都有一个特点,就是默认为全占满模式。在训练的情况下,特别是分步训练时会导致显存溢出,导致程序崩溃。可以使用自适应配置来调整显存的使用情况。

    一、Tensorflow
    1、指定显卡
    代码中加入

    import os
    os.environ["CUDA_VISIBLE_DEVICES"] = "0"
    1
    2
    或者在运行代码前,在终端

    export CUDA_VISIBLE_DEVICES=0
    1
    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))
    1
    2
    3、自适应分配
    会自适应分配显存,不会将显存全部分配导致资源浪费

    config = tf.ConfigProto()
    config.gpu_options.allow_growth=True
    sess = tf.Session(config=config)
    1
    2
    3
    二、Keras
    与tensorflow大差不差,就是将tf.Session配置转置Keras配置
    1、指定显卡
    代码中加入

    import os
    os.environ["CUDA_VISIBLE_DEVICES"] = "0"
    1
    2
    或者在运行代码前,在终端

    export CUDA_VISIBLE_DEVICES=0
    1
    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)
    1
    2
    3
    4
    5
    6
    7
    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)
    1
    2
    3
    4
    5
    6
    4、如有设置fit_generator
    将多线程关闭

    #可将
    use_multiprocessing=True
    #改为
    use_multiprocessing=False
    ————————————————
    版权声明:本文为CSDN博主「一呆飞仙」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/l297969586/article/details/78905087

  • 相关阅读:
    JDK1.7.0环境变量配置【Windows】
    QQ游戏百万人同时在线服务器架构实现
    C#关于AutoResetEvent的使用介绍[转载]
    ConcurrentDictionary:.NET 4.0中新的线程安全的哈希表
    大型网站采用的具有稳定性的系统构架
    简单使用Enterprise Library 5.0 中的Cache功能
    来电显示MODEM的的选购指南
    浅谈大型网站动态应用系统架构
    log4net工程中使用备忘
    稳定高效大型系统架构集群中间件开发
  • 原文地址:https://www.cnblogs.com/niulang/p/11888805.html
Copyright © 2011-2022 走看看