2010-08-25 20 views
-2

J'ai un problème qui se produit lorsque j'écris la ligne de commande de la RBF (fonction de base radiale) réseau de neuronesMatlab - Hors erreur de mémoire

net = newrb(T, D); 

Je reçois l'erreur

**??? 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);** 

I « m travaillant avec 2 Go de RAM mémoire virtuelle taille initiale 4 Go & taille maximale 8 Go

J'ai essayé

  • Maximisation la mémoire virtuelle
  • Sous Windows XP x32, j'ai réussi à presque doubler la quantité de mémoire disponible pour Matlab en éditant boot.ini pour ajouter le commutateur/3GB/USERVA = 3030 /fastdetect/3GB/USERVA = 3030
  • Pack
  • (pour mémoire défragmentation)

mais tout cela sans utilisation

toute aide s'il vous plaît? !!!!!!

Merci à l'avance

+1

Vous devriez être en mesure de voir la quantité de mémoire qui peut affecter Matlab. Pas sûr de la commande, mais "help memory" devrait vous donner des indices. Malheureusement, juste parce que vous avez 3 Go de mémoire libre, cela ne signifie pas que MATLAB peut réellement allouer un tableau/matrice de cette taille. –

+1

Quelles sont les valeurs de 'S' et' Q'? Quelle est la sortie de 'memory' au moment de l'erreur? – Jonas

+1

pouvez-vous nous donner une idée de la taille des données? vous pouvez utiliser la commande 'whos T D' pour savoir .. – Amro

Répondre

2

Je n'ai pas une solution, mais voici quelques techniques de débogage de Ooms dans Matlab qui semblent pertinent.

Pack ne fonctionne pas aussi bien que son doco le dit. Si la mémoire est fragmentée à un niveau bas (ce qui n'est pas rare), vous devez redémarrer Matlab pour la réparer. "Memory" et "memstats de caractéristiques" donneront quelques indications sur la fragmentation de bas niveau. Essayez de redémarrer et d'exécuter à partir d'une nouvelle session Matlab pour voir s'il s'agit d'une fragmentation ou si vous utilisez vraiment la mémoire de pointe. Essayez un "dbstop si toutes les erreurs" de sorte que vous entrez dans le débogueur lorsque vous manquez de mémoire. Ensuite, vous pouvez examiner les cadres de pile avec dbup et dbdown pour voir ce qui retient la mémoire, et voir s'il y a des tableaux étonnamment grands. Les MOO sont parfois issus d'index mal calculés ou de tailles de tableaux qui finissent par allouer des tableaux très gros. L'option "profile on -memory" non documentée peut vous informer sur l'utilisation de la mémoire pendant l'exécution, ce qui peut aider.

Et votre ensemble de données peut être trop volumineux. Voyez si vous pouvez le casser dans de plus petites pièces et faire une boucle sur eux, réduisant les besoins de mémoire de pointe.

Bonne chance.