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