时间:2021-05-22
Tensorflow支持基于cuda内核与cudnn的GPU加速,Keras出现较晚,为Tensorflow的高层框架,由于Keras使用的方便性与很好的延展性,之后更是作为Tensorflow的官方指定第三方支持开源框架。
但两者在使用GPU时都有一个特点,就是默认为全占满模式。在训练的情况下,特别是分步训练时会导致显存溢出,导致程序崩溃。
可以使用自适应配置来调整显存的使用情况。
一、Tensorflow
1、指定显卡
代码中加入
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0"
或者在运行代码前,在终端
export CUDA_VISIBLE_DEVICES=0
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))
3、自适应分配
会自适应分配显存,不会将显存全部分配导致资源浪费
config = tf.ConfigProto() config.gpu_options.allow_growth=True sess = tf.Session(config=config)二、Keras
与tensorflow大差不差,就是将tf.Session配置转置Keras配置
1、指定显卡
代码中加入
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0"
或者在运行代码前,在终端
export CUDA_VISIBLE_DEVICES=0
2、为显存分配使用比例
import tensorflow as tfimport keras.backend.tensorflow_backend as KTFconfig = tf.ConfigProto()config.gpu_options.per_process_gpu_memory_fraction = 0.333session = tf.Session(config=config)KTF.set_session(session)3、自适应分配
import keras.backend.tensorflow_backend as KTFconfig = tf.ConfigProto() config.gpu_options.allow_growth=True session = tf.Session(config=config)KTF.set_session(session)4、如有设置fit_generator
将多线程关闭
#可将use_multiprocessing=True#改为use_multiprocessing=False补充知识:Keras 自动分配显存,不占用所有显存
自动分配显存,不占用所有显存
import keras.backend.tensorflow_backend as KTFimport tensorflow as tfimport os os.environ["CUDA_VISIBLE_DEVICES"] = "1"config = tf.ConfigProto()config.gpu_options.allow_growth=True #不全部占满显存, 按需分配sess = tf.Session(config=config)KTF.set_session(sess)以上这篇Tensorflow与Keras自适应使用显存方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
在win764位,Anaconda安装的Python3.6.1下安装的TensorFlow与Keras,Keras的backend为TensorFlow。在运行
初步尝试Keras(基于Tensorflow后端)深度框架时,发现其对于GPU的使用比较神奇,默认竟然是全部占满显存,1080Ti跑个小分类问题,就一下子满了.
Keras的底层库使用Theano或TensorFlow,这两个库也称为Keras的后端。无论是Theano还是TensorFlow,都需要提前定义好网络的结构
众所周知tensorflow造势虽大却很难用,因此推荐使用Keras,它缺省是基于tensorflow的,但通过修改keras.json也可以用于theano。
本文主要讨论windows下基于tensorflow的keras1、找到tensorflow的根目录如果安装时使用anaconda且使用默认安装路径,则在C:\