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: [email protected]
For additional commands, e-mail: [email protected]