You might also consider using your DSL as a frontend to the Nengo
neural simulator (http://nengo.ca).  Nengo (which is written in Java)
has recently added a Python
scripting interface (http://www.frontiersin.org/neuroinformatics/
10.3389/neuro.11/007.2009/abstract).  Nengo has a lot to recommend it
and is pretty mature, so you may save yourself a lot of effort under
the covers - also the way Nengo conceptualises the neyworks might be
useful feedback to your DSL design.

Ross


On Nov 14, 5:18 am, "Eric Schulte" <schulte.e...@gmail.com> wrote:
> Hi Ross,
>
>
>
> #+begin_src clojure
>   (let [n {:phi identity
>            :accum (comp (partial reduce +) (partial map *))
>            :weights [2 2 2]}]
>     [(repeat 3 n) (repeat 5 n) (assoc n :weights (vec (repeat 5 1)))])
> #+end_src
>
> would result in the following connection pattern
>
> [[file:/tmp/layers.png]]
>
>  layers.png
> 45KViewDownload
>
>
>
> > However, for other NNs you may care about the topological organisation
> > of the neurons in a 1-D, 2-D, or 3-D space in order to do things like
> > connecting corresponding neurons in different layers or having the
> > probability of a connection be a function of the separation of the
> > neurons.  In this case, you might use a data structure representing
> > the coordinates of each neuron as its key.
>
> Fully agreed, I'm partway through implementing what you've just
> described (at least as I understand it), in that the library now
> declares a new "Graph" data type which consists of a list of
> keys->Neural mappings as well as a directed edge set.  Using this new
> data type it is possible to construct, run and train arbitrarily
> connected graphs of Neural elements.  See the fourth example 
> athttp://repo.or.cz/w/neural-net.git
>
> Best -- Eric
>
>
>
>
>
> > Ross- Hide quoted text -
>
> - Show quoted text -
>
> Ross Gayler <r.gay...@gmail.com> writes:
> > On Nov 13, 9:12 am, "Eric Schulte" <schulte.e...@gmail.com> wrote:
> >> Albert Cardona <sapri...@gmail.com> writes:
>
> >> > Your neural network DSL looks great. One minor comment: why use lists
> >> > instead of sets? ...
>
> >> I used lists because I want to be able to specify a network in which (at
> >> least initially) all neurons in a hidden layer are identical e.g. the
> >> list example athttp://cs.unm.edu/~eschulte/src/neural-net/.
>
> > You might want to consider maps.
>
> Currently I'm using maps to specify a single neuron, and I fear it would
> add complexity to have two different meanings for maps.
>
> > For some NN models all you care about is that each neuron has a unique
> > identity (in which case using an index value as a key is as good a
> > solution as any).
>
> I'm currently using lists only for fully connected layers in a neural
> network, e.g. the following code

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to