当前位置: 首页 > 知识库问答 >
问题:

如何解决keras上的错误“分配超过10个系统内存”?

刘高驰
2023-03-14

我用Tensorflow后端在Keras上做了一个CNN,我的训练集有144个例子,但是每个例子的大小为3200*101。我的CNN是非常基本的,只是为了学习,batch_size2(我试着从32减少,但没有任何改善)。一个CNN层,一个展平层和一个密集层用于输出(11类)。当我符合模型时,我的笔记本电脑显示“分配(一个大数字)超过系统内存的10”,然后冻结,即使没有运行1个时代。我不能“压缩”这些例子,它们中的每一个都必须有准确的大小。我在我的CPU上运行模型(我没有GPU),8 gb内存,1 tb磁盘。我能做什么呢?

Psdt:对不起,我的英语不好,我还在学习。谢谢你的回答!

更新编辑:只需添加更多信息。

例如,我的列车组为形状(144、3400、101、1),标签为形状(144、11)。我的模型如下:

model.add(Conv2D(8, kernel_size=6, activation='linear', input_shape=(3400,101,1), batch_size=2))
model.add(Flatten())
model.add(Dense(11, activation='softmax'))
model.compile(optimizer='sgd', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(X_train, y_train, epochs=100)

共有2个答案

洪涵亮
2023-03-14
sudo swapoff /swapfile
sudo rm  /swapfile
sudo fallocate -l 32G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

swapon -s

以上步骤将产生32G交换空间。然后运行深入学习代码。我的很好用。

我的笔记本电脑规格是HP 430 g2 4G ram 500 G SSD

乐正迪
2023-03-14

在Keras的普通前馈网络中使用很长的输入编码时,这看起来和我得到的错误一样。我一直在使用单词嵌入,没有问题,但现在我在输入中添加了额外的功能,我得到了与您相同的错误。您需要允许脚本使用更多内存。在kubernetes对我有用的是增加我的pod的yml文件中的内存:

spec:
  containers:
  - name: yourname
    image: yourimage
    command: yourcommand
    args: yourargs
    resources:
      limits:
         nvidia.com/gpu: 1 # requesting 1 GPU
         memory: 100Gi

它最初是8G,在我引入附加功能之前就已经工作了。如果不使用docker和K8s,可以在tensorflow会话中使用:config.gpu\u options.allow\u growth=True

在Keras,我认为这将是:

import tensorflow as tf
from keras import backend as K
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
config.log_device_placement = True
session = tf.Session(config=config)
K.set_session(session)
# do your ML task
K.get_session().close();

batch_size减少到1可能会解决这个问题。通常,这个错误只是一个警告,即使作业冻结,如果您让它运行,它也可能会结束。如果这项工作被扼杀了(就像我的一样),那么你肯定需要给它更多的内存,图形处理器服务器可能比你的笔记本电脑更好。您还可以确保您使用的是Float32而不是Float64,因为这样会使用两倍的内存。此外,据我所知,这个错误通常出现在亚当优化器中,所以你使用SGD的事实意味着问题可能不在你的优化过程中。

 类似资料:
  • 使用ResNet50预训练的权重我试图构建一个分类器。代码库完全在Keras高级Tensorflow API中实现。完整的代码发布在下面的GitHub链接中。 源代码:使用RestNet50架构进行分类 预训练模型的文件大小为94.7mb。 我加载了预先训练过的文件 并符合模型 在训练数据集中,我有两个文件夹狗和猫,每个文件夹持有近10,000张图像。当我编译脚本时,我得到以下错误 纪元1/1 2

  • 我使用Keras/Tensorflow在python中创建了一个程序。我对数据的创建和训练没有任何问题。但是,当我想评估我的模型时,我有以下错误: 这似乎是一个内存分配问题。我缩小了模型的尺寸,缩小了所有参数,但没有任何变化。我不知道如何解决这个问题。

  • 问题内容: 我正在处理几个大的txt文件,每个文件大约有800万行。以下是这些行的简短示例: 将它们存储在字典中的代码是: 它在第一个txt文件中运行良好,但是在第二个txt文件中运行时,出现错误。 我正在使用Windows 7 64bit和python 2.7 32bit,intel i5 cpu,8Gb内存。我该如何解决这个问题? 进一步说明:我有四个大文件,每个文件包含许多实体的不同信息。例

  • 问题内容: 在我的系统上,我无法运行启动流程的简单Java应用程序。我不知道该怎么解决。 你能给我一些解决方法的提示吗? 该程序是: 结果是: 系统配置: 编辑:解决方案 这解决了我的问题,我不知道为什么: 回声0> / proc / sys / vm / overcommit_memory 谁能解释的投票:) 附加信息,顶部输出: 附加信息,免费输出: 问题答案: 你的机器的内存配置文件是什么?

  • 问题内容: 我有以下设置: 在路线中,我有: 路线:: get(’articles’,’ArticlesController @ index’); 控制器中的index方法很简单: 并在视图中: 我试图更换: 与 这样我才能真正显示最新的文章。我得到了错误: 调用堆栈为: …等等 我已经将控制器方法恢复到原来的状态,但是错误仍然存​​在。 您能告诉我如何解决这个问题吗? 问题答案: 超过30秒 的

  • 我在Windows 10中有几个任务最近失败了。我最近没有对服务器进行任何更改。这些任务多年来一直运行良好,然后在2017年12月开始失败。我将计划程序任务配置为在系统启动上运行。 当我检查历史记录选项卡时,我看到: 任务启动失败错误:其他数据:错误值:2147943712。 任务/常规选项卡配置如下: 运行用户是否登录 不要存储密码。 以最高权限运行 为Windows 10配置 用户帐户是“管理