Differences between revisions 9 and 10
Revision 9 as of 2018-09-19 22:15:11
Size: 5860
Editor: JunHu
Comment:
Revision 10 as of 2018-09-20 07:14:27
Size: 6402
Editor: JunHu
Comment:
Deletions are marked like this. Additions are marked like this.
Line 8: Line 8:
  * Download neurophstudio installer for your platform.    * Download neurophstudio installer for your platform.
Line 18: Line 18:
Line 20: Line 19:

Try the Perceptron example first with Neuroph Studio. 
Try the Perceptron example first with Neuroph Studio.
Line 25: Line 23:
If you have difficulties with the terminology, read https://en.wikibooks.org/wiki/Artificial_Neural_Networks/Neural_Network_Basics.  If you have difficulties with the terminology, read https://en.wikibooks.org/wiki/Artificial_Neural_Networks/Neural_Network_Basics.

About Learning rate and momentum: https://www.quora.com/What-is-the-difference-between-momentum-and-learning-rate
Line 28: Line 28:
{{{
#!java
{{{#!java
Line 42: Line 41:
 public static void main(String args[]) {         public static void main(String args[]) {
Line 44: Line 43:
  // create training set (logical AND function)
  DataSet trainingSet = new DataSet(2, 1);
  trainingSet.addRow(new DataSetRow(new double[] { 0, 0 }, new double[] { 0 }));
  trainingSet.addRow(new DataSetRow(new double[] { 0, 1 }, new double[] { 0 }));
  trainingSet.addRow(new DataSetRow(new double[] { 1, 0 }, new double[] { 0 }));
  trainingSet.addRow(new DataSetRow(new double[] { 1, 1 }, new double[] { 1 }));
                // create training set (logical AND function)
                DataSet trainingSet = new DataSet(2, 1);
                trainingSet.addRow(new DataSetRow(new double[] { 0, 0 }, new double[] { 0 }));
                trainingSet.addRow(new DataSetRow(new double[] { 0, 1 }, new double[] { 0 }));
                trainingSet.addRow(new DataSetRow(new double[] { 1, 0 }, new double[] { 0 }));
                trainingSet.addRow(new DataSetRow(new double[] { 1, 1 }, new double[] { 1 }));
Line 51: Line 50:
  // create perceptron neural network
  NeuralNetwork myPerceptron = new Perceptron(2, 1);
                // create perceptron neural network
                NeuralNetwork myPerceptron = new Perceptron(2, 1);
Line 54: Line 53:
  // learn the training set
  myPerceptron.learn(trainingSet);
                // learn the training set
                myPerceptron.learn(trainingSet);
Line 57: Line 56:
  // test perceptron
  System.out.println("Testing trained perceptron");
  testNeuralNetwork(myPerceptron, trainingSet);
                // test perceptron
                System.out.println("Testing trained perceptron");
                testNeuralNetwork(myPerceptron, trainingSet);
Line 61: Line 60:
  // save trained perceptron
  myPerceptron.save("mySamplePerceptron.nnet");
                // save trained perceptron
                myPerceptron.save("mySamplePerceptron.nnet");
Line 64: Line 63:
  // load saved neural network
  NeuralNetwork loadedPerceptron = NeuralNetwork.load("mySamplePerceptron.nnet");
                // load saved neural network
                NeuralNetwork loadedPerceptron = NeuralNetwork.load("mySamplePerceptron.nnet");
Line 67: Line 66:
  // test loaded neural network
  System.out.println("Testing loaded perceptron");
  testNeuralNetwork(loadedPerceptron, trainingSet);
 }
                // test loaded neural network
                System.out.println("Testing loaded perceptron");
                testNeuralNetwork(loadedPerceptron, trainingSet);
        }
Line 72: Line 71:
 public static void testNeuralNetwork(NeuralNetwork nnet, DataSet tset) {         public static void testNeuralNetwork(NeuralNetwork nnet, DataSet tset) {
Line 74: Line 73:
  for (DataSetRow dataRow : tset.getRows()) {                 for (DataSetRow dataRow : tset.getRows()) {
Line 76: Line 75:
   nnet.setInput(dataRow.getInput());
   nnet.calculate();
   double[] networkOutput = nnet.getOutput();
   System.out.print("Input: " + Arrays.toString(dataRow.getInput()));
   System.out.println(" Output: " + Arrays.toString(networkOutput));
  }
 }
                        nnet.setInput(dataRow.getInput());
                        nnet.calculate();
                        double[] networkOutput = nnet.getOutput();
                        System.out.print("Input: " + Arrays.toString(dataRow.getInput()));
                        System.out.println(" Output: " + Arrays.toString(networkOutput));
                }
        }
Line 84: Line 83:
}}}
=== Processing code ===
 . /!\ Notice the use of the sketchPath() function for saving the data file next to your Processing sketch.
Line 85: Line 87:
}}}

