## Multilayer perceptron network class MLPNet

- Internal representation is completely hidden from the user, teaching
and pruning algorithms — class interface provides access to all
relevant information.
- Different activation functions (with slope parameter)
in the output layer and hidden layers. Choices include:
- symmetric sigmoid (tanh),
- sigmoid,
- piecewise linear approximation of symmetric sigmoid,
- piecewise linear approximation of sigmoid,
- symmetric step,
- step,
- linear.

- Accessing particular weights, turning weights on and off.
- Randomising all active weights, retrieving and setting vector of all active weights.
- Removing redundant neurons (reorganising pruned network).
- Constructing new networks from existing ones.
- Saving and loading network to/from text file.
- Exporting network to a C function with (optional) backpropagation code for online learning.
- Evaluating on a matrix of inputs, computing MSE.
- Computing gradient of MSE w.r.t. to weights vector, computing gradient of particular output w.r.t. to weights vector.
- Speed — FCNN is few times faster than Fast Artificial Neural
Network Library (FANN) on a single thread; benchmark code can be downloaded here. In addition,
FCNN uses OpenMP, when present on system — speed is nearly proportional to the number
of cores.

## Teaching algorithms

- Backpropagation (steepest descent).
- Rprop.
- Stochastic gradient descent .

## Pruning algorithms

- Minimum magnitude.
- Optimal Brain Surgeon.

## Auxiliary class Matrix

- Lightweight clas for basic matrix computations (
+,
-,
*,
/).
- Double and single indexing with range checks.
- Reference counting.
- Object of class Matrix
are inputs and outputs of MLPNet
member functions (evaluating input, evaluating MSE, retrieving weights, computing
gradient of MSE).

## Auxiliary class Dataset

- Class for storing training and testing datasets.
- Internally represented as a pair of matrices with
each row corresponding to input and output.
- Additional information about data records can be stored.
- Reading from and writing to files.