Drexel dragonThe Math ForumDonate to the Math Forum



Search All of the Math Forum:

Views expressed in these public forums are not endorsed by Drexel University or The Math Forum.


Math Forum » Discussions » Software » comp.soft-sys.matlab

Topic: Outputs in Elman Network
Replies: 3   Last Post: Jun 15, 2013 1:08 PM

Advanced Search

Back to Topic List Back to Topic List Jump to Tree View Jump to Tree View   Messages: [ Previous | Next ]
Greg Heath

Posts: 5,978
Registered: 12/7/04
Re: Outputs in Elman Network
Posted: Jun 8, 2013 4:22 AM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply

"Pedro" wrote in message <kod3j2$mpf$1@newscl01ah.mathworks.com>...
> Good morning from Spain,
>
> I'm working with a Elman NN, and I have two problems that I cannot resolve.
>
> 1. I'm trying to entablish two outputs in the net, but I can't find the code or the option that can do this. I've prove "net.outputs = 2" o "net.numOutputs = 2", but both either work. I thought that, when I configure the net, maybe if I put two targets, this could >change, but I was wrong.


Just change the size of the target from [ 1 N ] to [ 2 N ].

> 2. The output. This takes a long time giving me headache.

N = 5000, H = 10 should take a long time, especially with closeloop delays.

Why not try N = 100 or so for debugging purposes?

Why are you using ELMAN instead of te less complicated NARXNET?

>I don't know why, the output is really really small if we compare it with the target or even >the input. Can it be the weights or the bias? Or maybe the train option?

Do you mean max(abs(cell2mat(Y))) << max(abs(cell2mat(T))) ?

Again, try reducing N to debug.

Also, try your code on a nndataset so we can compare answers.

help nndatasets
doc nndatasets

> Input = 1x5000 cell
> Target = 1x5000 cell
>
> The code I use to create the net and to configurate it is the next:
>
> net = elmannet(1:2,10);
> net = configure(net,input,target);
> [Xs,Xi,Ai,Ts] = preparets(net,input,target);
>
> net.divideFcn='divideind';
> [trainInd,valInd,testInd] = divideind(5000,1:3000,3001:4000,4001:5000);
> net.divideParam.trainInd = trainInd;
> net.divideParam.valInd = valInd;
> net.divideParam.testInd = testInd;
>
> net = trainlm(net,Xs,Ts,Xi,Ai);
> Y = net(Xs,Xi,Ai);
> perf = perform(net,Ts,Y);


Hope this helps.

Greg



Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© Drexel University 1994-2014. All Rights Reserved.
The Math Forum is a research and educational enterprise of the Drexel University School of Education.