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 2013/01/11 13:27:25 UTC

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

Author: tommaso
Date: Fri Jan 11 12:27:24 2013
New Revision: 1432011

URL: http://svn.apache.org/viewvc?rev=1432011&view=rev
Log:
improved use of generics and collections, removed vector

Modified:
    labs/yay/trunk/core/src/main/java/org/apache/yay/BackPropagationLearningStrategy.java
    labs/yay/trunk/core/src/main/java/org/apache/yay/BasicPerceptron.java
    labs/yay/trunk/core/src/main/java/org/apache/yay/Example.java
    labs/yay/trunk/core/src/main/java/org/apache/yay/FeedForwardStrategy.java
    labs/yay/trunk/core/src/main/java/org/apache/yay/NeuralNetworkFactory.java
    labs/yay/trunk/core/src/main/java/org/apache/yay/PredictionStrategy.java
    labs/yay/trunk/core/src/main/java/org/apache/yay/utils/ConversionUtils.java
    labs/yay/trunk/core/src/main/java/org/apache/yay/utils/ExamplesFactory.java
    labs/yay/trunk/core/src/test/java/org/apache/yay/BasicPerceptronTest.java
    labs/yay/trunk/core/src/test/java/org/apache/yay/NeuralNetworkFactoryTest.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=1432011&r1=1432010&r2=1432011&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 Fri Jan 11 12:27:24 2013
@@ -51,7 +51,7 @@ public class BackPropagationLearningStra
         RealMatrix[] activationErrors = new RealMatrix[weightsMatrixSet.length - 1];
 
         // feed forward propagation
-        RealMatrix[] activations = predictionStrategy.debugOutput(ConversionUtils.toVector(trainingExample.getFeatureVector()), weightsMatrixSet);
+        RealMatrix[] activations = predictionStrategy.debugOutput(ConversionUtils.toValuesCollection(trainingExample.getFeatures()), weightsMatrixSet);
         RealMatrix output = activations[activations.length - 1];
         Double[] learnedOutput = trainingExample.getOutput(); // training example output
         RealVector predictedOutputVector = new ArrayRealVector(output.getColumn(output.getColumnDimension() - 1)); // turn output to vector

Modified: labs/yay/trunk/core/src/main/java/org/apache/yay/BasicPerceptron.java
URL: http://svn.apache.org/viewvc/labs/yay/trunk/core/src/main/java/org/apache/yay/BasicPerceptron.java?rev=1432011&r1=1432010&r2=1432011&view=diff
==============================================================================
--- labs/yay/trunk/core/src/main/java/org/apache/yay/BasicPerceptron.java (original)
+++ labs/yay/trunk/core/src/main/java/org/apache/yay/BasicPerceptron.java Fri Jan 11 12:27:24 2013
@@ -18,6 +18,7 @@
  */
 package org.apache.yay;
 
+import java.util.Collection;
 import java.util.Vector;
 
 import org.apache.yay.neuron.BinaryThresholdNeuron;
