The MATLAB Neural Network toolbox ships with numerous predefined and canonical neural nets, however sometimes you may need to create a custom net with just the right connections, biases and hidden layers to suite your particular problem domain. To achieve this goal we can use the matlab *network* object. The * network *object allows granular design of neural networks by exposing all properties of the net that we are designing. The preceding code demonstrates how to build a simple neural to learn the truth table for Logical AND.

First lets look at the Logical AND truth table:

*p* |
*q* |
*p* ∧ *q* |

T |
T |
T |

T |
F |
F |

F |
T |
F |

F |
F |
F |

Open a new edit window in MATLAB and enter the following code:

- This creates an empty network object and assigns it to the
*net* variable, sets up the number of inputs and uses cell array syntax to index into its properties.
%% Design Custom Neural Network
net = network; % create network
net.numInputs = 2; % set number of inputs
net.inputs{1}.size = 1; % assign 2 to input size
net.inputs{2}.size = 1;
net.numLayers = 1; % add 1 layer to network
net.layers{1}.size = 1; % assign number of neurons in layer
net.inputConnect(1) = 1; % connet input to layer 1
net.inputConnect(2) = 1;
net.biasConnect(1) = 1; % connect bias to layer 1
net.biases{1}.learnFcn = 'learnp'; % set bias learning function
net.biases{1}.initFcn = 'initzero'; % set bias init function
net.outputConnect(1) = 1;
net.layers{1}.transferFcn = 'hardlim'; % set layer transfer function [hard limit]
net.inputWeights{1}.initFcn = 'initzero'; % set input wieghts init function
net.inputWeights{1}.learnFcn = 'learnp'; % set input weight learning function
net.inputWeights{2}.learnFcn = 'learnp';
net.inputWeights{2}.initFcn = 'initzero';
net.initFcn = 'initlay'; % set network init function
net.trainFcn = 'trainc'; % set network training function
net.performFcn = 'mae'; % set network perf evaluation function
view(net)
net = train(net,[0 0 1 1;0 1 0 1],[0 0 0 1]) ; % train network

- Custom Network Diagram:
- Test Network

In the command window type
net([1;1])

This should output a 1 to the command window indicating 1 AND 1 = 1

### Like this:

Like Loading...

*Related*

## Published by Romaine Carter

Interests: optimization algorithms, Neural Nets, MATLAB, MASM programming, Visual C++, Python, C#.Net, Haskell, software design patterns, TDD and ASP.NET MVC x.
View all posts by Romaine Carter

it is a very helpful article. I am working on a project that predict future exchange rates between two currencies. I am using a neural network and I have been adviced to use newff function in matlab. What I cannot understand there is usage of newff function. when creating new neural network how to define number of input nodes it has. I am giving set of inputs(say 10 inputs ) and take one single output. How to use newff function here??

Hi bro,

this is a very useful article.

I am really stuck trying to make a specific neural net arcitecture in matlab.

can we configure the connections between specific neurons in a neural net?

I am looking for a structure which looks like this –

http://i.stack.imgur.com/t2wmJ.png

Is this possible in matlab?

Thanks a lot!

Could you share the code you used for the structure in your picture? Thanks.