Skip to content

salange/NPP2

Repository files navigation

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/

About

N++2 is a multi-threaded neural network simulator with network sharding and BLAS support. It was developed from 2007 to 2010 in order to realize training and realtime inference of deep autoencoder networks. With its help I created the first visual DeepRL control policies.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors