Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedWriter;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.util.ArrayList;
- public class IntNet
- {
- //ArrayList of Arraylists of Neurons
- ArrayList<ArrayList<IntNeuron>> net = new ArrayList();
- public IntNet(int InputLayer, int HiddenLayers, int NeuronsPerHiddenLayer, int OutputLayer)
- {
- //add all layers
- for(int i=0 ; i<HiddenLayers+2 ; i++)
- {
- net.add(new ArrayList<IntNeuron>());
- }
- //fill outputlayer with Neurons
- for(int i=0 ; i<OutputLayer ; i++)
- {
- net.get(net.size()-1).add(new IntNeuron());
- }
- //fill hiddenlayers with Neurons
- for(int i=net.size()-2 ; i>0 ; i--)
- {
- for(int x=0 ; x<NeuronsPerHiddenLayer ; x++)
- {
- net.get(i).add(new IntNeuron());
- }
- }
- //fill inputlayer with Neurons
- for(int i=0 ; i<InputLayer ; i++)
- {
- net.get(0).add(new IntNeuron());
- }
- //connect Neurons
- for(int layer=0 ; layer<net.size()-1 ; layer++)
- {
- for(int from=0 ; from<net.get(layer).size() ; from++)
- {
- for(int to=0 ; to<net.get(layer+1).size() ; to++)
- {
- //making the connection
- net.get(layer).get(from).connections.add(new IntConnection(net.get(layer+1).get(to), Math.random()));
- }
- }
- }
- }
- public double sigmoid(double x)
- {
- double e = 2.7182818284;
- return (1/(1+((double)Math.pow(e, -x))));
- }
- public double[] run(double[] input)
- {
- double output[] = new double[net.get(net.size()-1).size()];
- //put input in
- for(int i=0 ; i<input.length ; i++)
- {
- net.get(0).get(i).stimulation = sigmoid(input[i]);
- }
- for(int layer=0 ; layer<net.size()-1 ; layer++)
- {
- for(int from=0 ; from<net.get(layer).size() ; from++)
- {
- for(int connection=0 ; connection<net.get(layer).get(from).connections.size() ; connection++)
- {
- /*neuron that gets stimulated*/net.get(layer).get(from).connections.get(connection).to.stimulation = /*aktuel stimulation of neuron that gets stimulated*/net.get(layer).get(from).connections.get(connection).to.stimulation + (/*weight*/net.get(layer).get(from).connections.get(connection).weight * /*stimulatio of the neuron that fires*/sigmoid(net.get(layer).get(from).stimulation));
- }
- }
- }
- //take output
- for(int i=0 ; i<net.get(net.size()-1).size() ; i++)
- {
- output[i] = sigmoid(net.get(net.size()-1).get(i).stimulation);
- }
- return output;
- }
- public double[] runRandomArray(int size)
- {
- return run(createArray(size));
- }
- public double[] createArray(int size)
- {
- double array[] =new double[size];
- for(int i=0 ; i<size ; i++)
- {
- array[i] = Math.random();
- }
- return array;
- }
- public boolean saveNet(){
- try {
- FileWriter fWriter = new FileWriter("C:\\Users\\Janko\\Desktop\\Programme\\AI\\test.txt");
- BufferedWriter bWriter = new BufferedWriter(fWriter);
- //ammount of layers
- bWriter.write(String.valueOf(net.size()));
- bWriter.newLine();
- //ammount of neurons in each layer
- for(int i=0 ; i<net.size() ; i++)
- {
- bWriter.write(String.valueOf(net.get(i).size()));
- bWriter.newLine();
- }
- for(int layer=0 ; layer<net.size()-1 ; layer++)
- {
- for(int from=0 ; from<net.get(layer).size() ; from++)
- {
- for(int connection=0 ; connection<net.get(layer).get(from).connections.size() ; connection++)
- {
- bWriter.write(String.valueOf(net.get(layer).get(from).connections.get(connection).weight));
- bWriter.newLine();
- }
- }
- }
- bWriter.close();
- fWriter.close();
- return true;
- } catch (IOException e) {
- return false;
- }
- }
- /*
- public void loadNet(String path) throws NumberFormatException, IOException{
- AdjazenzListe.removeAll(AdjazenzListe);
- FileReader froi = new FileReader(path);
- BufferedReader broi = new BufferedReader(froi);
- int amountofnodes=Integer.parseInt(broi.readLine());
- for(int x=0;x!=amountofnodes;x++){
- String[] ttp = broi.readLine().split(":"
- String[] edgesofnode = ttp[1].split(";"
- AdjazenzListe.add(new Node(String.valueOf(ttp[0])));
- for(int y=0; y!=edgesofnode.length;y++){
- String[] currentedgedata=edgesofnode[y].split("\\|"
- int currentadjacend = Integer.parseInt(currentedgedata[0].substring(1));
- int currentedgeweight = Integer.parseInt(currentedgedata[1].substring(0,currentedgedata[1].length()-1));
- AdjazenzListe.get(x).addEdge(currentadjacend, currentedgeweight);
- }
- }
- broi.close();
- froi.close();
- }
- */
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement