Eclipse Kann fann/j nicht in Eclipse linken...

Bitte aktiviere JavaScript!
pom.xml:
Code:
		<!-- https://mvnrepository.com/artifact/com.googlecode.fannj/fannj -->
		<dependency>
			<groupId>com.googlecode.fannj</groupId>
			<artifactId>fannj</artifactId>
			<version>0.6</version>
		</dependency>

und fann: http://leenissen.dk/fann/wp/download/ (FANN-2.2.0-Source.zip)

Eclipse -> Properties -> Java Build Path -> Libraries -> Add External Class Folder... -> "...\FANN-2.2.0-Source\bin" (darin ist auch fannfloat.dll )

Run:
Code:
Exception in thread "Run$_main" java.lang.UnsatisfiedLinkError: %1 ist keine zulässige Win32-Anwendung.

	at com.sun.jna.Native.open(Native Method)
	at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:288)
	at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:427)
	at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:369)
	at com.googlecode.fannj.Fann.<clinit>(Fann.java:52)
	at ...

Erbitte Rat...

Bearbeitung: Auch versucht: System.setProperty("jna.library.path", "...\\FANN-2.2.0-Source\\bin"); , wird ignoriert...
 
K

kneitzel

Was mir da erst einmal auf Anhieb aufgefallen ist: fannj 0.7 ist mit FANN 2.2.0 getestet, nicht die Version 0.6. Evtl. ist das schon ein entscheidender Unterschied. Ansonsten will er unter Windows, dass der Pfad vom FANN auch im Path ist.

Das findet sich alles auf der Seite von fannj auf github: https://github.com/krenfro/fannj
 
Habe es mal der Windows-Systemumgebungsvariable hinzugefügt... aber leider noch dieselbe Fehlermeldung.

Muss ich den Spaß wirklich selber in Windows übersetzen?
 
K

kneitzel

Also ich habe keinen Windows Rechner um das zu prüfen, daher kann ich nur die Dokumentation diesbezüglich zitieren.

Laut http://leenissen.dk/fann/wp/help/installing-fann/ ist im Download alles schon für Windows gebaut. Und wenn man in den Download rein schaut, dann hat man ja auch im bin Ordner alle DLLs Libs und Executables.

Die Windows-Systemumgebungsvariable PATH hast Du angepasst, den Rechner auch neu gestartet, so dass es wirklich aktiv geworden ist und ggf. auch einmal getestet (Eingabeaufforderung und eine Exe gestartet z.B. simple_train_float?

Was mich etwas wundert ist: Auf Maven scheint erst die Version 0.6 zu sein (https://mvnrepository.com/artifact/com.googlecode.fannj/fannj). Die Seite von fannj spricht aber schon von der 0.7. Evtl. statt über Maven einfach einmal die 0.7 manuell herunter laden und ausprobieren? https://github.com/krenfro/fannj/tree/master/releases
 
Ich habs ans Laufen gebracht. :)

Habe von dieser Seite https://jar-download.com/?search_box=fannj (version 0.7.2) gedownloaded:

12319

Das zip enthält also auch das JNA 4.2.1. Damit klappt es jetzt... Danke nochmal an alle für Eure Hilfe.

Bearbeitung: Das ANN sieht so aus:
Java:
ArrayList<Layer> layers = new ArrayList<Layer>();
layers.add(Layer.create(width * height / 4, ActivationFunction.FANN_SIGMOID_SYMMETRIC, 0.005f));
layers.add(Layer.create(4, ActivationFunction.FANN_SIGMOID_SYMMETRIC, 0.005f));
Fann fa = new Fann(layers);
Trainer tr = new Trainer(fa);
tr.setTrainingAlgorithm(TrainingAlgorithm.FANN_TRAIN_QUICKPROP);
float mse = tr.train("train1.txt", 50000, 1000, 0.001f);
System.out.println("mse = " + mse);

train1.txt ist ca 0,5gb groß... Evtl muss ich noch etwas an den Argumenten ändern denn es hält noch nicht an...
 
Gesagt getan:
Java:
		ArrayList<Layer> layers = new ArrayList<Layer>();
		layers.add(Layer.create(width * height / 4, ActivationFunction.FANN_SIGMOID_SYMMETRIC, 0.5f));
		layers.add(Layer.create(4, ActivationFunction.FANN_SIGMOID_SYMMETRIC, 0.5f));
		Fann fa = new Fann(layers);
		Trainer tr = new Trainer(fa);
		// tr.setTrainingAlgorithm(TrainingAlgorithm.FANN_TRAIN_QUICKPROP);
		float mse = tr.train("train1.txt", 500, 100, 0.1f);
		System.out.println("mse = " + mse);

		return fa;

Das ist gefühlt 100mal schneller als wenn es in Java geschrieben wäre...
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben