-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathREADME
More file actions
84 lines (64 loc) · 3.35 KB
/
README
File metadata and controls
84 lines (64 loc) · 3.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
N++2 is a multi-threaded neural network simulator for simulating large
neural networks with millions of weights. During the training procedure,
it makes heavy use of multi-core CPUs using several threads for propagating
multiple training patterns in parallel. Relying on CBLAS calls where
appropriate, n++2 is also able to benefit of a CPU's SIMD-capabilities.
N++2 is able to speed-up training of "simple" multi-layer perceptrons with
only one or two hidden layers and a few hundred connections. But its main
purpose is to simulate huge neural networks with a number of hidden layers
and up to millions of weights in a "deep learning" setting. For this
purpose, n++2 offers additional facilities for constructing symmetric
autoencoder neural networks, easy layer-wise pre-training and for arranging
neurons in two-dimensional layers (helpful for processing images). Besides
fully connected layer types n++2 also comes with an implementation of sparse
connection structures, including receptive fields and shared-weights. Thus,
n++2 can also be used to simulate LeCun's convolutional neural networks and
to combine these sparse techniques with deep learning and layer-wise
pretraining.
N++2 uses Martin Riedmiller's Resilient Propagation (RProp) for fast and
reliable training of the neural networks. N++2 builds on Riedmiller's
original (non-parallel) implementation n++ and uses mainly the same interface
(API) to the "simulator core", although the internal structure of the neural
networks in n++2 is different. On a dual quad-core CPU with two threads
per core (16 threads in parallel) n++2 is about 27 times faster than the
original n++.
The latest (development) version of N++2 can be downloaded from GitHub:
git clone https://github.com/salange/NPP2
N++2 comes under the BSD licence. Feel free to use, modify and redistribute.
For more information please visit us at our site
http://ml.informatik.uni-freiburg.de
or contact us directly via Email:
Machine Learning Lab at University Freiburg: ml@informatik.uni-freiburg.de
Original developer and present maintainer: sascha77@googlemail.com
The further development of n++2 will be an ongoing process open to the
public. We're open for any contributions and appreciate any help in improving
the code, build-system and documentation. If interested to participate,
please don't hesitate to contact us!
This directory includes the following subdirectories:
src source code for n++2
doc documentation (latex and doxygen-generated files)
demo_src demo source code of applications
examples network descriptions and pattern sets
npp2.xcodeproj project file (Xcode 4.0)
The following subdirectories will be created during the build procedure:
include headerfiles to be included from application programs
lib object files to be linked to application programs
build build files (Xcode)
bin executable files
N++2 was tested on:
- OS X Lion (Xcode and cmake)
- Ubuntu 10.04 LTS (cmake)
Building n++2 using cmake:
Create a build-directory for storing configuration and temporary files:
> mkdir build_cmake
Change to directory:
> cd build_cmake
Configure cmake and create make files (also builds the demos):
> cmake -DDEMOS=ON ..
Build and install n++2:
> make
> make install
Create API-documentation from sources:
> make doc
The documentation can be found in
doc/api/html/