首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修正"ResourceExhaustedError: OOM .“?

如何修正"ResourceExhaustedError: OOM .“?
EN

Stack Overflow用户
提问于 2019-08-17 19:29:39
回答 1查看 778关注 0票数 0

我正在尝试用Python和Keras一起用自己的数据集来训练一个简单的MLP。这个数据集包含一个1024x1204大小的规范化图像,我需要这个分辨率,因此我不能缩小图像的大小。我使用Tesla V100和16 use 进行培训。

首先,我的目标是,在我能够调整这个模型(制作一个cnn等)之前,让它工作起来,但实际上它没有工作,因为:

ResourceExhaustedError (参见上面的回溯):OOM,当使用shape1048576,4096,并在/job上键入float /job:localhost/replica:0/task:0/device:GPU:0时,分配器GPU__bfc为0

这个错误发生在第一层,所以在训练开始之前。

我在朱莉娅训练的MLP没有记忆问题。

我试过的每一件事

  • 减少批大小
  • 使用带有(模型)的多个gpus时,在使用多个gpus之前就会出现此问题
  • 将输入层的神经元从1024*1024减少到4096 (以减少权重矩阵)
  • 设置生长并尝试使用分馏

朱莉娅的MLP (通量)

代码语言:javascript
复制
m = Chain(
  Dense(1024*1024, 1024, relu),
  Dense(1024, 256, relu),
  Dense(256, 2),
  softmax) |> gpu

巨蟒中的MLP

代码语言:javascript
复制
model = Sequential()
model.add(Dense(4*1024, input_shape=(1024*1024,)))
model.add(Dense(1024, activation='relu'))
model.add(Dense(256, activation='relu'))
model.add(Dense(num_classes, activation='softmax'))
EN

回答 1

Stack Overflow用户

发布于 2019-08-18 08:36:31

在这种情况下,主要有三种情况:输入的大小、网络的大小(参数的数量)和GPU。遗憾的是,这些都被认为是大输入,所以您的第一个赌注将是拒绝批大小。将其转换为1,如果仍然如此,要么减少网络,要么(更有效地)减少输入大小。是的,这意味着信息在处理前会从信号中丢失,但是你会惊讶于网络能从较小分辨率的图像中推断出什么。不过,我知道我不想放弃这些信息,所以要先处理批量大小。例如,762x762x3输入可以运行在16 on的批处理大小为6的Xception上,但不能运行批处理大小8。至于网络体系结构,这些密集的网络输出大小是巨大的。可能是不必要的。是的,所以也许把它放低一点。而且,就像Matias所说的,通过卷积来减少成本是非常推荐的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57539335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档