splitting out the perceptron and back-propagation functions
[neural-net.git] / neural-net.org
blob55dd0db9adbfe72e04980afdf900539750e27fa7
1 #+Title: Neural Network
2 #+Author: Eric Schulte
4 * Neural Networks
5 A domain specific language for expressing neural networks using
6 Clojure data types.
8 - a [[http://clojure.org/data_structures#Data Structures-Maps (IPersistentMap)][Map]] specifies a single neuron e.g.
9   #+begin_src clojure
10     ;; a simple neuron which sums two unit inputs
11     (run {:phi     identity
12           :accum   (comp (partial reduce +) (partial map *))
13           :weights [1 1]}
14          [1 1]) ; => 2
15   #+end_src
17 - [[http://clojure.org/data_structures#Data Structures-Vectors (IPersistentVector)][Vectors]] are used to represent an /ordered/ series of neural elements
18   to be executed in /serial/
19   #+begin_src clojure
20     ;; two neurons in serial
21     (let [n {:phi identity
22              :accum (comp (partial reduce +) (partial map *))}
23           net [(assoc n :weights [1 1]) (assoc n :weights [2])]]
24       (run net [1 1])) ; => 4
25   #+end_src
26   
27 - [[http://clojure.org/data_structures#Data Structures-Lists (IPersistentList)][Lists]] are used to represent a /unordered/ series of neural elements
28   to be executed in /parallel/.
29   #+begin_src clojure
30     (let [n {:phi identity
31              :accum (comp (partial reduce +) (partial map *))
32              :weights [2 2 2]}
33           net [(list n n n) n]]
34       (run net [1 1 1])) ; => 36
35   #+end_src
37 - arbitrary Graphs /pending/...
39 Example implementations are given for the following types of neural
40 networks.
41 - [[file:src/neural_net/perceptron.clj][perceptrons]]
42 - [[file:src/neural_net/back-propagation.clj][back propagation]] networks
43 - [[file:src/neural_net/radial-basis.clj][radial basis]] neurons /pending/
45 * License
46 Copyright (C) 2010 Eric Schulte
48 This program is free software: you can redistribute it and/or modify
49 it under the terms of the GNU General Public License as published by
50 the Free Software Foundation, either version 3 of the License, or
51 (at your option) any later version.
53 This program is distributed in the hope that it will be useful,
54 but WITHOUT ANY WARRANTY; without even the implied warranty of
55 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
56 GNU General Public License for more details.
58 You should have received a [[file:COPYING][copy of the GNU General Public License]]
59 along with this program.  If not, see <http://www.gnu.org/licenses/>.