Error:OOM when allocating tensor with shape[......]

问题描述:

训练模型时,遇到:
在这里插入图片描述

原因:

内存不够,OOM即ran out of memory
可以使用top命令动态监听运行时间非常短的程序的内存使用情况:参考
启用2个session,一个session运行top命令,另一个session运行指定的程序,top命令会输出与这个命令相关的资源使用情况。
在这里插入图片描述

解决方法:

最直观的方式就是减小batch_size或者hidden_layer中的单元数

  • 减少批处理Batch 的大小
  • 降低全连接层的维度。分析错误的位置,在哪一层出现显卡不够,比如在全连接层出现的,则降低全连接层的维度,把2048改成1042啥的
  • 增加池化层,,降低整个网络的维度。
  • 缩小输入图片大小

总结:想进一切办法降维,降低网络的维度。

参考1:https://blog.csdn.net/huowa9077/article/details/81042553
参考2:http://www.freesion.com/article/9789162136/

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: "oom when allocating tensor with shape" 的意思是在分配形状为某个值的张量时出现了内存不足的错误。这通常是因为计算机的内存不足以容纳所需的张量大小。需要考虑减少张量的大小或增加计算机的内存。 ### 回答2: oom when allocating tensor with shape的意思是指当分配一个给定形状的张量时,内存溢出错误(OOM error)发生了。这通常是由于所需的内存超出了计算机可用的内存限制而导致的。 在深度学习中,建立神经网络需要大量的计算,因此需要使用大量的张量来存储权重、梯度和输入输出等信息。如果程序试图分配一个超出计算机可用内存范围的张量,就会发生OOM错误。 解决OOM错误有以下几种方法: 1. 减少批量大小(batch size)。减小批量大小可以降低内存使用量,减少OOM错误的概率。 2. 改变网络设计。可以使用稠密层替换卷积层、使用较小的卷积核、减少特征图的数量,从而减少模型的参数量和内存占用。 3. 优化代码。使用内存复用(memory reuse)策略以减少内存碎片、使用 GPU 可以增加 GPU 内存、减少不必要的拷贝等。 4. 增加物理内存或硬件(如 GPU)显存。增加机器的物理内存可以缓解OOM错误的概率。 总之,OOM错误是深度学习中常见的错误之一,但我们可以通过减少批量大小、改变网络设计、优化代码或增加硬件设备,来减少或避免出现OOM错误。 ### 回答3: 当我们在使用深度学习模型进行训练或者预测推断时,经常会遇到OOM(Out Of Memory)错误。其中一个常见的错误信息是“OOM when allocating tensor with shape”,可能在使用大量数据进行模型训练时出现。这个错误通常是由于我们在 TensorFlow 中为数据分配了过多的内存而导致的。 出现这个错误的原因可以来自以下几个方面: 1. 内存不足。我们在运行 TensorFlow 时,它会占用我们系统的内存。所以如果可使用内存不足,TensorFlow 就会抛出 OOM 错误。 2. 对于网络较大或者模型较深的情况,如果一次将所有的数据都加载到内存中,会占用过多的内存资源。因此需要采用分批次读入数据的方式进行训练 3. 模型中使用过多的变量。当我们使用 tf.get_variable() 函数创建变量时,如果不指定寻找谁创建的变量,TensorFlow 就会在当前命名空间中查找所有与该名称匹配的变量。这就会导致 TensorFlow 创建大量的变量,从而出现 OOM 错误。 如何解决这个错误呢? 1. 使用更大的显存或者更大的内存。如果你有足够的硬件资源,这个问题就很好解决,只需要升级硬件即可。 2. 采用分批数据处理的方式。可以使用 TensorFlow 中的 Dataset 对象或者迭代器等 API 来加载数据,并使用 batch() 函数来分批次处理数据,从而避免一次性将所有数据加载到内存中。 3. 对于模型中使用过多的变量,可以使用 with tf.variable_scope(name) 加入作用域的方式来创建变量,这样就可以在 name 命名空间中搜索变量,避免创建过多的变量。 综上所述,OOM when allocating tensor with shape 这个错误的出现通常是由 TensorFlow 内存不足或者模型实现不合理导致的。通过调整硬件资源、采用数据分批处理或者控制变量数量等方式我们可以避免这个错误的出现,从而更好地进行深度学习模型的训练和推理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值