Ich habe dies folgenden Code für ein wenig ai eigen verwenden, aber es einige seltsame Verhalten hat, wennC++ Eigen wirft Fehler aber beendet Berechnung
#include <stdio.h>
#include <iostream>
#include <time.h>
#include <math.h>
#include <Eigen/Dense>
using namespace std;
using namespace Eigen;
MatrixXd sigmoid(MatrixXd);
MatrixXd sigmoid_d(MatrixXd);
class Layer{
public:
MatrixXd layerweights;
Layer(int x,int y){
layerweights.resize(x,y);
for(int i=0;i<layerweights.rows();i++){
for(int j=0;j<layerweights.cols();j++){
double r =(rand()/(double)(RAND_MAX)) * 2 - 1;
layerweights(i,j) = r;
}
}
}
Layer(){
this->layerweights.setZero();
}
};
class Network{
public:
Layer l1;
Layer l2;
MatrixXd inp;
MatrixXd outp;
int id;
Network(){
id = 0;
inp.resize(1,5);
inp << 0,1,2,3,4;
outp.resize(1,5);
outp << 0,1,4,9,16;
}
MatrixXd think(){
MatrixXd ol1 = sigmoid(inp * l1.layerweights);//1x5*5x5 1x5
MatrixXd ol2 = sigmoid(ol1 * l2.layerweights); //1x5*5x5 1x5
return ol2;
}
int main() {
Network generation [10];
srand(time(NULL));
for(int i=0;i<6;i++){ //initialize 1st generation
generation[i].l1 = Layer(5,5);
generation[i].l2 = Layer(5,5);
generation[i].id = i;
}
for(int i=0;i<=6;i++){
cout<<generation[i].think()<<'\n';
}
return 0;
}
MatrixXd sigmoid(MatrixXd x){
return 1./(1+(x.array() * -1).exp());
}
die Ausgabe in der Konsole ausgeführt:
Assertion failed: lhs.cols() == rhs.rows() & & "ungültiges Matrixprodukt" & & "Wenn Sie ein Koeff-weises oder ein Punktprodukt verwenden möchten, verwenden Sie die entsprechenden expliziten Funktionen", Datei c: \ mingw \ include \ eigen \ src/Kern/Produkt.h, Zeile 97
Diese Anwendung hat die Runtime aufgefordert, sie auf ungewöhnliche Weise zu beenden. Wenden Sie sich für weitere Informationen bitte an das Support-Team der Anwendung.
15,7222 7,48441 15,4497 8,88806 15,2964 8,90715 7,4913 4,46665 11,0792 9,32262 4,38281 5,5597 6,06866 7,33861 3,5983 5,69089 2,82105 8,79453 2,2928 7,4683 14,2536 5,6492 11,3739 11,9831 5,04955 9,85721 16,4741 4,57733 3,87002 2,37858
auch öffnet es die gena_exe nicht funktioniert Fenster (ich arbeite an einem Windows-Laptop).
die seltsame daran ist, dass die prūogram zu beenden excuted und doesnt zu stoppen vielleicht ist es nur, weil mein Code ist schneller als die Fehler Handhabung, wenn der Fehler
auftrittBitte helfen - danke
danke für deine antwort, jetzt benutze ich das eclipse debugging tool –