You are on page 1of 11

21/9/2016 MultiLayerPerceptron

MULTILAYERPERCEPTRON
MultiLayerperceptron(MLP)isafeedforwardneuralnetworkwithoneormorelayersbetweeninputandoutputlayer.Feedforwardmeansthatdataflowsinonedirectionfrominputtooutputlayer(forward).Thistype
ofnetworkistrainedwiththebackpropagationlearningalgorithm.MLPsarewidelyusedforpatternclassification,recognition,predictionandapproximation.MultiLayerPerceptroncansolveproblemswhicharenot
linearlyseparable.

TocreateandtrainMultiLayerPerceptronneuralnetworkusingNeurophStudiodothefollowing:

1.CreateNeurophproject
2.CreateMultiLayerperceptronnetwork
3.Createtrainingset
4.Trainnetwork
5.Testtrainednetwork

Step1.CreateNeurophproject.

ClickFile>NewProject.

SelectNeurophProject,andclickNext.

Enterprojectnameandlocation,clickFinish.

Projectiscreated,nowcreateneuralnetwork.

Step2.CreateMultilayerPerceptronnetwork.

ClickFile>NewFile

http://neuroph.sourceforge.net/tutorials/MultiLayerPerceptron.html 1/11
21/9/2016 MultiLayerPerceptron

SelectprojectfromProjectdropdownmenu,selectNeuralNetworkfiletype,clicknext.

Enternetworkname,selectMultiLayerPerceptronnetworktype,clicknext.

Enternumberofinputneurons(2),numberofhiddenneurons(3)andnumberofoutputneurons(1)ineachlayer.LeavetheUseBiasNeuronsboxchecked.ChoosetransferfunctionSigmoidorTanhfromdropdown
menu,forlearningrulechooseBackpropagationandclickCreatebutton.

http://neuroph.sourceforge.net/tutorials/MultiLayerPerceptron.html 2/11
21/9/2016 MultiLayerPerceptron

ThiswillcreatetheMultiLayerPerceptronneuralnetworkwithtwoneuronsininput,threeinhiddenandoneinoutputlayer.AllneuronswillhaveTanhtransferfunctions.

NowweshalltrainthisnetworktolearnlogicalXORfunction.We'llcreatenewtrainingsetaccordingtoXORtruthtable.

Step3.Next,createtrainingset.InmainmenuclickFile>NewFiletoopentrainingsetwizard.

http://neuroph.sourceforge.net/tutorials/MultiLayerPerceptron.html 3/11
21/9/2016 MultiLayerPerceptron

SelectDatasetfiletype,thenclicknext.

Entertrainingsetname,chooseSupervisedfortrainingsettypefromdropdownlist,enternumberofinputsandoutputsasshownonpicturebelowandclickNextbutton.

Thencreatetrainingsetbyenteringtrainingelementsasinputanddesiredoutputvaluesforneuronsininputandoutputlayerrespectively.UseAddrowbuttontoaddnewelements,andclickOKbuttonwhen
finished.

http://neuroph.sourceforge.net/tutorials/MultiLayerPerceptron.html 4/11
21/9/2016 MultiLayerPerceptron

Step4.Trainingnetwork.Tostartnetworktrainingprocedure,dragn'droptrainingsettocorrespondingfieldinthenetworkwindow,and'Train'buttonwillbecomeenabledintoolbar.Clickthe'Train'buttontoopen
SetLearningParametersdialog.

InSetLearningparametersdialogusedefaultlearningparameters,andjustclicktheTrainbutton.

http://neuroph.sourceforge.net/tutorials/MultiLayerPerceptron.html 5/11
21/9/2016 MultiLayerPerceptron

Trainingstoppedafter1700iterationswithtotalneterrorunder0.01.Tryusingdifferenttransferfunctionandlearningrateandobservetheresults.

Step5.Testingtrainednetwork.Afterthetrainingiscomplete,youcanuseTestandSetInbuttonstotestthenetworkbehaviour.

http://neuroph.sourceforge.net/tutorials/MultiLayerPerceptron.html 6/11
21/9/2016 MultiLayerPerceptron

InSetNetworkInputDialogyoucanenterinputvaluesfornetworkseparatedwithspaces.

Theresultofthenetworktestisshownonpicturebelow.

