ResourceExhaustedError的本质原因及解决方式

背景:跑一个lenet模型,数据集没选用keras自带的手写数字图像,而是选择(224,224,3)维的较大像素图像。

报错:ResourceExhaustedError: OOM when allocating tensor with shape[200704,1024] 

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.

平时遇到这个问题(Hint: If you want to see a list of allocated tensors when OOM happens),因为显存不存,直接减小batch_size即可。

但今天同样遇到这个问题,当令batch_size=1时,依然报错。

根据报错位置,定位到第一个全连接层的位置(x = Dense(1024,activation='relu')),

我们先计算一下这一层所需的参数的大小,当batch_size=1,参数为(200704, 1024),因为图像像素是float32位的,即每股像素相当于四个字节(4B=32bit)的存储量, 1*200704*1024*4B=822083584B/1024/1024=784M,这一层就占这么多存储量,所以内存明显不足。

修改办法:1 换显存,增大内存。

                  2 除此之外,可以适当减少层的的单元数,如将Dense(1024)降低为Dense(512),前提不能保证训练效果。

                  3 适当增加模型的深度

 

参考文章:https://blog.csdn.net/qq_35860352/article/details/80425739

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值