You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by to...@apache.org on 2012/07/30 00:36:11 UTC

svn commit: r1366965 - in /labs/yay/trunk/core/src: main/java/org/apache/yay/ test/java/org/apache/yay/

Author: tommaso
Date: Sun Jul 29 22:36:10 2012
New Revision: 1366965

URL: http://svn.apache.org/viewvc?rev=1366965&view=rev
Log:
fixed warning related to serial and unused imports plus minor javadoc fixes

Modified:
    labs/yay/trunk/core/src/main/java/org/apache/yay/BackPropagationLearningStrategy.java
    labs/yay/trunk/core/src/main/java/org/apache/yay/BasicElaborationUnit.java
    labs/yay/trunk/core/src/main/java/org/apache/yay/CreationException.java
    labs/yay/trunk/core/src/main/java/org/apache/yay/InvalidWeightMatrixException.java
    labs/yay/trunk/core/src/main/java/org/apache/yay/LearningException.java
    labs/yay/trunk/core/src/main/java/org/apache/yay/LearningStrategy.java
    labs/yay/trunk/core/src/main/java/org/apache/yay/NeuralNetworkFactory.java
    labs/yay/trunk/core/src/main/java/org/apache/yay/PredictionException.java
    labs/yay/trunk/core/src/main/java/org/apache/yay/VoidLearningStrategy.java
    labs/yay/trunk/core/src/main/java/org/apache/yay/WeightLearningException.java
    labs/yay/trunk/core/src/main/java/org/apache/yay/WeightsMatrix.java
    labs/yay/trunk/core/src/test/java/org/apache/yay/NeuralNetworkFactoryTest.java
    labs/yay/trunk/core/src/test/java/org/apache/yay/VoidLearningStrategyTest.java

Modified: labs/yay/trunk/core/src/main/java/org/apache/yay/BackPropagationLearningStrategy.java
URL: http://svn.apache.org/viewvc/labs/yay/trunk/core/src/main/java/org/apache/yay/BackPropagationLearningStrategy.java?rev=1366965&r1=1366964&r2=1366965&view=diff
==============================================================================
--- labs/yay/trunk/core/src/main/java/org/apache/yay/BackPropagationLearningStrategy.java (original)
+++ labs/yay/trunk/core/src/main/java/org/apache/yay/BackPropagationLearningStrategy.java Sun Jul 29 22:36:10 2012
@@ -19,32 +19,35 @@
 package org.apache.yay;
 
 import java.util.Collection;
-import java.util.Set;
 
 /**
  * Backpropagation learning algorithm for neural networks implementation (see
  * <code>http://en.wikipedia.org/wiki/Backpropagation</code>).
  */
