2016-10-07 8 views
0

Hi kann mir jemand mit dem Fehler helfen, ich habe Fannj für Neural Network erstellt. Fannj ist Java Bindings FANNFannj: Ungültiger Speicherzugriff

Mein Code (Fast Artificial Neural Network-C-Bibliothek.):

Layer l1 = new Layer(); 
l1.create(1, ActivationFunction.FANN_SIGMOID_SYMMETRIC); 
Layer l2 = new Layer(); 
l2.create(1, ActivationFunction.FANN_SIGMOID_SYMMETRIC); 
Layer l3 = new Layer(); 
l3.create(1, ActivationFunction.FANN_SIGMOID_SYMMETRIC); 
List<Layer> list = new ArrayList<Layer>(); 
list.add(l1); 
list.add(l2); 
list.add(l3); 
Fann fannT = new Fann(list); 

Und Fehler:

Exception in thread "main" java.lang.Error: Invalid memory access 
at com.googlecode.fannj.Fann.fann_create_standard_array(Native Method) 
at com.googlecode.fannj.Fann.<init>(Fann.java:92) 
at m.nieco.suns.zadanie01.Main.main(Main.java:34) 

I verwendet https://github.com/krenfro/fannj

+2

Veröffentlichen Sie keine Bilder von Text, kopieren Sie den Text in Ihren Post und formatieren Sie ihn als feste Breite (verwenden Sie die Schaltfläche '{}' im Editor). Dies sieht wie folgt aus: (a) ein Fehler in der Bibliothek, die Sie verwenden; oder (b) ein Fehler bei der Einrichtung des Listenarguments für den 'Fann()' -Konstruktor. –

+0

danke, ich habe es behoben. ist es besser ? – MatusSeidl

+0

Ich denke, die Frage ist jetzt klar. Der Punkt ist, dass Ihr Programm abstürzt, wenn es die Anweisung "Fann fannT = new Fann (list)" erreicht; und die Fehlermeldung ist "java.lang.Error: Ungültiger Speicherzugriff" –

Antwort

1

Hier die ist Code für den Konstruktor, den Sie aufrufen (von GitHub):

public Fann(List<Layer> layers) { 
    if (layers == null) 
     throw new IllegalArgumentException("layers == null"); 
    if (layers.isEmpty()) 
     throw new IllegalArgumentException("layers is empty"); 

    int[] neurons = new int[layers.size()]; 
    for (int x = 0; x < neurons.length; x++) 
     neurons[x] = layers.get(x).size(); 

    ann = fann_create_standard_array(neurons.length, neurons); 
    addLayers(layers); 
} 

Der Fehler wird in dem Aufruf der nativen Methode auftretend bei

ann = fann_create_standard_array(neurons.length, neurons); 

Da es kein Problem mit der Argumentliste zu sein scheint, und an diesem Punkt das einzige, was es verwendet, ist die Größe von der Liste und dem Wert jedes Listenelements getSize() ist meine Wette auf einen Fehler in der Bibliothek.

Sie erhalten viel häufiger Hilfe, wenn Sie einen Fehlerbericht unter GitHub issue tracker for Fann veröffentlichen.

Verwandte Themen