Saturday, December 3, 2011

svn commit: r1209931 - in /labs/yay/trunk/core/src/main/java/org/apache/yay/bio: ActivationFunction.java Axon.java AxonTerminal.java Dendrite.java NeuralNetwork.java Neuron.java Signal.java Synapse.java

Author: tommaso
Date: Sat Dec 3 15:16:15 2011
New Revision: 1209931

URL: http://svn.apache.org/viewvc?rev=1209931&view=rev
Log:
refactoring the bio package: added axons and axon terminals, defined activation function,neural network, signal and synapse signatures

Added:
labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Axon.java
labs/yay/trunk/core/src/main/java/org/apache/yay/bio/AxonTerminal.java
Modified:
labs/yay/trunk/core/src/main/java/org/apache/yay/bio/ActivationFunction.java
labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Dendrite.java
labs/yay/trunk/core/src/main/java/org/apache/yay/bio/NeuralNetwork.java
labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Neuron.java
labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Signal.java
labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Synapse.java

Modified: labs/yay/trunk/core/src/main/java/org/apache/yay/bio/ActivationFunction.java
URL: http://svn.apache.org/viewvc/labs/yay/trunk/core/src/main/java/org/apache/yay/bio/ActivationFunction.java?rev=1209931&r1=1209930&r2=1209931&view=diff
==============================================================================
--- labs/yay/trunk/core/src/main/java/org/apache/yay/bio/ActivationFunction.java (original)
+++ labs/yay/trunk/core/src/main/java/org/apache/yay/bio/ActivationFunction.java Sat Dec 3 15:16:15 2011
@@ -19,7 +19,10 @@
package org.apache.yay.bio;

/**
+ * An activation function receives a signal and generates a new signal AF : S -> S
*/
public interface ActivationFunction {

+ public Signal apply(Signal signal);
+
}

Added: labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Axon.java
URL: http://svn.apache.org/viewvc/labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Axon.java?rev=1209931&view=auto
==============================================================================
--- labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Axon.java (added)
+++ labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Axon.java Sat Dec 3 15:16:15 2011
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.yay.bio;
+
+import java.util.Collection;
+
+/**
+ * An axon is the item responsible of delivering signals elaborated from the nucleus to dendrites of other neurons
+ * connected through a synapse via its terminals
+ */
+public class Axon {
+ private Collection<AxonTerminal> terminals;
+
+ public Axon(Collection<AxonTerminal> terminals) {
+ this.terminals = terminals;
+ }
+
+ public Collection<AxonTerminal> getTerminals() {
+ return terminals;
+ }
+}

Added: labs/yay/trunk/core/src/main/java/org/apache/yay/bio/AxonTerminal.java
URL: http://svn.apache.org/viewvc/labs/yay/trunk/core/src/main/java/org/apache/yay/bio/AxonTerminal.java?rev=1209931&view=auto
==============================================================================
--- labs/yay/trunk/core/src/main/java/org/apache/yay/bio/AxonTerminal.java (added)
+++ labs/yay/trunk/core/src/main/java/org/apache/yay/bio/AxonTerminal.java Sat Dec 3 15:16:15 2011
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.yay.bio;
+
+/**
+ * An output unit of a neuron connected to the nucleus via the axon
+ */
+public interface AxonTerminal {
+
+ public Signal read();
+
+}

