**Objective: **Learn
to create Perceptron networks

You will use Matlab's Neural Network Toolbox to complete this lab. The manual for Neural Network Toolbox is available under the resource page.

A Perceptron can be created
using the *newp *function, usually, by running a command like this:

**net = newp(PR,S,TF,LF)**

Perceptrons are used to solve simple (i.e. linearly separable) classification problems.

Use the Matlab help on
*newp*
to explain what each parameter of the function mean:

PR:

S :

TF:

LF:

To answer this question,
you can either use the help command at the Matlab prompt; help *newp*,
or use the online help for Neural network Toolbox.

The following command creates a Perceptron network with a single one-element input vector and one neuron. The range for the input is [0 2].

*net = newp(*[0 2],
1);

To see everything that
will be created, you can run the above command without the ";". At
this time the *weights *and biases are set to the default values.
The default learning function is *learnp*. The net input to the *hardlim*
transfer function is *dotprod*. Thus, the DOT product of the
input vector and weight matrix will be computed then the bias will be added
to compute the net input. The default initialization function, *initzero*,
is used to set the initial values of the weights to zero.

To check the weights and biases, we can run:

*inputweights = net.inputweights{1,
1}*

**Simulation (sim)**

When a network is created, that does not necessary
mean it is ready for use. A network should be trained for the given
cases, and then be used for other inputs. Here we will try an example in
which we set the weights and biases manually. This means, we set
the values and will run the network. If we are happy with the outcome,
then we will keep those weights and the biases. If we are no happy, we
make some changes, and will try again.

**Example**

Suppose we want to create
a network with a **single-neuron**, one **bias**, and **two inputs**.
This network will separate some patterns from each other. The limit
for the inputs are [-1 and 1]. As we mentioned before, when you create
a perceptron network (all networks in Matlab), the weights and the bias
are set to 0 by default.

Let’s set the weights
to:
*w*_{11 }= -1, *w*_{12} = 1, and bias = 1.

Note: at anytime of the
process, if you want to check the outcome, just ignore the ; at the end
of the command. Now, let's create an inputs. Each input matrix
in our case should have two values, a pair.

You can run a simulation
of this network using:

*a1 = sim(net, p)*

**What
is the output?**

**What is the output for
p_new = [1 –1]?**

Can you confirm the answer by hand?

**Find out how you can
run the network for both p and p_new together, then run the network for
both inputs. What is the output?**

Note: Just in case
you want to reset the weights and biases back to the default values (0),
you can use the *init* command. For example in the network that we
just created, we can type:

*net= init(net)*.

to reset them back to 0 again.

Sometimes, one may want to assign the weights and biases randomly. There is a function that does this:

*net.inputweights{1,1}.initFcn
= ‘rands’;*

Let’s check it out:

What do you have for
the weights and the bias?

Try your network with
these parameter for the two inputs and see what you will get this time?

You can use the

Now that you learned
to set up a Perceptron network, design a network to separate apples and
oranges using the weights and biases given in class, .

Thus, the input parameter
for an apple and orange, respectively, are:

The network produces
[1] for orange and [-1] for apple.

Once your network is trained, try the following
inputs:and
then

The list of all commands that you have used following
by the outcome of Matlab run. You can create a blank file and cut an paste
your commands as you will progress. Then print that file or send it as
an e-mail attachment. You can also send the file in the body of your
e-mail.