horn-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Edward J. Yoon (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HORN-4) Designing Programming APIs
Date Fri, 13 Nov 2015 05:07:10 GMT

    [ https://issues.apache.org/jira/browse/HORN-4?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15003556#comment-15003556

Edward J. Yoon commented on HORN-4:

I'm looking at it now. I also see some difficulties and inefficiencies (complex messaging
and more iterations are expected if we do at neuron level) but it looks possible in theoretically.

Let me think more about it.

> Designing Programming APIs
> --------------------------
>                 Key: HORN-4
>                 URL: https://issues.apache.org/jira/browse/HORN-4
>             Project: Apache Horn
>          Issue Type: Sub-task
>          Components: api
>            Reporter: Edward J. Yoon
>            Assignee: Edward J. Yoon
> As described in original proposal, we will have neuron-centric programming interface
(or we can support multiple programming paradigms e.g., layer-centric). Regarding languages,
we're going to be supporting a number of languages such as Java, Python, Scala.
> At the moment, I'll focus only on Java-based neuron-centric in this ticket. 
> Below is my rough sketch. I suggest that we provides two methods: upward and downward.
The reason of separating into two methods is to provide more intuitive programming model and
reduce user-side code complexity. The up or downward can be determined by message type internally,
and basically each neuron can be activated only when the messages are delivered. 
> {code}
> public interface NeuronInterface<M extends Writable> {
>   /**
>    * This method is called when the messages are propagated from the lower
>    * layer. It can be used to determine if the neuron would activate, or fire.
>    * 
>    * @param messages
>    * @throws IOException
>    */
>   public void upward(Iterable<M> messages) throws IOException;
>   /**
>    * This method is called when the errors are propagated from the upper layer.
>    * It can be used to calculate the error of each neuron and change the
>    * weights.
>    * 
>    * @param messages
>    * @throws IOException
>    */
>   public void downward(Iterable<M> messages) throws IOException;
> }
> {code}

This message was sent by Atlassian JIRA

View raw message