【问题标题】:Matlab - Out Of Memory ErrorMatlab - 内存不足错误
【发布时间】:2011-04-03 16:34:48
【问题描述】:

我在编写 rbf(径向基函数)神经网络的命令行时遇到了一个问题

net = newrb(T, D);

我得到了错误

**??? Error using ==> unknown
Out of memory. Type HELP MEMORY for your options.

Error in ==> dist>apply at 119
z = zeros(S,Q);

Error in ==> boiler_weight at 38
result = apply(a,b,c);

Error in ==> dist at 90
boiler_weight

Error in ==> newrb>designrb at 143
P = radbas(dist(p',p)*b);

Error in ==> newrb at 127
[w1,b1,w2,b2,tr] = designrb(p,t,goal,spread,mn,df);**

我正在使用 2 GB RAM 虚拟内存初始大小 4 GB & 最大大小 8 GB

我试过了

  • 最大化虚拟内存
  • 在 Windows XP x32 下,通过编辑 boot.ini 添加开关 /3GB /USERVA=3030,我设法使 Matlab 的可用内存量几乎翻了一番 /fastdetect /3GB /USERVA=3030
  • pack(用于内存碎片整理)

但这一切都没用

有什么帮助吗?!!!!!!

提前感谢

【问题讨论】:

  • 您应该能够看到 MATLAB 可以分配的内存量。不确定命令,但“帮助记忆”应该会给你提示。不幸的是,仅仅因为您说 3GB 的可用内存,并不意味着 MATLAB 可以实际分配该大小的数组/矩阵。
  • SQ 的值是多少?出错时memory 的输出是什么?
  • 您能告诉我们数据有多大吗?您可以使用命令whos T D 来查找..
  • 您使用什么数据类型?这只是一个猜测,但您可能正在使用双精度数组,而 int32 甚至 int8 的数组也可以。
  • 你有多少物理内存?那是“2 GB RAM”吗?

标签: matlab neural-network out-of-memory


【解决方案1】:

我没有解决办法,但这里有一些在 Matlab 中用于 OOM 的调试技术,它们似乎密切相关。

Pack 几乎没有它的 doco 所说的那么好用。如果内存碎片在低级别(并不少见),您必须重新启动 Matlab 来修复它。 “内存”和“功能 memstats”将给出一些低级碎片的指示。尝试从一个新的 Matlab 会话重新启动并运行,看看它是否是碎片,或者它真的是内存使用高峰。

尝试“dbstop if all error”,以便在内存不足时进入调试器。然后,您可以使用 dbup 和 dbdown 检查堆栈帧,看看是什么占用了内存,并查看是否有任何惊人的大数组。 OOM 有时来自计算错误的索引或最终分配超大数组的数组大小。

未记录的“-memory 上的配置文件”选项可以告诉您执行期间的内存使用情况,这可能会有所帮助。

而且您的数据集可能太大了。看看你是否可以把它分解成更小的部分并循环它们,从而减少峰值内存需求。

祝你好运。

【讨论】:

    【解决方案2】:

    也许 The MathWorks 提供的一种解决方案可以解决您的问题:

    http://www.mathworks.com/support/tech-notes/1100/1107.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-26
      • 2016-04-30
      • 2013-06-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多