noch 2 grundlegnde fragen:



  • simpleNet::simpleNet(int dimI, int dimH, int dimO){
        mem_alloc(dimI,dimH,dimO);
    
        srand(time(NULL));
        for(int i=0; i<=amountI; i++)               //fill with rand values (-0.3...0.3)
            for(int j=0; j<amountH; j++)
                    ihWeights[i][j]=(float)rand()/RAND_MAX*0.6-0.3;
        for(int i=0; i<=amountH; i++)
            for(int j=0; j<amountO; j++)
                    hoWeights[i][j]=(float)rand()/RAND_MAX*0.6-0.3;
    }
    

    mem_alloc: was macht das?

    simpleNet::simpleNet(char* filename){
        int dimI, dimH, dimO;
        ifstream in(filename);
        if(!in){
            throw ANN_ERROR::file_exception("Error opening file");
            return;
        }    
        //throw exception on input failing
        in.exceptions(ios_base::failbit|ios_base::badbit|ios_base::eofbit);	
        try{
        	in>>dimI;
        	in>>dimH;
        	in>>dimO;
       	}
       	catch(ios_base::failure){
       	    throw ANN_ERROR::file_exception("Error reading weight matrix dimensions");
       	    return;
        }
        mem_alloc(dimI,dimH,dimO);
    
        for(int i=0; i<=dimI; i++)
        	for(int j=0; j<dimH; j++){
        	    try{
        	        in>>ihWeights[i][j];
    	        }    
    	        catch(ios_base::failure){
    	            throw ANN_ERROR::file_exception("Error reading input-hidden weight matrix");
    	            return;
                }
            }
      	for(int i=0; i<=dimH; i++)
        	for(int j=0; j<dimO; j++){
        		try{
          			in>>hoWeights[i][j];
    			}
    			catch(ios_base::failure){
    			    throw ANN_ERROR::file_exception("Error reading hidden-output weight matrix");
    			    return;
    			}    
       		}
         in.close();	
    }
    

    jo, und dann hab ich noch nie was von "try" und "throw" und konsorten("catch") gehört.
    ich weiß der quelltext für dieses neuronale netz ist vielleicht hier unpassend, aber er eignet sich recht gut.



  • mem_alloc wird wohl, wie der Name es sagt, Speicher allokieren..
    try und catch sind zum Exception-Handling gedacht..
    hab mich noch nicht so damit befasst.. nix zeit..



  • das geht mir ähnlich 🙂



  • vielleicht hilft dass jem. wenn es ihm ähnlich gehr wie mir!
    http://www.math.uni-wuppertal.de/~axel/skripte/oop/oop19_2.html



  • mem_alloc ist eher für die C-Programmierer interessant und reserviert Speicher, als C++-Programmierer benutzt man new. Vorallem auch weil bei mem_alloc keine Konstruktoren aufgerufen wird, wenn man entsprechend Speicher reserviert. Es gibt keinen Grund mem_alloc zu benutzen.

    try und catch ist für Exception-Handling gedacht. Hier kannste was dazu nachlesen: http://www.kharchi.de/cppratgeber3.htm



  • zu mem_alloc: das ist gut in meinem buch stand nämlich auch nur was zu new!
    also exeption handling ist fehlerbehandlung? ja?



  • Ausnahmenbehandlung ist nicht unbedingt gleich Fehlerbehandlung. Sollte allgemein noch vorsichtiger mit umgegangen werden als mit Fehlern. Exceptions sollten also nur da eingesetzt werden, wenn wirklich eine Ausnahmesituation stattfindet, die eigentlich im normalen Ablauf nicht vorkommen kann. Dazu gehören zum Beispiel nicht Falscheingaben vom User oder unerwartete Dateiformate.



  • Steht denke ich mal alles ausführlich in meinem geposteten Link drin, oder nicht??? 🙄 ⚠



  • pumuckl schrieb:

    Dazu gehören zum Beispiel nicht Falscheingaben vom User oder unerwartete Dateiformate.

    aber keine echten errors, null-pointer dereferenzierung oder divisiom durch 0. dafür taugt das nicht



  • ok!
    thx 😃



  • Artchi schrieb:

    mem_alloc ist eher für die C-Programmierer interessant und reserviert Speicher, als C++-Programmierer benutzt man new.

    als c-programmierer benutzt man malloc, mem_alloc ist irgendwas spezielles, jedenfalls kein ansi-c. ohne zu wissen, warum hier mem_alloc statt malloc benutzt wurde, kannst du nicht pauschal new empfehlen.



  • wisst ihr warum?



  • Bashar schrieb:

    als c-programmierer benutzt man malloc, mem_alloc ist irgendwas spezielles, jedenfalls kein ansi-c. ohne zu wissen, warum hier mem_alloc statt malloc benutzt wurde, kannst du nicht pauschal new empfehlen.

    Siehste, so wenig C kann ich! 😉 Hab nie C gelernt. 😃


Anmelden zum Antworten