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 Thu, 12 Nov 2015 02:22:11 GMT

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

Edward J. Yoon commented on HORN-4:

I just found some similar project with us: https://github.com/ivan-vasilev/neuralnetworks

They used Aparapi for supporting GPU. As I mentioned above, GPU can be used by abstracting
some arithemetic operations and extracting some array from neurons. Unclear thing is the performance
but there might be optimization techniques applied.

> 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