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