tensorflow-gpu版本使用问题和方法汇总

训练内存溢出问题

问题描述

使用显卡为1660ti-6G,系统为Ubuntu16.04,使用的tensorflow版本为1.14.
在进行网络的训练的时,tensorflow会默认将显卡的显存占满,然后训练网络有时会出现如下错误:
Unknown: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.

解决方法

针对这种问题,需要人为的对程序所需要的显存进行限制
下面是针对两种显存限制方式(显存自适应增长和显存固定限制)实现的代码

def gpu_memory_config(mode,ratio=1):

    '''
    # gpu config function for memory overflow
    '''
    config = tf.ConfigProto()

    if(mode == "adaption"):
        config.gpu_options.allow_growth = True 
    if(mode == "ratio"):
        config.gpu_options.peper_process_gpu_memory_fraction = ratio

    return config

通过以上代码完成对显存配置方式的选择,启动Session的时候来进行设定:

config = gpu_memory_config(adaption)
with tf.Session(config = config) as :
......

keras和tensorflow混合使用的条件下发生内存溢出的问题

import tensorflow as tf
from tensorflow import keras
import keras.backend.tensorflow_backend as KTF

// 显存自适应(adaption)和显存固定限额(ratio)
model = *******
config = gpu_memory_config(mode)
session = tf.Session(config=config)
KTF.set_session(session)

通过tensorflow的后端来进行keras的显存超出问题的设置

batch_size设置导致tensorflow-gpu显存超出

Tensorflow-GPU显存错误

Hint: If you want to see a list of allocated tensors when OOM happens, add report_tensor_allocations_upon_oom to RunOptions for current allocation info.

解决方法

减小网络的batch_size的值

忽略训练过程中产生的警告和设备信息

import os
import logging
import warnings

# TF_CPP_MIN_LOG_LEVEL = 1         //默认设置,为显示所有信息                
# TF_CPP_MIN_LOG_LEVEL = 2         //只显示error和warining信息                
# TF_CPP_MIN_LOG_LEVEL = 3         //只显示error信息


os.environ["TF_CPP_MIN_LOG_LEVEL"] = "2"
warnings.filterwarnings("ignore")
logging.getLogger('tensorflow').setLevel(logging.ERROR)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rongmelt

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值