Matlab - Ошибка нехватки памяти - PullRequest
0 голосов
/ 25 августа 2010

У меня проблема, которая возникает, когда я пишу командную строку нейронной сети 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 ГБ ОЗУ Виртуальная память Начальный размер 4 ГБ и максимальный размер 8 ГБ

Я пытался

  • Максимизация виртуальной памяти
  • ПодВ Windows XP x32 мне удалось почти удвоить объем памяти, доступной для Matlab, отредактировав boot.ini, добавив переключатель / 3GB / USERVA = 3030 / fastdetect / 3GB / USERVA = 3030
  • pack (для дефрагментации памяти)

но все это без толку

Любая помощь, пожалуйста? !!!!!!

Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 25 августа 2010

У меня нет исправления, но вот некоторые методы отладки для OOM в Matlab, которые кажутся уместными.

Пакет работает не так хорошо, как говорит его доко. Если память фрагментирована на низком уровне (нередко), вы должны перезапустить Matlab, чтобы это исправить. «Память» и «функциональные мемстаты» дадут некоторое представление о фрагментации низкого уровня. Попробуйте перезапустить и запустить новую сессию Matlab, чтобы посмотреть, фрагментирована ли она, или она действительно использует пиковое количество памяти.

Попробуйте выполнить команду "dbstop if all error", чтобы вы взломали отладчик, когда у вас закончилась память. Затем вы можете исследовать кадры стека с помощью dbup и dbdown, чтобы увидеть, что удерживает память, и посмотреть, есть ли на удивление большие массивы. OOM иногда происходят из неправильно рассчитанных индексов или размеров массивов, которые в итоге выделяют очень большие массивы.

Недокументированная опция "profile on -memory" может рассказать вам об использовании памяти во время выполнения, что может помочь.

И ваш набор данных может быть слишком большим. Посмотрите, сможете ли вы разбить его на более мелкие части и зациклить их, уменьшив пиковые требования к памяти.

Удачи.

0 голосов
/ 25 августа 2010

Возможно, одно из решений, предложенных MathWorks, решит вашу проблему:

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

...