=== Processing code ===
 /!\ Notice the use of the sketchPath() function for saving the data file next to your Processing sketch.
{{{
#!java
{{{#!java
Line 116: Line 113:
 * This sample shows how to create, train, save and load simple Perceptron neural network   * This sample shows how to create, train, save and load simple Perceptron neural network
Line 136: Line 133:
  
Line 161: Line 158:

Preparation

  • Follow the instructions from the assignment Creative Programming to install Processing and if needed, Arduino software environment.

  • Install Neuroph, a lightweight Java neural network framework. You might have to install the latest JDK first.

    • Download neurophstudio installer for your platform.
    • In "Processing Sketchbook location"\libraries, create a sub-directory "neuroph".
    • In "Processing Sketchbook location"\libraries\neuroph, create a sub-directory "library".
    • From <neurophstudio directory>\neurophstudio\modules\ext copy neuroph-core-2.8.jar to <Processing Sketchbook location>\libraries\neuroph\library. Rename neuroph-core-2.8.jar to neuroph.jar.

References

Examples

Try the Perceptron example first with Neuroph Studio.

The Perceptron example: Help | Help Contents | Neuroph Studio | Creating and Training NNets | Perceptron

If you have difficulties with the terminology, read https://en.wikibooks.org/wiki/Artificial_Neural_Networks/Neural_Network_Basics.

About Learning rate and momentum: https://www.quora.com/What-is-the-difference-between-momentum-and-learning-rate

Java code

   1 import java.util.Arrays;
   2 import org.neuroph.core.NeuralNetwork;
   3 import org.neuroph.nnet.Perceptron;
   4 import org.neuroph.core.data.DataSet;
   5 import org.neuroph.core.data.DataSetRow;
   6 
   7 /**
   8  * This sample shows how to create, train, save and load simple Perceptron
   9  * neural network
  10  */
  11 public class PerceptronSample {
  12 
  13         public static void main(String args[]) {
  14 
  15                 // create training set (logical AND function)
  16                 DataSet trainingSet = new DataSet(2, 1);
  17                 trainingSet.addRow(new DataSetRow(new double[] { 0, 0 }, new double[] { 0 }));
  18                 trainingSet.addRow(new DataSetRow(new double[] { 0, 1 }, new double[] { 0 }));
  19                 trainingSet.addRow(new DataSetRow(new double[] { 1, 0 }, new double[] { 0 }));
  20                 trainingSet.addRow(new DataSetRow(new double[] { 1, 1 }, new double[] { 1 }));
  21 
  22                 // create perceptron neural network
  23                 NeuralNetwork myPerceptron = new Perceptron(2, 1);
  24 
  25                 // learn the training set
  26                 myPerceptron.learn(trainingSet);
  27 
  28                 // test perceptron
  29                 System.out.println("Testing trained perceptron");
  30                 testNeuralNetwork(myPerceptron, trainingSet);
  31 
  32                 // save trained perceptron
  33                 myPerceptron.save("mySamplePerceptron.nnet");
  34 
  35                 // load saved neural network
  36                 NeuralNetwork loadedPerceptron = NeuralNetwork.load("mySamplePerceptron.nnet");
  37 
  38                 // test loaded neural network
  39                 System.out.println("Testing loaded perceptron");
  40                 testNeuralNetwork(loadedPerceptron, trainingSet);
  41         }
  42 
  43         public static void testNeuralNetwork(NeuralNetwork nnet, DataSet tset) {
  44 
  45                 for (DataSetRow dataRow : tset.getRows()) {
  46 
  47                         nnet.setInput(dataRow.getInput());
  48                         nnet.calculate();
  49                         double[] networkOutput = nnet.getOutput();
  50                         System.out.print("Input: " + Arrays.toString(dataRow.getInput()));
  51                         System.out.println(" Output: " + Arrays.toString(networkOutput));
  52                 }
  53         }
  54 }

Processing code

  • /!\ Notice the use of the sketchPath() function for saving the data file next to your Processing sketch.

   1 import org.neuroph.core.*;
   2 import org.neuroph.core.data.*;
   3 import org.neuroph.core.data.norm.*;
   4 import org.neuroph.core.data.sample.*;
   5 import org.neuroph.core.events.*;
   6 import org.neuroph.core.exceptions.*;
   7 import org.neuroph.core.input.*;
   8 import org.neuroph.core.learning.error.*;
   9 import org.neuroph.core.learning.*;
  10 import org.neuroph.core.learning.stop.*;
  11 import org.neuroph.core.transfer.*;
  12 import org.neuroph.nnet.*;
  13 import org.neuroph.nnet.comp.*;
  14 import org.neuroph.nnet.comp.layer.*;
  15 import org.neuroph.nnet.comp.neuron.*;
  16 import org.neuroph.nnet.learning.*;
  17 import org.neuroph.util.benchmark.*;
  18 import org.neuroph.util.*;
  19 import org.neuroph.util.io.*;
  20 import org.neuroph.util.plugins.*;
  21 import org.neuroph.util.random.*;
  22 
  23 import java.util.*;
  24 
  25 /**
  26  * This sample shows how to create, train, save and load simple Perceptron neural network
  27  */
  28 void setup() {
  29 
  30   // create training set (logical AND function)
  31   DataSet trainingSet = new DataSet(2, 1);
  32   trainingSet.addRow(new DataSetRow(new double[] { 0, 0 }, new double[] { 0 }));
  33   trainingSet.addRow(new DataSetRow(new double[] { 0, 1 }, new double[] { 0 }));
  34   trainingSet.addRow(new DataSetRow(new double[] { 1, 0 }, new double[] { 0 }));
  35   trainingSet.addRow(new DataSetRow(new double[] { 1, 1 }, new double[] { 1 }));
  36 
  37   // create perceptron neural network
  38   NeuralNetwork myPerceptron = new Perceptron(2, 1);
  39 
  40   // learn the training set
  41   myPerceptron.learn(trainingSet);
  42 
  43   // test perceptron
  44   println("Testing trained perceptron");
  45   testNeuralNetwork(myPerceptron, trainingSet);
  46 
  47   println(dataPath(""));
  48 
  49   // save trained perceptron
  50   myPerceptron.save(sketchPath("mySamplePerceptron.nnet"));
  51 
  52   // load saved neural network
  53   NeuralNetwork loadedPerceptron = NeuralNetwork.load(sketchPath("mySamplePerceptron.nnet"));
  54 
  55   // test loaded neural network
  56   println("Testing loaded perceptron");
  57   testNeuralNetwork(loadedPerceptron, trainingSet);
  58 }
  59 
  60 void testNeuralNetwork(NeuralNetwork nnet, DataSet tset) {
  61 
  62   for (DataSetRow dataRow : tset.getRows()) {
  63 
  64     nnet.setInput(dataRow.getInput());
  65     nnet.calculate();
  66     double[ ] networkOutput = nnet.getOutput();
  67     print("Input: " + Arrays.toString(dataRow.getInput()) );
  68     println(" Output: " + Arrays.toString(networkOutput) );
  69   }
  70 }

diii: NeurophNeuralNetwork (last edited 2020-09-15 13:33:21 by JunHu)