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/31 00:01:38 UTC

svn commit: r1367333 - in /labs/yay/trunk/core/src/main/java/org/apache/yay: FeedForwardStrategy.java NeuralNetworkFactory.java WeightLearningException.java utils/ConversionUtils.java utils/MatrixConverter.java

Author: tommaso
Date: Mon Jul 30 22:01:38 2012
New Revision: 1367333

URL: http://svn.apache.org/viewvc?rev=1367333&view=rev
Log:
refactored MatrixConverter to more generic ConversionUtils

Added:
    labs/yay/trunk/core/src/main/java/org/apache/yay/utils/ConversionUtils.java
      - copied, changed from r1367073, labs/yay/trunk/core/src/main/java/org/apache/yay/utils/MatrixConverter.java
Removed:
    labs/yay/trunk/core/src/main/java/org/apache/yay/utils/MatrixConverter.java
Modified:
    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/WeightLearningException.java

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=1367333&r1=1367332&r2=1367333&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 Mon Jul 30 22:01:38 2012
@@ -25,7 +25,7 @@ import org.apache.commons.lang3.ArrayUti
 import org.apache.commons.math.linear.ArrayRealVector;
 import org.apache.commons.math.linear.RealMatrix;
 import org.apache.commons.math.linear.RealVector;
-import org.apache.yay.utils.MatrixConverter;
+import org.apache.yay.utils.ConversionUtils;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -45,11 +45,8 @@ public class FeedForwardStrategy impleme
 
   private final ActivationFunction<Double> hypothesis;
 
-  private final MatrixConverter matrixConverter;
-
   public FeedForwardStrategy(ActivationFunction<Double> hypothesis) {
     this.hypothesis = hypothesis;
-    this.matrixConverter = new MatrixConverter();
   }
 
 
@@ -66,7 +63,7 @@ public class FeedForwardStrategy impleme
 
   private RealMatrix applyFF(Vector<Double> input, WeightsMatrix[] weightsMatrixSet) {
     // TODO : fix this impl as it's very slow and commons-math Java1.4 constraint is so ugly to see...
-    RealVector v = matrixConverter.toRealVector(input);
+    RealVector v = ConversionUtils.toRealVector(input);
     RealMatrix x = v.outerProduct(new ArrayRealVector(new Double[]{1d})).transpose(); // a 1xN matrix
     for (WeightsMatrix weightsMatrix : weightsMatrixSet) {
       // compute matrix multiplication

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=1367333&r1=1367332&r2=1367333&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 Mon Jul 30 22:01:38 2012
@@ -21,6 +21,8 @@ package org.apache.yay;
 import java.util.Collection;
 import java.util.Vector;
 
+import org.apache.yay.utils.ConversionUtils;
+
 /**
  * Factory class for creating {@link NeuralNetwork}s
  */
@@ -56,7 +58,7 @@ public class NeuralNetworkFactory {
       @Override
       public Double predict(Example<Double> input) throws PredictionException {
         try {
-          Vector<Double> inputVector = toVector(input.getFeatureVector());
+          Vector<Double> inputVector = ConversionUtils.toVector(input.getFeatureVector());
           return predictionStrategy.predictOutput(inputVector, updatedWeightsMatrixSet);
         } catch (Exception e) {
           throw new PredictionException(e);
@@ -67,13 +69,4 @@ public class NeuralNetworkFactory {
     return neuralNetwork;
   }
 
-  private static Vector<Double> toVector(Vector<Feature<Double>> 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) {
-      resultVector.add(feature.getValue());
-    }
-    return resultVector;
-  }
-
 }

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=1367333&r1=1367332&r2=1367333&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 Mon Jul 30 22:01:38 2012
@@ -27,7 +27,7 @@ public class WeightLearningException ext
     super(throwable);
   }
 
-  public WeightLearningException(String s, PredictionException e) {
+  public WeightLearningException(String s, Exception e) {
     super(s, e);
   }
 }

Copied: labs/yay/trunk/core/src/main/java/org/apache/yay/utils/ConversionUtils.java (from r1367073, labs/yay/trunk/core/src/main/java/org/apache/yay/utils/MatrixConverter.java)
URL: http://svn.apache.org/viewvc/labs/yay/trunk/core/src/main/java/org/apache/yay/utils/ConversionUtils.java?p2=labs/yay/trunk/core/src/main/java/org/apache/yay/utils/ConversionUtils.java&p1=labs/yay/trunk/core/src/main/java/org/apache/yay/utils/MatrixConverter.java&r1=1367073&r2=1367333&rev=1367333&view=diff
==============================================================================
--- labs/yay/trunk/core/src/main/java/org/apache/yay/utils/MatrixConverter.java (original)
+++ labs/yay/trunk/core/src/main/java/org/apache/yay/utils/ConversionUtils.java Mon Jul 30 22:01:38 2012
@@ -31,9 +31,9 @@ import java.util.Vector;
 /**
  * Temporary class for conversion between model objects and commons-math matrices/vectors
  */
-public class MatrixConverter {
+public class ConversionUtils {
 
-  public RealMatrix toMatrix(Collection<Example<Double>> trainingSet) {
+  public static RealMatrix toMatrix(Collection<Example<Double>> trainingSet) {
     double[][] matrixData = new double[trainingSet.size()][];
 
     int i = 0;
@@ -46,7 +46,7 @@ public class MatrixConverter {
     return new Array2DRowRealMatrix(matrixData);
   }
 
-  private double[] toDoubleArray(Example<Double> sample) {
+  private static double[] toDoubleArray(Example<Double> sample) {
     double[] ar = new double[sample.getFeatureVector().size()];
     int i = 0;
     for (Feature<Double> f : sample.getFeatureVector()) {
@@ -56,8 +56,17 @@ public class MatrixConverter {
     return ar;
   }
 
-  public RealVector toRealVector(Vector<Double> input) {
+  public static RealVector toRealVector(Vector<Double> input) {
     return new OpenMapRealVector(input.toArray(new Double[input.size()]));
   }
 
+  public static Vector<Double> toVector(Vector<Feature<Double>> 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) {
+        resultVector.add(feature.getValue());
+    }
+    return resultVector;
+  }
+
 }



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