1 #+Title: Neural Network
5 A domain specific language for expressing neural networks using
8 - a [[http://clojure.org/data_structures#Data Structures-Maps (IPersistentMap)][Map]] specifies a single neuron e.g.
10 ;; a simple neuron which sums two unit inputs
12 :accum (comp (partial reduce +) (partial map *))
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/
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
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/.
30 (let [n {:phi identity
31 :accum (comp (partial reduce +) (partial map *))
34 (run net [1 1 1])) ; => 36
37 - arbitrary Graphs /pending/...
39 Example implementations are given for the following types of neural
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/
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/>.