Advertisement
Guest User

Untitled

a guest
Nov 18th, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.29 KB | None | 0 0
  1.  
  2. import java.io.BufferedWriter;
  3. import java.io.FileWriter;
  4. import java.io.IOException;
  5. import java.util.ArrayList;
  6. public class IntNet
  7. {
  8. //ArrayList of Arraylists of Neurons
  9. ArrayList<ArrayList<IntNeuron>> net = new ArrayList();
  10.  
  11. public IntNet(int InputLayer, int HiddenLayers, int NeuronsPerHiddenLayer, int OutputLayer)
  12. {
  13. //add all layers
  14. for(int i=0 ; i<HiddenLayers+2 ; i++)
  15. {
  16. net.add(new ArrayList<IntNeuron>());
  17. }
  18. //fill outputlayer with Neurons
  19. for(int i=0 ; i<OutputLayer ; i++)
  20. {
  21. net.get(net.size()-1).add(new IntNeuron());
  22. }
  23. //fill hiddenlayers with Neurons
  24. for(int i=net.size()-2 ; i>0 ; i--)
  25. {
  26. for(int x=0 ; x<NeuronsPerHiddenLayer ; x++)
  27. {
  28. net.get(i).add(new IntNeuron());
  29. }
  30. }
  31. //fill inputlayer with Neurons
  32. for(int i=0 ; i<InputLayer ; i++)
  33. {
  34. net.get(0).add(new IntNeuron());
  35. }
  36. //connect Neurons
  37. for(int layer=0 ; layer<net.size()-1 ; layer++)
  38. {
  39. for(int from=0 ; from<net.get(layer).size() ; from++)
  40. {
  41. for(int to=0 ; to<net.get(layer+1).size() ; to++)
  42. {
  43. //making the connection
  44. net.get(layer).get(from).connections.add(new IntConnection(net.get(layer+1).get(to), Math.random()));
  45. }
  46. }
  47. }
  48. }
  49.  
  50. public double sigmoid(double x)
  51. {
  52. double e = 2.7182818284;
  53. return (1/(1+((double)Math.pow(e, -x))));
  54. }
  55.  
  56. public double[] run(double[] input)
  57. {
  58. double output[] = new double[net.get(net.size()-1).size()];
  59. //put input in
  60. for(int i=0 ; i<input.length ; i++)
  61. {
  62. net.get(0).get(i).stimulation = sigmoid(input[i]);
  63. }
  64.  
  65. for(int layer=0 ; layer<net.size()-1 ; layer++)
  66. {
  67. for(int from=0 ; from<net.get(layer).size() ; from++)
  68. {
  69. for(int connection=0 ; connection<net.get(layer).get(from).connections.size() ; connection++)
  70. {
  71.  
  72. /*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));
  73. }
  74. }
  75. }
  76. //take output
  77. for(int i=0 ; i<net.get(net.size()-1).size() ; i++)
  78. {
  79. output[i] = sigmoid(net.get(net.size()-1).get(i).stimulation);
  80.  
  81. }
  82. return output;
  83. }
  84.  
  85. public double[] runRandomArray(int size)
  86. {
  87. return run(createArray(size));
  88. }
  89.  
  90. public double[] createArray(int size)
  91. {
  92. double array[] =new double[size];
  93. for(int i=0 ; i<size ; i++)
  94. {
  95. array[i] = Math.random();
  96. }
  97. return array;
  98. }
  99.  
  100. public boolean saveNet(){
  101. try {
  102. FileWriter fWriter = new FileWriter("C:\\Users\\Janko\\Desktop\\Programme\\AI\\test.txt");
  103. BufferedWriter bWriter = new BufferedWriter(fWriter);
  104. //ammount of layers
  105. bWriter.write(String.valueOf(net.size()));
  106. bWriter.newLine();
  107. //ammount of neurons in each layer
  108. for(int i=0 ; i<net.size() ; i++)
  109. {
  110. bWriter.write(String.valueOf(net.get(i).size()));
  111. bWriter.newLine();
  112. }
  113. for(int layer=0 ; layer<net.size()-1 ; layer++)
  114. {
  115. for(int from=0 ; from<net.get(layer).size() ; from++)
  116. {
  117. for(int connection=0 ; connection<net.get(layer).get(from).connections.size() ; connection++)
  118. {
  119. bWriter.write(String.valueOf(net.get(layer).get(from).connections.get(connection).weight));
  120. bWriter.newLine();
  121. }
  122. }
  123. }
  124. bWriter.close();
  125. fWriter.close();
  126. return true;
  127. } catch (IOException e) {
  128. return false;
  129. }
  130. }
  131. /*
  132. public void loadNet(String path) throws NumberFormatException, IOException{
  133. AdjazenzListe.removeAll(AdjazenzListe);
  134. FileReader froi = new FileReader(path);
  135. BufferedReader broi = new BufferedReader(froi);
  136. int amountofnodes=Integer.parseInt(broi.readLine());
  137. for(int x=0;x!=amountofnodes;x++){
  138. String[] ttp = broi.readLine().split(":&quot;
  139. String[] edgesofnode = ttp[1].split(";&quot;
  140. AdjazenzListe.add(new Node(String.valueOf(ttp[0])));
  141. for(int y=0; y!=edgesofnode.length;y++){
  142. String[] currentedgedata=edgesofnode[y].split("\\|&quot;
  143. int currentadjacend = Integer.parseInt(currentedgedata[0].substring(1));
  144. int currentedgeweight = Integer.parseInt(currentedgedata[1].substring(0,currentedgedata[1].length()-1));
  145. AdjazenzListe.get(x).addEdge(currentadjacend, currentedgeweight);
  146. }
  147. }
  148. broi.close();
  149. froi.close();
  150. }
  151. */
  152. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement