Błąd podczas kompilacji sieci neuronowej

0

Witam.
Jestem nowy na forum więc witam się ze wszystkimi. Mam problem z biblioteką Encog. Zaprogramowałem prostą sieć neuronową. Jednak jak chce skompilować tą sieć zwykłym poleceniem javac NN.java konsola sypie takimi błedami:

==================================================================================================================================
C:\Users\Bartuś\Desktop\encog-java-core-master\encog-java-core-master\src\main\j
ava>javac NN.java
NN.java:68: error: illegal start of expression
                public final void saveToDrectory("C:\\Users\\Bartuś\\Pulpit\\NN
.eg", network);
                ^
NN.java:68: error: ';' expected
                public final void saveToDrectory("C:\\Users\\Bartuś\\Pulpit\\NN
.eg", network);
                                                ^
NN.java:68: error: not a statement
                public final void saveToDrectory("C:\\Users\\Bartuś\\Pulpit\\NN
.eg", network);

      ^
NN.java:68: error: ';' expected
                public final void saveToDrectory("C:\\Users\\Bartuś\\Pulpit\\NN
.eg", network);

             ^
4 errors

C:\Users\Bartuś\Desktop\encog-java-core-master\encog-java-core-master\src\main\j
ava>
==================================================================================================================================

Nie wiem w czym problem. Czy w bibliotece czy w kodzie.

Oto kod źródłowy sieci neuronowej:

import java.lang.Object;
import org.encog.Encog;
import org.encog.engine.network.activation.ActivationTAHN;
import org.encog.ml.data.MLData;
import org.encog.ml.data.MLDataPair;
import org.encog.ml.data.MLDataSet;
import org.encog.ml.data.basic.BasicMLDataSet;
import org.encog.neural.networks.BasicNetwork;
import org.encog.neural.networks.layers.BasicLayer;
import org.encog.neural.networks.training.propagation.resilient.ResilientPropagation;
import org.encog.persist.EncogDirectoryPersistence;
 
public class NeuralNetwork {
 
	public static void main(final String args[]) {
 
		// create a neural network, without using a factory
		BasicNetwork network = new BasicNetwork();
		network.addLayer(new BasicLayer(new ActivationTAHN(),false,10000));
		network.addLayer(new BasicLayer(new ActivationTAHN(),true,8000));
		network.addLayer(new BasicLayer(new ActivationTAHN(),true,6000));
		network.addLayer(new BasicLayer(new ActivationTAHN(),true,4000));
		network.addLayer(new BasicLayer(new ActivationTAHN(),true,2000));
		network.addLayer(new BasicLayer(new ActivationTAHN(),true,1000));
		network.addLayer(new BasicLayer(new ActivationTAHN(),true,800));
		network.addLayer(new BasicLayer(new ActivationTAHN(),true,600));
		network.addLayer(new BasicLayer(new ActivationTAHN(),true,400));
		network.addLayer(new BasicLayer(new ActivationTAHN(),true,200));
		network.addLayer(new BasicLayer(new ActivationTAHN(),true,100));
		network.getStructure().finalizeStructure();
		network.reset();
 
		// Loading Data Set
		MLDataSet trainingSet = getDataSet("C:\\Users\\Bartuś\\Pulpit\\TrainingData.csv");
 
		// Training Neural Network
		final ResilientPropagation train = new ResilientPropagation(network, trainingSet);
 
		int epoch = 1;
 
		do {
			train.iteration();
			System.out.println("Epoch #" + epoch + " Error:" + train.getError());
			epoch++;
		} while(train.getError() > 0.00000000001);
		train.finishTraining();
 
		// Testing Neural Network
		System.out.println("Neural Network Results:");
		for(MLDataPair pair: trainingSet ) {
			final MLData output = network.compute(pair.getInput());
			System.out.println(pair.getInput().getData(0) + "," + pair.getInput().getData(1)
					+ ", actual=" + output.getData(0) + ",ideal=" + pair.getIdeal().getData(0));
		}
		
		public final void saveToDrectory("C:\\Users\\Bartuś\\Pulpit\\NN.eg", network);
		
		Encog.getInstance().shutdown();
	}
}

W załączniku są pliki biblioteki Encog. Może trzeba tą bibliotekę jakoś skompilować czy w inny sposób przygotować.
W miarę możliwości proszę o szybką odpowiedź. Z góry dziękuję.

0

Błąd w bibliotece :D :D :D
Błąd masz w kodzie, tam gdzie ci kompilator pokazuje. Co to niby jest:

public final void saveToDrectory("C:\\Users\\Bartuś\\Pulpit\\NN.eg", network);

? To jest DEKLARACJA FUNKCJI a nie jej WYWOŁANIE.

1

Zamnień

public final void saveToDrectory("C:\\Users\\Bartuś\\Pulpit\\NN.eg", network);

na

saveToDrectory("C:\\Users\\Bartuś\\Pulpit\\NN.eg", network);
0

Funkcja saveToDirectory jest zdefiniowana w klasie EncogDirectoryPersistence.java. Więc powinno być chyba EncogDirectoryPersistence.saveToDirectory("C:\Users\Bartuś\Pulpit\NN.eg, network);. Jednak gdy tak zrobiłem konsola znowu wyrzuciła błędy:

C:\Users\Bartuś\Desktop\encog-java-core-master\encog-java-core-master\src\main\j
ava>javac NN.java
NN.java:25: error: class NeuralNetwork is public, should be declared in a file n
amed NeuralNetwork.java
public class NeuralNetwork {
^
NN.java:3: error: cannot find symbol
import org.encog.engine.network.activation.ActivationTAHN;
^
symbol: class ActivationTAHN
location: package org.encog.engine.network.activation
NN.java:31: error: cannot find symbol
network.addLayer(new BasicLayer(new ActivationTAHN(),false,10000
));
^
symbol: class ActivationTAHN
location: class NeuralNetwork
NN.java:32: error: cannot find symbol
network.addLayer(new BasicLayer(new ActivationTAHN(),true,8000))
;
^
symbol: class ActivationTAHN
location: class NeuralNetwork
NN.java:33: error: cannot find symbol
network.addLayer(new BasicLayer(new ActivationTAHN(),true,6000))
;
^
symbol: class ActivationTAHN
location: class NeuralNetwork
NN.java:34: error: cannot find symbol
network.addLayer(new BasicLayer(new ActivationTAHN(),true,4000))
;
^
symbol: class ActivationTAHN
location: class NeuralNetwork
NN.java:35: error: cannot find symbol
network.addLayer(new BasicLayer(new ActivationTAHN(),true,2000))
;
^
symbol: class ActivationTAHN
location: class NeuralNetwork
NN.java:36: error: cannot find symbol
network.addLayer(new BasicLayer(new ActivationTAHN(),true,1000))
;
^
symbol: class ActivationTAHN
location: class NeuralNetwork
NN.java:37: error: cannot find symbol
network.addLayer(new BasicLayer(new ActivationTAHN(),true,800));

                                                ^

symbol: class ActivationTAHN
location: class NeuralNetwork
NN.java:38: error: cannot find symbol
network.addLayer(new BasicLayer(new ActivationTAHN(),true,600));

                                                ^

symbol: class ActivationTAHN
location: class NeuralNetwork
NN.java:39: error: cannot find symbol
network.addLayer(new BasicLayer(new ActivationTAHN(),true,400));

                                                ^

symbol: class ActivationTAHN
location: class NeuralNetwork
NN.java:40: error: cannot find symbol
network.addLayer(new BasicLayer(new ActivationTAHN(),true,200));

                                                ^

symbol: class ActivationTAHN
location: class NeuralNetwork
NN.java:41: error: cannot find symbol
network.addLayer(new BasicLayer(new ActivationTAHN(),true,100));

                                                ^

symbol: class ActivationTAHN
location: class NeuralNetwork
NN.java:46: error: cannot find symbol
MLDataSet trainingSet = getDataSet("C:\Users\Bartu+Ť\Pulpit\
TrainingData.csv");
^
symbol: method getDataSet(String)
location: class NeuralNetwork
NN.java:68: error: non-static method saveToDirectory(String,Object) cannot be re
ferenced from a static context
EncogDirectoryPersistence.saveToDirectory("C:\Users\Bartu+Ť\P
ulpit\NN.eg", network);
^
15 errors

C:\Users\Bartuś\Desktop\encog-java-core-master\encog-java-core-master\src\main\j
ava>

Co mam teraz zrobić? Wygląda to na błąd z importem klas biblioteki, bo nie rozpoznaje funkcji w zaimportowanych klasach. Nie mam pojęcia jak to naprawić.

1

Ja wytrenowaną sieć neuronową zapisywałem w taki sposób:

EncogDirectoryPersistence.saveObject(new File("sciezka do pliku/network.eg"), network);
0

Dziękuję Ci podróżnik, na pewno to wykorzystam. Jednak nie potrafię rozwiązać problemu powyżej. Czy ktoś zna rozwiązanie tego problemu?

4

No i nasuwa się pytanie: skąd ukradłeś ten kod? Bo przecież go sam nie napisałeś mając 0 pojęcia o javie. Na oko to ukradłeś i próbujesz jakoś przerobić żeby się nikt nie połapał, ale z braku umiejętności nic z tego nie wychodzi... 30 sekund z dowolnym kursem javy pozwoliłoby ci rozwiazać twój "problem". Tak samo znajomość angielskiego na poziomie A1 i umiejętność czytania komunikatów błędów. Ale po co myśleć, skoro inni zrobią to za ciebie...

0

Nie, nie ukradłem tego kodu Shalom.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.