Valueofoutputneuroniscloseto1,whichisthedesiredoutputforthegiveninput.Thesmalldifferencerepresentstheacceptableerror.

RightclickeditorandchooseDisplayPropertiestosetdifferentvisualizationoptions(seepicturebelow).

http://neuroph.sourceforge.net/tutorials/MultiLayerPerceptron.html 7/11
21/9/2016 MultiLayerPerceptron

Youcannowexperimentwithdifferentcombinationsoftransferfunctionandlearningrule,whilecreatingnewMLPnetwork.Forexample,chooseBackpropagationwithMomentumforLearningRule.

Createthesametrainingset(accordingtoXORtruthtable)andclicktrainbutton.

http://neuroph.sourceforge.net/tutorials/MultiLayerPerceptron.html 8/11
21/9/2016 MultiLayerPerceptron

InSetLearningparametersdialogforMomentumuse0.1,andclicktheTrainbutton.

Trainingstoppedafterjust32iterationswithtotalneterrorunder0.01

http://neuroph.sourceforge.net/tutorials/MultiLayerPerceptron.html 9/11
21/9/2016 MultiLayerPerceptron

TestnetworkusingSetInputforthesamevalues(01)asinpreviousexample.

Theresultofnetworktestisshownonpicturebelow.

Valueofoutputneuroniscloseto1,whichisthedesiredoutputforthegiveninput.Thesmalldifferencerepresentstheacceptableerror.

MULTILAYERPERCEPTRONINJAVACODE

packageorg.neuroph.samples

importjava.util.Arrays
importorg.neuroph.core.NeuralNetwork
importorg.neuroph.nnet.MultiLayerPerceptron
importorg.neuroph.core.data.DataSet
importorg.neuroph.core.data.DataSetRow
importorg.neuroph.util.TransferFunctionType

/**
*Thissampleshowshowtocreate,train,saveandloadsimpleMultiLayerPerceptron
*/
publicclassXorMultiLayerPerceptronSample{

http://neuroph.sourceforge.net/tutorials/MultiLayerPerceptron.html 10/11
21/9/2016 MultiLayerPerceptron
publicstaticvoidmain(String[]args){

//createtrainingset(logicalXORfunction)
DataSettrainingSet=newDataSet(2,1)
trainingSet.addRow(newDataSetRow(newdouble[]{0,0},newdouble[]{0}))
trainingSet.addRow(newDataSetRow(newdouble[]{0,1},newdouble[]{1}))
trainingSet.addRow(newDataSetRow(newdouble[]{1,0},newdouble[]{1}))
trainingSet.addRow(newDataSetRow(newdouble[]{1,1},newdouble[]{0}))

//createmultilayerperceptron
MultiLayerPerceptronmyMlPerceptron=newMultiLayerPerceptron(TransferFunctionType.TANH,2,3,1)
//learnthetrainingset
myMlPerceptron.learn(trainingSet)

//testperceptron
System.out.println("Testingtrainedneuralnetwork")
testNeuralNetwork(myMlPerceptron,trainingSet)

//savetrainedneuralnetwork
myMlPerceptron.save("myMlPerceptron.nnet")

//loadsavedneuralnetwork
NeuralNetworkloadedMlPerceptron=NeuralNetwork.createFromFile("myMlPerceptron.nnet")

//testloadedneuralnetwork
System.out.println("Testingloadedneuralnetwork")
testNeuralNetwork(loadedMlPerceptron,trainingSet)

publicstaticvoidtestNeuralNetwork(NeuralNetworknnet,DataSettestSet){

for(DataSetRowdataRow:testSet.getRows()){

nnet.setInput(dataRow.getInput())
nnet.calculate()
double[]networkOutput=nnet.getOutput()
System.out.print("Input:"+Arrays.toString(dataRow.getInput()))
System.out.println("Output:"+Arrays.toString(networkOutput))

EXTERNALLINKS

TolearnmoreabouttheMultiLayerPerceptronsandBackpropagation(learningruleforMultiLayerPerceptron)see:

http://www.learnartificialneuralnetworks.com/backpropagation.html
http://en.wikipedia.org/wiki/Multilayer_perceptron
http://en.wikipedia.org/wiki/Backpropagation

http://neuroph.sourceforge.net/tutorials/MultiLayerPerceptron.html 11/11

You might also like