You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@horn.apache.org by "Edward J. Yoon (JIRA)" <ji...@apache.org> on 2015/10/23 02:56:27 UTC

[jira] [Comment Edited] (HORN-4) Designing Programming APIs

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

Edward J. Yoon edited comment on HORN-4 at 10/23/15 12:55 AM:
--------------------------------------------------------------

NOTE: I heard some side opinion from Thomas. 

 * layer-wise partitioning is needed
 * neuron-centric may not fit for GPU

So, as described above, we may should have to support multiple programming paradigms e.g., layer-centric.


was (Author: udanax):
NOTE: I heard some side opinion from Thomas. 

 * layer-wise partitioning
 * neuron-centric may not fit for GPU

So, as described above, we may should have to support multiple programming paradigms e.g., layer-centric.

> 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
>
> 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
(v6.3.4#6332)