@@ -48,7 +49,7 @@ public class BasicPerceptron implements 
   @Override
   public void learn(TrainingExample<Double, Double>... trainingExamples) throws LearningException {
     for (TrainingExample<Double, Double> example : trainingExamples) {
-      Vector<Double> doubles = ConversionUtils.toVector(example.getFeatureVector());
+      Collection<Double> doubles = ConversionUtils.toValuesCollection(example.getFeatures());
       Double[] inputs = doubles.toArray(new Double[doubles.size()]);
       Double calculatedOutput = perceptronNeuron.elaborate(inputs);
       int diff = calculatedOutput.compareTo(example.getOutput());
@@ -67,7 +68,7 @@ public class BasicPerceptron implements 
 
   @Override
   public Double predict(Example<Double> input) throws PredictionException {
-    return perceptronNeuron.elaborate(ConversionUtils.toVector(input.getFeatureVector()).toArray(
-            new Double[input.getFeatureVector().size()]));
+    return perceptronNeuron.elaborate(ConversionUtils.toValuesCollection(input.getFeatures()).toArray(
+            new Double[input.getFeatures().size()]));
   }
 }

Modified: labs/yay/trunk/core/src/main/java/org/apache/yay/Example.java
URL: http://svn.apache.org/viewvc/labs/yay/trunk/core/src/main/java/org/apache/yay/Example.java?rev=1432011&r1=1432010&r2=1432011&view=diff
==============================================================================
--- labs/yay/trunk/core/src/main/java/org/apache/yay/Example.java (original)
+++ labs/yay/trunk/core/src/main/java/org/apache/yay/Example.java Fri Jan 11 12:27:24 2013
@@ -18,13 +18,13 @@
  */
 package org.apache.yay;
 
-import java.util.Vector;
+import java.util.ArrayList;
 
 /**
  * A sample/input characterized by its features (typed with type F)
  */
 public interface Example<F> {
 
-  public Vector<Feature<F>> getFeatureVector();
+  public ArrayList<Feature<F>> getFeatures();
 
 }

Modified: labs/yay/trunk/core/src/main/java/org/apache/yay/FeedForwardStrategy.java
URL: http://svn.apache.org/viewvc/labs/yay/trunk/core/src/main/java/org/apache/yay/FeedForwardStrategy.java?rev=1432011&r1=1432010&r2=1432011&view=diff
==============================================================================
--- labs/yay/trunk/core/src/main/java/org/apache/yay/FeedForwardStrategy.java (original)
+++ labs/yay/trunk/core/src/main/java/org/apache/yay/FeedForwardStrategy.java Fri Jan 11 12:27:24 2013
@@ -21,6 +21,7 @@ package org.apache.yay;
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.Vector;
 
@@ -50,18 +51,18 @@ public class FeedForwardStrategy impleme
   }
 
   @Override
