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/12/05 21:41:59 UTC
svn commit: r1548289 - in /labs/yay/trunk/core/src:
main/java/org/apache/yay/core/BasicPerceptron.java
test/java/org/apache/yay/core/BackPropagationLearningStrategyTest.java
test/java/org/apache/yay/core/BasicPerceptronTest.java
Author: tommaso
Date: Thu Dec 5 20:41:59 2013
New Revision: 1548289
URL: http://svn.apache.org/r1548289
Log:
fixed typos in bpls test, improved perceptron to not updateweights when sample and evaluated outputs are the same
Modified:
labs/yay/trunk/core/src/main/java/org/apache/yay/core/BasicPerceptron.java
labs/yay/trunk/core/src/test/java/org/apache/yay/core/BackPropagationLearningStrategyTest.java
labs/yay/trunk/core/src/test/java/org/apache/yay/core/BasicPerceptronTest.java
Modified: labs/yay/trunk/core/src/main/java/org/apache/yay/core/BasicPerceptron.java
URL: http://svn.apache.org/viewvc/labs/yay/trunk/core/src/main/java/org/apache/yay/core/BasicPerceptron.java?rev=1548289&r1=1548288&r2=1548289&view=diff
==============================================================================
--- labs/yay/trunk/core/src/main/java/org/apache/yay/core/BasicPerceptron.java (original)
+++ labs/yay/trunk/core/src/main/java/org/apache/yay/core/BasicPerceptron.java Thu Dec 5 20:41:59 2013
@@ -68,12 +68,14 @@ public class BasicPerceptron implements
for (int i = 0; i < currentWeights.length; i++) {
currentWeights[i] += inputs[i];
}
+ perceptronNeuron.updateWeights(currentWeights);
} else if (diff < 0) {
for (int i = 0; i < currentWeights.length; i++) {
currentWeights[i] -= inputs[i];
}
+ perceptronNeuron.updateWeights(currentWeights);
}
- perceptronNeuron.updateWeights(currentWeights);
+
}
@Override
Modified: labs/yay/trunk/core/src/test/java/org/apache/yay/core/BackPropagationLearningStrategyTest.java
URL: http://svn.apache.org/viewvc/labs/yay/trunk/core/src/test/java/org/apache/yay/core/BackPropagationLearningStrategyTest.java?rev=1548289&r1=1548288&r2=1548289&view=diff
==============================================================================
--- labs/yay/trunk/core/src/test/java/org/apache/yay/core/BackPropagationLearningStrategyTest.java (original)
+++ labs/yay/trunk/core/src/test/java/org/apache/yay/core/BackPropagationLearningStrategyTest.java Thu Dec 5 20:41:59 2013
@@ -39,7 +39,7 @@ import static junit.framework.Assert.ass
public class BackPropagationLearningStrategyTest {
@Test
- public void testLearningWitgRandomNetwork() throws Exception {
+ public void testLearningWithRandomNetwork() throws Exception {
BackPropagationLearningStrategy backPropagationLearningStrategy = new BackPropagationLearningStrategy();
RealMatrix[] initialWeights = createRandomWeights();
@@ -55,7 +55,7 @@ public class BackPropagationLearningStra
}
@Test
- public void testLearningWitgRandomNetworkAndRandomSettings() throws Exception {
+ public void testLearningWithRandomNetworkAndRandomSettings() throws Exception {
BackPropagationLearningStrategy backPropagationLearningStrategy = new BackPropagationLearningStrategy(Math.random(),
Math.random(), new FeedForwardStrategy(Math.random() >= 0.5d ? new TanhFunction() : new SigmoidFunction()),
new LogisticRegressionCostFunction(Math.random()));
Modified: labs/yay/trunk/core/src/test/java/org/apache/yay/core/BasicPerceptronTest.java
URL: http://svn.apache.org/viewvc/labs/yay/trunk/core/src/test/java/org/apache/yay/core/BasicPerceptronTest.java?rev=1548289&r1=1548288&r2=1548289&view=diff
==============================================================================
--- labs/yay/trunk/core/src/test/java/org/apache/yay/core/BasicPerceptronTest.java (original)
+++ labs/yay/trunk/core/src/test/java/org/apache/yay/core/BasicPerceptronTest.java Thu Dec 5 20:41:59 2013
@@ -87,16 +87,44 @@ public class BasicPerceptronTest {
r.nextDouble(), r.nextDouble(), r.nextDouble(), r.nextDouble(),
r.nextDouble(), r.nextDouble());
basicPerceptron.learn(bigDataset);
- Double output = basicPerceptron.predict(createTrainingExample(null, 1d,
+ Double output = basicPerceptron.predict(createInput(r));
+ assertTrue(output == 0d || output == 1d);
+ }
+
+ @Test
+ @SuppressWarnings("unchecked")
+ public void testLearnPredictAndUpdateWithBigDataset() throws Exception {
+ Random r = new Random();
+ BasicPerceptron basicPerceptron = new BasicPerceptron(1d, r.nextDouble(),
r.nextDouble(), r.nextDouble(), r.nextDouble(), r.nextDouble(),
r.nextDouble(), r.nextDouble(), r.nextDouble(), r.nextDouble(),
r.nextDouble(), r.nextDouble(), r.nextDouble(), r.nextDouble(),
r.nextDouble(), r.nextDouble(), r.nextDouble(), r.nextDouble(),
- r.nextDouble(), r.nextDouble()));
+ r.nextDouble(), r.nextDouble());
+ basicPerceptron.learn(bigDataset);
+ TrainingExample<Double, Double> input = createInput(r);
+ Double output = basicPerceptron.predict(input);
assertTrue(output == 0d || output == 1d);
+ basicPerceptron.learn(createTrainingExample(1d, r.nextDouble(),
+ r.nextDouble(), r.nextDouble(), r.nextDouble(), r.nextDouble(),
+ r.nextDouble(), r.nextDouble(), r.nextDouble(), r.nextDouble(),
+ r.nextDouble(), r.nextDouble(), r.nextDouble(), r.nextDouble(),
+ r.nextDouble(), r.nextDouble(), r.nextDouble(), r.nextDouble(),
+ r.nextDouble(), r.nextDouble()));
+ Double secondOutput = basicPerceptron.predict(input);
+ assertTrue(secondOutput == 0d || secondOutput == 1d);
}
- @Test
+ private TrainingExample<Double, Double> createInput(Random r) {
+ return createTrainingExample(null, 1d,
+ r.nextDouble(), r.nextDouble(), r.nextDouble(), r.nextDouble(),
+ r.nextDouble(), r.nextDouble(), r.nextDouble(), r.nextDouble(),
+ r.nextDouble(), r.nextDouble(), r.nextDouble(), r.nextDouble(),
+ r.nextDouble(), r.nextDouble(), r.nextDouble(), r.nextDouble(),
+ r.nextDouble(), r.nextDouble());
+ }
+
+ @Test
@SuppressWarnings("unchecked")
public void testLearnPhaseWithSmallDataset() throws Exception {
BasicPerceptron basicPerceptron = new BasicPerceptron(1d, 2d, 3d, 4d);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org