Modified: labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Dendrite.java
URL: http://svn.apache.org/viewvc/labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Dendrite.java?rev=1209931&r1=1209930&r2=1209931&view=diff
==============================================================================
--- labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Dendrite.java (original)
+++ labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Dendrite.java Sat Dec 3 15:16:15 2011
@@ -25,7 +25,7 @@ public abstract class Dendrite {

private Long weight;

- public abstract void acceptSignal(Signal signal);
+ public abstract void accept(Signal signal);

public Long getWeight() {
return weight;

Modified: labs/yay/trunk/core/src/main/java/org/apache/yay/bio/NeuralNetwork.java
URL: http://svn.apache.org/viewvc/labs/yay/trunk/core/src/main/java/org/apache/yay/bio/NeuralNetwork.java?rev=1209931&r1=1209930&r2=1209931&view=diff
==============================================================================
--- labs/yay/trunk/core/src/main/java/org/apache/yay/bio/NeuralNetwork.java (original)
+++ labs/yay/trunk/core/src/main/java/org/apache/yay/bio/NeuralNetwork.java Sat Dec 3 15:16:15 2011
@@ -19,7 +19,10 @@
package org.apache.yay.bio;

/**
+ * A neural network is a layered connected graph of neurons
*/
public interface NeuralNetwork {

+ Signal predict(Signal... input);
+
}

Modified: labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Neuron.java
URL: http://svn.apache.org/viewvc/labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Neuron.java?rev=1209931&r1=1209930&r2=1209931&view=diff
==============================================================================
--- labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Neuron.java (original)
+++ labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Neuron.java Sat Dec 3 15:16:15 2011
@@ -18,28 +18,29 @@
*/
package org.apache.yay.bio;

+
import java.util.Collection;

/**
- * elaboration node/unit; sends a signal on the basis of the signals received and its activation threshold
+ * A neuron is the fundamental unit of a neural network and responsible of the signal elaboration
*/
-public abstract class Neuron {
+public class Neuron {

- private Synapse outputSynapse;
- private ActivationFunction activationFunction;
- private Long threshold;
- private Collection<Synapse> inSynapses;
-
- Neuron(ActivationFunction activationFunction, Long threshold, Collection<Synapse> inSynapses, Synapse outputSynapse) {
- this.activationFunction = activationFunction;
- this.threshold = threshold;
- this.inSynapses = inSynapses;
- this.outputSynapse = outputSynapse;
+ private Nucleus nucleus;
+ private Collection<Dendrite> dendrites;
+ private Axon axon;
+
+ public Neuron(Nucleus nucleus, Collection<Dendrite> dendrites, Axon axon) {
+ this.nucleus = nucleus;
+ this.dendrites = dendrites;
+ this.axon = axon;
}

- void send(Signal signal) {
+ public Collection<Dendrite> getDendrites() {
+ return dendrites;
}

- void receive(Signal signal) {
+ public Axon getAxon() {
+ return axon;
}
}

Modified: labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Signal.java
URL: http://svn.apache.org/viewvc/labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Signal.java?rev=1209931&r1=1209930&r2=1209931&view=diff
==============================================================================
--- labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Signal.java (original)
+++ labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Signal.java Sat Dec 3 15:16:15 2011
@@ -19,19 +19,8 @@
package org.apache.yay.bio;

/**
- * a signal to be sent from one neuron to another via a synapse
+ * A signal represents and wraps the information, of type T, traversing neurons of a neural network
*/
-public class Signal {
- private Object itemToTransmit;
-
- public Signal(Object o) {
- itemToTransmit = o;
- }
-
- @Override
- public String toString() {
- return "Signal{" +
- "itemToTransmit=" + itemToTransmit +
- '}';
- }
+public interface Signal<T> {
+ public T getValue();
}

Modified: labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Synapse.java
URL: http://svn.apache.org/viewvc/labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Synapse.java?rev=1209931&r1=1209930&r2=1209931&view=diff
==============================================================================
--- labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Synapse.java (original)
+++ labs/yay/trunk/core/src/main/java/org/apache/yay/bio/Synapse.java Sat Dec 3 15:16:15 2011
@@ -19,18 +19,10 @@
package org.apache.yay.bio;

/**
- * connects neurons weighting the signals which traverse the synapse itself
+ * A synapse connects neurons from axons to dendrites
*/
-public abstract class Synapse {
+public interface Synapse {

- private Neuron from;
- private Neuron to;
- private Long weight;
-
- Synapse(Neuron from, Neuron to, Long weight) {
- this.from = from;
- this.to = to;
- this.weight = weight;
- }
+ public Synapse connect(Neuron from, Neuron to);

}

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

No comments:

Post a Comment