OK, that would be great if everything was easy and simple... I realize that there are many tiny details, sometimes mysterious options and few parameters that make the network brilliant or will stuck the training forever. This is partly due to the fact that program is still growing (and this manual as well...); my second excuse is the neural networks unfortunately sill require some understanding - what could be expected and at least some basic knowledge about used algorithms. In any case, do not hesitate to ask me if you've got problem using NetMaker.

There are many neural packages around, some obviously bigger, with plenty of network architectures, so what is so unique in NetMaker?

- Most of the packages let you create and play with a single network at a time; I would say, they are a bit network-oriented ;-) . NetMaker is rather job-oriented: you can have multiple networks, data sets, connect them, reconnect, apply preprocessing, or not... I will develop it in this direction, so you will not see unreadable images of spaghetti of hundreds of neuron connections, but more flexible data flow instead.

- Still, few packages offer automatic adjustment of the network size.
NetMaker development concentrates on such an architectures. Now there are two network models implemented: Cascade-Correlation (growing only), and MLP with my growing/pruning algorithm and OBS weight elimination. I hope I'll find a time for RBF model finally (dynamic of course)...

- There are various error (cost) functions that network can minimize, not only the standard MSE. It's true, that in many cases you won't feel the difference, but there are applications where appropriate function is crucial. Not many other packages give a choice in this field.
 


To start work, first, choose menu File - New Project to create a new project window. Then:

1) Add new
DataSet blocks and pollute them with training/testing data (menu Edit - Add Component - Data Set ). Special syntax is used in DataSet block for description of the contents of files. You can read about it in data structures - formatting string syntax section.

2) If any preprocessing is required (usually normalization to zero-mean and unitary standard deviation), add
Transform blocks (menu Edit - Add Component - Transform). Connect DataSet's outputs to the Transform's inputs (push corresponding " I/O" or " >>" buttons - common Connection Add dialog window will appear), black lines represent established connections. Then set up appropriate transformation and choose the block containing data that will be used to calculate parameters of the transformation algorithm (light blue lines represent these connections). Add new DataSet blocks that will receive transformed data and turn on Internal source in block's setup. Then connect output of the Transform block to the input of the DataSet blocks (violet lines will appear). Again, go to the setup of the Transform block, select Forwarding tab and put a desired formatting strings. Now, the Transform block is ready and you can push Go! button to perform calculations.

3) When training/testing sets are ready, add
Network block (menu Edit - Add Component - Network ) and set up its structure or read it from a file (use Setup button). Both DataSet and Network blocks should be set up before the connection between them is established. To connect the Network to DataSet push the I/O button on one of them. Use Go button to select training algorithm and its parameters, then push Go! button in the dialog window to start the training process. There are many tabs and options in this dialog window - see networks section for more details.
Save the project to a file (menu
File - Save).

4) When training is finished save the network coefficients to a file (
Network 's Setup button, Save tab). Connect DataSet containing testing data to the network and run the network on it (Go button, JustRun method). Network answers are stored in the connected DataSets in the output vectors - you can view the values through the DataSet's Setup button and Preview tab, or plot them using one of the graphs...

There are lots of options not mentioned here, like triggering chains or pre-/post-run commands. Probably, the easiest way to get familiar with them is to go through examples.

--top-- --up--