tensorflow出现显存不足的提示

在跑程序时经常出现一下这个提示:

Allocator (GPU_0_bfc) ran out of memory trying to allocate 2.26GiB with freed_by_count=0. The caller indicates that this is not a failure, but may mean that there could be performance gains if more memory were available.

首先看一下ubutun服务器的一些基本配置,点击【系统设置】按钮,点开【详细信息】,出现以下界面:

问题来了,总的内存是30.9GiB,远高于2.26GiB,(1MB=1024KB,1GB=1024MB,据Wikipedia的注译,GB(gigabyte)是十进制的容量单位,1GB等于1,000,000,000Bytes。而二进制的容量单位则是用GiB(Gibibyte)就是Giga Binary Byte,相等于1,073,741,824Bytes。所以一个160GB的硬盘其实只有149.0116119GiB)为什么还会报错误呢?因为出现这个问题得 时候,一般都是在用GPU跑大型得深度学习的程序,才会导致所需要的GPU内存不足,那这又是怎么回事呢?首先查看一下电脑显存,在终端输入nvidia-smi,看到如下界面:

看到一块GPU的显存是10989MiB(约为10.7GiB),问题又来了,显存也比需要的2.26GiB大呀,怎么会提示这样的错误呢?网上查查主要有如下解决方法:

解决方法:1.减少batchsize,即减少了GPU内存分配需求

2.如果内存比较大的话,可以切换CPU

3.重置输入图片尺寸,即通过减小图片的大小来减少对显存的消耗

选择上述中的任意一种方法,问题都可以解决,但是还是想知道一下原理才踏实..那么先查查当程序(基于深度学习的为例)运行时候,tensorflow中显存的分配方法:

https://blog.csdn.net/frankzd/article/details/102621817  (参考该博客,可以简单分析自己代码的内存占用量)因为本人的程序框架是GAN网络,之前用CNN框架同样的配置和训练方式就不会由上述GPU内存相关的提示,所以是因为GAN网络有位还有判别器的处理(这一块又增加了网络的权重),所以才会导致占的显存比CNN大?如果有了解的朋友在评论区赐教~

一些相关的边角料,一般在程序里会有如下代码:

其中当allow_soft_placement参数设置为True时,如果运算无法由GPU执行,那么TensorFlow会自动将它放到CPU上执行。另外可以在session这一块进行显存分配。如下:

 

  • 8
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值