-  public Double predictOutput(Vector<Double> input, WeightsMatrix[] weightsMatrixSet) {
+  public Double predictOutput(Collection<Double> input, WeightsMatrix[] weightsMatrixSet) {
     RealMatrix[] realMatrixes = applyFF(input, weightsMatrixSet);
     RealMatrix x = realMatrixes[realMatrixes.length - 1];
     double[] lastColumn = x.getColumn(x.getColumnDimension() - 1);
     return Collections.max(Arrays.asList(ArrayUtils.toObject(lastColumn)));
   }
 
-  public RealMatrix[] debugOutput(Vector<Double> input, WeightsMatrix[] weightsMatrixSet) {
+  public RealMatrix[] debugOutput(Collection<Double> input, WeightsMatrix[] weightsMatrixSet) {
     return applyFF(input, weightsMatrixSet);
   }
 
-  private RealMatrix[] applyFF(Vector<Double> input, WeightsMatrix[] weightsMatrixSet) {
+  private RealMatrix[] applyFF(Collection<Double> input, WeightsMatrix[] weightsMatrixSet) {
     RealMatrix[] debugOutput = new RealMatrix[weightsMatrixSet.length];
 
     // TODO : fix this impl as it's very slow

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=1432011&r1=1432010&r2=1432011&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 Fri Jan 11 12:27:24 2013
@@ -58,7 +58,7 @@ public class NeuralNetworkFactory {
       @Override
       public Double predict(Example<Double> input) throws PredictionException {
         try {
-          Vector<Double> inputVector = ConversionUtils.toVector(input.getFeatureVector());
+          Collection<Double> inputVector = ConversionUtils.toValuesCollection(input.getFeatures());
           return predictionStrategy.predictOutput(inputVector, updatedWeightsMatrixSet);
         } catch (Exception e) {
           throw new PredictionException(e);

Modified: labs/yay/trunk/core/src/main/java/org/apache/yay/PredictionStrategy.java
URL: http://svn.apache.org/viewvc/labs/yay/trunk/core/src/main/java/org/apache/yay/PredictionStrategy.java?rev=1432011&r1=1432010&r2=1432011&view=diff
==============================================================================
--- labs/yay/trunk/core/src/main/java/org/apache/yay/PredictionStrategy.java (original)
+++ labs/yay/trunk/core/src/main/java/org/apache/yay/PredictionStrategy.java Fri Jan 11 12:27:24 2013
@@ -18,7 +18,7 @@
  */
 package org.apache.yay;
 
-import java.util.Vector;
+import java.util.Collection;
 
 import org.apache.commons.math3.linear.RealMatrix;
 
@@ -27,8 +27,8 @@ import org.apache.commons.math3.linear.R
  */
 public interface PredictionStrategy<I, O> {
 
-  public O predictOutput(Vector<I> input, WeightsMatrix[] weightsMatrixSet);
+  public O predictOutput(Collection<I> input, WeightsMatrix[] weightsMatrixSet);
 
-  public RealMatrix[] debugOutput(Vector<Double> input, WeightsMatrix[] weightsMatrixSet);
+  public RealMatrix[] debugOutput(Collection<I> input, WeightsMatrix[] weightsMatrixSet);
 
 }

Modified: labs/yay/trunk/core/src/main/java/org/apache/yay/utils/ConversionUtils.java
URL: http://svn.apache.org/viewvc/labs/yay/trunk/core/src/main/java/org/apache/yay/utils/ConversionUtils.java?rev=1432011&r1=1432010&r2=1432011&view=diff
==============================================================================
--- labs/yay/trunk/core/src/main/java/org/apache/yay/utils/ConversionUtils.java (original)
+++ labs/yay/trunk/core/src/main/java/org/apache/yay/utils/ConversionUtils.java Fri Jan 11 12:27:24 2013
@@ -18,6 +18,7 @@
  */
 package org.apache.yay.utils;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Vector;
 
@@ -57,9 +58,9 @@ public class ConversionUtils {
    * @return a double array
    */
   private static double[] toDoubleArray(Example<Double> sample) {
-    double[] ar = new double[sample.getFeatureVector().size()];
+    double[] ar = new double[sample.getFeatures().size()];
     int i = 0;
-    for (Feature<Double> f : sample.getFeatureVector()) {
+    for (Feature<Double> f : sample.getFeatures()) {
       ar[i] = f.getValue();
       i++;
     }
@@ -71,19 +72,20 @@ public class ConversionUtils {
    * @param input a vector of Double objects
    * @return a real vector
    */
-  public static RealVector toRealVector(Vector<Double> input) {
+  public static RealVector toRealVector(Collection<Double> input) {
     return new OpenMapRealVector(input.toArray(new Double[input.size()]));
   }
 
   /**
-   * turns a vector of features of type Double into a vector of Doubles
+   * turns a collection of features of type <code>T</code> into a collection of
+   * <code>T</code> objects.
    * @param featureVector the vector of features
    * @return a vector of Doubles
    */
-  public static Vector<Double> toVector(Vector<Feature<Double>> featureVector) {
+  public static <T extends Object> Collection<T> toValuesCollection(Collection<Feature<T>> featureVector) {
     // TODO : remove this and change APIs in a way that doesn't force to go through this ugly loop
-    Vector<Double> resultVector = new Vector<Double>(featureVector.size());
-    for (Feature<Double> feature : featureVector) {
+    Collection<T> resultVector = new ArrayList<T>();
+    for (Feature<T> feature : featureVector) {
         resultVector.add(feature.getValue());
     }
     return resultVector;

Modified: labs/yay/trunk/core/src/main/java/org/apache/yay/utils/ExamplesFactory.java
URL: http://svn.apache.org/viewvc/labs/yay/trunk/core/src/main/java/org/apache/yay/utils/ExamplesFactory.java?rev=1432011&r1=1432010&r2=1432011&view=diff
==============================================================================
--- labs/yay/trunk/core/src/main/java/org/apache/yay/utils/ExamplesFactory.java (original)
+++ labs/yay/trunk/core/src/main/java/org/apache/yay/utils/ExamplesFactory.java Fri Jan 11 12:27:24 2013
@@ -18,6 +18,7 @@
  */
 package org.apache.yay.utils;
 
+import java.util.ArrayList;
 import java.util.Vector;
 
 import org.apache.yay.Example;
@@ -33,7 +34,7 @@ public class ExamplesFactory {
           final Double... featuresValues) {
     return new TrainingExample<Double, Double>() {
       @Override
-      public Vector<Feature<Double>> getFeatureVector() {
+      public ArrayList<Feature<Double>> getFeatures() {
         return doublesToFeatureVector(featuresValues);
       }
 
@@ -47,14 +48,14 @@ public class ExamplesFactory {
   public static Example<Double> createDoubleExample(final Double... featuresValues) {
     return new Example<Double>() {
       @Override
-      public Vector<Feature<Double>> getFeatureVector() {
+      public ArrayList<Feature<Double>> getFeatures() {
         return doublesToFeatureVector(featuresValues);
       }
     };
   }
 
-  private static Vector<Feature<Double>> doublesToFeatureVector(Double[] featuresValues) {
-    Vector<Feature<Double>> features = new Vector<Feature<Double>>();
+  private static ArrayList<Feature<Double>> doublesToFeatureVector(Double[] featuresValues) {
+    ArrayList<Feature<Double>> features = new ArrayList<Feature<Double>>();
     Feature<Double> byasFeature = new Feature<Double>();
     byasFeature.setValue(1d);
     features.add(byasFeature);

Modified: labs/yay/trunk/core/src/test/java/org/apache/yay/BasicPerceptronTest.java
URL: http://svn.apache.org/viewvc/labs/yay/trunk/core/src/test/java/org/apache/yay/BasicPerceptronTest.java?rev=1432011&r1=1432010&r2=1432011&view=diff
==============================================================================
--- labs/yay/trunk/core/src/test/java/org/apache/yay/BasicPerceptronTest.java (original)
+++ labs/yay/trunk/core/src/test/java/org/apache/yay/BasicPerceptronTest.java Fri Jan 11 12:27:24 2013
@@ -18,7 +18,7 @@
  */
 package org.apache.yay;
 
-import java.util.Vector;
+import java.util.ArrayList;
 
 import org.junit.Test;
 
@@ -53,8 +53,8 @@ public class BasicPerceptronTest {
           final Double... params) {
     return new TrainingExample<Double, Double>() {
       @Override
-      public Vector<Feature<Double>> getFeatureVector() {
-        Vector<Feature<Double>> features = new Vector<Feature<Double>>();
+      public ArrayList<Feature<Double>> getFeatures() {
+        ArrayList<Feature<Double>> features = new ArrayList<Feature<Double>>();
         Feature<Double> byasFeature = new Feature<Double>();
         byasFeature.setValue(1d);
         features.add(byasFeature);

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=1432011&r1=1432010&r2=1432011&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 Fri Jan 11 12:27:24 2013
@@ -20,6 +20,7 @@ package org.apache.yay;
 
 import org.junit.Test;
 
+import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.Vector;
 
@@ -97,17 +98,17 @@ public class NeuralNetworkFactoryTest {
   private Example<Double> createSample(final Double... params) {
     return new Example<Double>() {
       @Override
-      public Vector<Feature<Double>> getFeatureVector() {
-      Vector<Feature<Double>> features = new Vector<Feature<Double>>();
-      Feature<Double> byasFeature = new Feature<Double>();
-      byasFeature.setValue(1d);
-      features.add(byasFeature);
-      for (Double d : params) {
-        Feature<Double> feature = new Feature<Double>();
-        feature.setValue(d);
-        features.add(feature);
-      }
-      return features;
+      public ArrayList<Feature<Double>> getFeatures() {
+        ArrayList<Feature<Double>> features = new ArrayList<Feature<Double>>();
+        Feature<Double> byasFeature = new Feature<Double>();
+        byasFeature.setValue(1d);
+        features.add(byasFeature);
+        for (Double d : params) {
+          Feature<Double> feature = new Feature<Double>();
+          feature.setValue(d);
+          features.add(feature);
+        }
+        return features;
       }
     };
   }



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