-public class BackPropagationLearningStrategy implements LearningStrategy<Long, Long> {
+public class BackPropagationLearningStrategy implements LearningStrategy<Double, Double> {
 
-  private NeuralNetwork<Long, Long> neuralNetwork;
+  private PredictionStrategy<Double,Double> predictionStrategy;
 
-  public BackPropagationLearningStrategy(NeuralNetwork neuralNetwork) {
-    this.neuralNetwork = neuralNetwork;
+  public BackPropagationLearningStrategy(PredictionStrategy<Double,Double> predictionStrategy) {
+    this.predictionStrategy = predictionStrategy;
   }
 
   @Override
-  public WeightsMatrix[] learnWeights(WeightsMatrix[] weightsMatrixSet, Collection<TrainingExample<Long, Long>> trainingExamples) throws WeightLearningException {
-    for (TrainingExample<Long, Long> trainingExample : trainingExamples) {
-      try {
-        Long output = neuralNetwork.predict(trainingExample);
-        Long learnedOutput = trainingExample.getOutput();
-        Long error = learnedOutput - output;
+  public WeightsMatrix[] learnWeights(WeightsMatrix[] weightsMatrixSet, Collection<TrainingExample<Double, Double>> trainingExamples) throws WeightLearningException {
+    for (TrainingExample<Double, Double> trainingExample : trainingExamples) {
+//      try {
+//        RealMatrix output = predictionStrategy.debugOutput(trainingExample, weightsMatrixSet);
+        Double learnedOutput = trainingExample.getOutput();
+//        Long error = learnedOutput - output;
         // TODO : back prop the error and update the weights accordingly
-
-      } catch (PredictionException e) {
-        throw new WeightLearningException("error during phase 1 of backpropagation algorithm", e);
-      }
+        for (int i = weightsMatrixSet.length; i > 0; i--) {
+          WeightsMatrix currentMatrix = weightsMatrixSet[i];
+//          currentMatrix.transpose().multiply()
+        }
+
+//      } catch (PredictionException e) {
+//        throw new WeightLearningException("error during phase 1 of backpropagation algorithm", e);
+//      }
     }
     return null;
   }

Modified: labs/yay/trunk/core/src/main/java/org/apache/yay/BasicElaborationUnit.java
URL: http://svn.apache.org/viewvc/labs/yay/trunk/core/src/main/java/org/apache/yay/BasicElaborationUnit.java?rev=1366965&r1=1366964&r2=1366965&view=diff
==============================================================================
--- labs/yay/trunk/core/src/main/java/org/apache/yay/BasicElaborationUnit.java (original)
+++ labs/yay/trunk/core/src/main/java/org/apache/yay/BasicElaborationUnit.java Sun Jul 29 22:36:10 2012
@@ -25,7 +25,7 @@ public class BasicElaborationUnit<T> {
 
   private ActivationFunction<T> activationFunction;
 
-  public BasicElaborationUnit(ActivationFunction activationFunction) {
+  public BasicElaborationUnit(ActivationFunction<T> activationFunction) {
     this.activationFunction = activationFunction;
   }
 

Modified: labs/yay/trunk/core/src/main/java/org/apache/yay/CreationException.java
URL: http://svn.apache.org/viewvc/labs/yay/trunk/core/src/main/java/org/apache/yay/CreationException.java?rev=1366965&r1=1366964&r2=1366965&view=diff
==============================================================================
--- labs/yay/trunk/core/src/main/java/org/apache/yay/CreationException.java (original)
+++ labs/yay/trunk/core/src/main/java/org/apache/yay/CreationException.java Sun Jul 29 22:36:10 2012
@@ -19,7 +19,9 @@
 package org.apache.yay;
 
 /**
+ * Exception thrown when an error occurs while creating a neural network
  */
+@SuppressWarnings("serial")
 public class CreationException extends Exception {
   public CreationException(Exception e) {
     super(e);

Modified: labs/yay/trunk/core/src/main/java/org/apache/yay/InvalidWeightMatrixException.java
URL: http://svn.apache.org/viewvc/labs/yay/trunk/core/src/main/java/org/apache/yay/InvalidWeightMatrixException.java?rev=1366965&r1=1366964&r2=1366965&view=diff
==============================================================================
--- labs/yay/trunk/core/src/main/java/org/apache/yay/InvalidWeightMatrixException.java (original)
+++ labs/yay/trunk/core/src/main/java/org/apache/yay/InvalidWeightMatrixException.java Sun Jul 29 22:36:10 2012
@@ -21,5 +21,6 @@ package org.apache.yay;
 /**
  * {@link Exception} thrown when a {@link WeightsMatrix} is verified to be invalid
  */
+@SuppressWarnings("serial")
 public class InvalidWeightMatrixException extends Exception {
 }

Modified: labs/yay/trunk/core/src/main/java/org/apache/yay/LearningException.java
URL: http://svn.apache.org/viewvc/labs/yay/trunk/core/src/main/java/org/apache/yay/LearningException.java?rev=1366965&r1=1366964&r2=1366965&view=diff
==============================================================================
--- labs/yay/trunk/core/src/main/java/org/apache/yay/LearningException.java (original)
+++ labs/yay/trunk/core/src/main/java/org/apache/yay/LearningException.java Sun Jul 29 22:36:10 2012
@@ -19,7 +19,10 @@
 package org.apache.yay;
 
 /**
+ * Exception thrown when an error occurs while the neural network is learning its
+ * parameters
  */
+@SuppressWarnings("serial")
 public class LearningException extends Exception {
 
   public LearningException(Throwable throwable) {

Modified: labs/yay/trunk/core/src/main/java/org/apache/yay/LearningStrategy.java
URL: http://svn.apache.org/viewvc/labs/yay/trunk/core/src/main/java/org/apache/yay/LearningStrategy.java?rev=1366965&r1=1366964&r2=1366965&view=diff
==============================================================================
--- labs/yay/trunk/core/src/main/java/org/apache/yay/LearningStrategy.java (original)
+++ labs/yay/trunk/core/src/main/java/org/apache/yay/LearningStrategy.java Sun Jul 29 22:36:10 2012
@@ -19,7 +19,6 @@
 package org.apache.yay;
 
 import java.util.Collection;
-import java.util.Set;
 
 /**
  * A {@link LearningStrategy}<F,O> defines a learning algorithm to learn the weights of the neural network's layer

Modified: labs/yay/trunk/core/src/main/java/org/apache/yay/NeuralNetworkFactory.java
URL: http://svn.apache.org/viewvc/labs/yay/trunk/core/src/main/java/org/apache/yay/NeuralNetworkFactory.java?rev=1366965&r1=1366964&r2=1366965&view=diff
==============================================================================
--- labs/yay/trunk/core/src/main/java/org/apache/yay/NeuralNetworkFactory.java (original)
+++ labs/yay/trunk/core/src/main/java/org/apache/yay/NeuralNetworkFactory.java Sun Jul 29 22:36:10 2012
@@ -19,7 +19,6 @@
 package org.apache.yay;
 
 import java.util.Collection;
-import java.util.Set;
 import java.util.Vector;
 
 /**
@@ -39,7 +38,7 @@ public class NeuralNetworkFactory {
    * @throws CreationException
    */
   public static NeuralNetwork<Double, Double> create(final Collection<TrainingExample<Double, Double>> trainingExamples,
-                                                     final WeightsMatrix[] weightsMatrixSet, final LearningStrategy learningStrategy,
+                                                     final WeightsMatrix[] weightsMatrixSet, final LearningStrategy<Double, Double> learningStrategy,
                                                      final PredictionStrategy<Double, Double> predictionStrategy) throws CreationException {
     NeuralNetwork<Double, Double> neuralNetwork = new NeuralNetwork<Double, Double>() {
 

Modified: labs/yay/trunk/core/src/main/java/org/apache/yay/PredictionException.java
URL: http://svn.apache.org/viewvc/labs/yay/trunk/core/src/main/java/org/apache/yay/PredictionException.java?rev=1366965&r1=1366964&r2=1366965&view=diff
==============================================================================
--- labs/yay/trunk/core/src/main/java/org/apache/yay/PredictionException.java (original)
+++ labs/yay/trunk/core/src/main/java/org/apache/yay/PredictionException.java Sun Jul 29 22:36:10 2012
@@ -19,7 +19,10 @@
 package org.apache.yay;
 
 /**
+ * Exception thrown when an error occurs when a neural network is trying to 
+ * predict an output for a given input
  */
+@SuppressWarnings("serial")
 public class PredictionException extends Exception {
 
   public PredictionException(Throwable throwable) {

Modified: labs/yay/trunk/core/src/main/java/org/apache/yay/VoidLearningStrategy.java
URL: http://svn.apache.org/viewvc/labs/yay/trunk/core/src/main/java/org/apache/yay/VoidLearningStrategy.java?rev=1366965&r1=1366964&r2=1366965&view=diff
==============================================================================
--- labs/yay/trunk/core/src/main/java/org/apache/yay/VoidLearningStrategy.java (original)
+++ labs/yay/trunk/core/src/main/java/org/apache/yay/VoidLearningStrategy.java Sun Jul 29 22:36:10 2012
@@ -19,7 +19,6 @@
 package org.apache.yay;
 
 import java.util.Collection;
-import java.util.Set;
 
 /**
  * A NOP {@link LearningStrategy}

Modified: labs/yay/trunk/core/src/main/java/org/apache/yay/WeightLearningException.java
URL: http://svn.apache.org/viewvc/labs/yay/trunk/core/src/main/java/org/apache/yay/WeightLearningException.java?rev=1366965&r1=1366964&r2=1366965&view=diff
==============================================================================
--- labs/yay/trunk/core/src/main/java/org/apache/yay/WeightLearningException.java (original)
+++ labs/yay/trunk/core/src/main/java/org/apache/yay/WeightLearningException.java Sun Jul 29 22:36:10 2012
@@ -21,6 +21,7 @@ package org.apache.yay;
 /**
  * Exception raised when something goes wrong during the learning algorithm execution
  */
+@SuppressWarnings("serial")
 public class WeightLearningException extends Exception {
   public WeightLearningException(Throwable throwable) {
     super(throwable);

Modified: labs/yay/trunk/core/src/main/java/org/apache/yay/WeightsMatrix.java
URL: http://svn.apache.org/viewvc/labs/yay/trunk/core/src/main/java/org/apache/yay/WeightsMatrix.java?rev=1366965&r1=1366964&r2=1366965&view=diff
==============================================================================
--- labs/yay/trunk/core/src/main/java/org/apache/yay/WeightsMatrix.java (original)
+++ labs/yay/trunk/core/src/main/java/org/apache/yay/WeightsMatrix.java Sun Jul 29 22:36:10 2012
@@ -24,6 +24,7 @@ import org.apache.commons.math.linear.Ar
  * A matrix representing the weights applied to links between elaboration units of different adjacent {@link Layer}s in
  * a {@link NeuralNetwork}
  */
+@SuppressWarnings("serial")
 public class WeightsMatrix extends Array2DRowRealMatrix {
 
   public WeightsMatrix(double[][] weights) {

Modified: labs/yay/trunk/core/src/test/java/org/apache/yay/NeuralNetworkFactoryTest.java
URL: http://svn.apache.org/viewvc/labs/yay/trunk/core/src/test/java/org/apache/yay/NeuralNetworkFactoryTest.java?rev=1366965&r1=1366964&r2=1366965&view=diff
==============================================================================
--- labs/yay/trunk/core/src/test/java/org/apache/yay/NeuralNetworkFactoryTest.java (original)
+++ labs/yay/trunk/core/src/test/java/org/apache/yay/NeuralNetworkFactoryTest.java Sun Jul 29 22:36:10 2012
@@ -35,7 +35,7 @@ public class NeuralNetworkFactoryTest {
     double[][] weights = {{-30d, 20d, 20d}};
     WeightsMatrix singleAndLayerWeights = new WeightsMatrix(weights);
     WeightsMatrix[] andWeightsMatrixSet = new WeightsMatrix[]{singleAndLayerWeights};
-    NeuralNetwork<Double,Double> andNN = NeuralNetworkFactory.create(new LinkedList<TrainingExample<Double, Double>>(), andWeightsMatrixSet, new VoidLearningStrategy(), new FeedForwardStrategy(new SigmoidFunction()));
+    NeuralNetwork<Double,Double> andNN = NeuralNetworkFactory.create(new LinkedList<TrainingExample<Double, Double>>(), andWeightsMatrixSet, new VoidLearningStrategy<Double, Double>(), new FeedForwardStrategy(new SigmoidFunction()));
     assertEquals(0l, Math.round(andNN.predict(createSample(1d, 0d))));
     assertEquals(0l, Math.round(andNN.predict(createSample(0d, 1d))));
     assertEquals(0l, Math.round(andNN.predict(createSample(0d, 0d))));
@@ -47,7 +47,7 @@ public class NeuralNetworkFactoryTest {
     double[][] weights = {{-10d, 20d, 20d}};
     WeightsMatrix singleOrLayerWeights = new WeightsMatrix(weights);
     WeightsMatrix[] orWeightsMatrixSet = new WeightsMatrix[]{singleOrLayerWeights};
-    NeuralNetwork<Double,Double> orNN = NeuralNetworkFactory.create(new LinkedList<TrainingExample<Double, Double>>(), orWeightsMatrixSet, new VoidLearningStrategy(), new FeedForwardStrategy(new SigmoidFunction()));
+    NeuralNetwork<Double,Double> orNN = NeuralNetworkFactory.create(new LinkedList<TrainingExample<Double, Double>>(), orWeightsMatrixSet, new VoidLearningStrategy<Double, Double>(), new FeedForwardStrategy(new SigmoidFunction()));
     assertEquals(1l, Math.round(orNN.predict(createSample(1d, 0d))));
     assertEquals(1l, Math.round(orNN.predict(createSample(0d, 1d))));
     assertEquals(0l, Math.round(orNN.predict(createSample(0d, 0d))));
@@ -59,7 +59,7 @@ public class NeuralNetworkFactoryTest {
     double[][] weights = {{10d, -20d}};
     WeightsMatrix singleNotLayerWeights = new WeightsMatrix(weights);
     WeightsMatrix[] notWeightsMatrixSet = new WeightsMatrix[]{singleNotLayerWeights};
-    NeuralNetwork<Double,Double> orNN = NeuralNetworkFactory.create(new LinkedList<TrainingExample<Double, Double>>(), notWeightsMatrixSet, new VoidLearningStrategy(), new FeedForwardStrategy(new SigmoidFunction()));
+    NeuralNetwork<Double,Double> orNN = NeuralNetworkFactory.create(new LinkedList<TrainingExample<Double, Double>>(), notWeightsMatrixSet, new VoidLearningStrategy<Double, Double>(), new FeedForwardStrategy(new SigmoidFunction()));
     assertEquals(1l, Math.round(orNN.predict(createSample(0d))));
     assertEquals(0l, Math.round(orNN.predict(createSample(1d))));
   }
@@ -69,7 +69,7 @@ public class NeuralNetworkFactoryTest {
     WeightsMatrix firstNorLayerWeights = new WeightsMatrix(new double[][]{{0, 0, 0},{-30d, 20d, 20d}, {10d, -20d, -20d}});
     WeightsMatrix secondNorLayerWeights = new WeightsMatrix(new double[][]{{-10d, 20d, 20d}});
     WeightsMatrix[] norWeightsMatrixSet = new WeightsMatrix[]{firstNorLayerWeights,secondNorLayerWeights};
-    NeuralNetwork<Double,Double> norNN = NeuralNetworkFactory.create(new LinkedList<TrainingExample<Double, Double>>(), norWeightsMatrixSet, new VoidLearningStrategy(), new FeedForwardStrategy(new SigmoidFunction()));
+    NeuralNetwork<Double,Double> norNN = NeuralNetworkFactory.create(new LinkedList<TrainingExample<Double, Double>>(), norWeightsMatrixSet, new VoidLearningStrategy<Double, Double>(), new FeedForwardStrategy(new SigmoidFunction()));
     assertEquals(0l, Math.round(norNN.predict(createSample(1d, 0d))));
     assertEquals(0l, Math.round(norNN.predict(createSample(0d, 1d))));
     assertEquals(1l, Math.round(norNN.predict(createSample(0d, 0d))));

Modified: labs/yay/trunk/core/src/test/java/org/apache/yay/VoidLearningStrategyTest.java
URL: http://svn.apache.org/viewvc/labs/yay/trunk/core/src/test/java/org/apache/yay/VoidLearningStrategyTest.java?rev=1366965&r1=1366964&r2=1366965&view=diff
==============================================================================
--- labs/yay/trunk/core/src/test/java/org/apache/yay/VoidLearningStrategyTest.java (original)
+++ labs/yay/trunk/core/src/test/java/org/apache/yay/VoidLearningStrategyTest.java Sun Jul 29 22:36:10 2012
@@ -23,7 +23,7 @@ import java.util.LinkedList;
 
 import org.junit.Test;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
 /**
  * Testcase for {@link VoidLearningStrategy}
@@ -38,7 +38,7 @@ public class VoidLearningStrategyTest {
       double[][] weights = {{1d, 2d,}, {2d, 4d}};
       weightsMatrixSet[0] = new WeightsMatrix(weights);
       WeightsMatrix[] learnedWeights = learningStrategy.learnWeights(weightsMatrixSet,trainingExamples);
-      assertEquals(learnedWeights, weightsMatrixSet);
+      assertTrue(learnedWeights.equals(weightsMatrixSet));
   }
 
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org