handb 发表于 2007-8-15 12:38

神经网络拟合实验曲线问题出现列数不对的错误提示

我的P和T是原始的实验数据,二者应该是一条迟滞曲线,T只有数据,没有表达式,写了一个神经网络,结果与原始曲线相差太远,我应该怎么做才行呢?我这里只给出了一个迟滞环的数值,如果增加训练数据(如P是10圈的数据或更多),T的数据也是10圈并与P数据一一对应,列数也相同,错误提示是列数不对,这是什么原因?谢谢解答!我的网络

P=[1.12      1.22 1.32 1.46 1.56      1.66 1.76 1.9 2      2.05 ...
   2.1 2.15         2.2 2.25 2.25 2.29      2.29 2.29 2.25 2.2 ...
   2.2 2.2 2.1 2.1 2.05      2 1.9 1.81 1.76      1.61 ...
   1.51 1.42 1.32 1.22 1.07      0.93 0.78 0.63 0.49      0.39 ...
   0.24 0.1      0 -0.1 -0.24 -0.39 -0.54 -0.68 -0.78 -0.88 ...
   -0.98 -1.12 -1.22 -1.42 -1.51 -1.61 -1.71 -1.76 -1.86 -1.95 ...
   -2 -2.1 -2.15 -2.2 -2.25      -2.25 -2.25      -2.25 -2.25      -2.25 ...
   -2.25 -2.2 -2.2 -2.15 -2.1 -2.05      -1.95 -1.9 -1.81 -1.71 ...
   -1.61 -1.56 -1.42 -1.27 -1.17 -1.03 -0.88 -0.78 -0.54 -0.44 ...
   -0.29 -0.15      0 0.1 0.24 0.39      0.59 0.73 0.83 0.98];
T=[-0.015      -0.02      -0.015      0      0      0      0.005      0.005      0.015      0.02      ...
    0.02      0.024      0.024      0.015      0.02      0.02      0.024      0.024      0.02      0.02      ...
    0.02      0.015      0.015      0.029      0.029      0.034      0.034      0.034      0.044      0.039      ...
    0.039      0.039      0.039      0.029      0.034      0.029      0.029      0.029      0.015      0.015      ...
    0.015      0.005      0.005      0.02      0.02      0.015      0.01      0.01      0.015      0.015      ...
    0.01      0.02      0.015      0      0      -0.005      -0.01      -0.01      -0.015      -0.02      ...
    -0.02      -0.024      -0.029      -0.02      -0.02      -0.024      -0.024      -0.024      -0.02      -0.015      ...
    -0.02      -0.015      -0.02      -0.029      -0.029      -0.034      -0.034      -0.034      -0.034      -0.034      ...
    -0.034      -0.034      -0.039      -0.029      -0.029      -0.029      -0.029      -0.029      -0.02      -0.015      ...
    -0.015      -0.005      -0.005      -0.02      -0.02      -0.02      -0.015      -0.01      -0.02      -0.02];
%对训练数据进行归一化处理
=premnmx(P);
clc

%创建BP神经网络
net=newff(minmax(Pn),,{'tansig','purelin'},'trainbr');
clc

% 设置训练参数
net.performFcn='sse';
net.trainParam.goal=0.0001;
net.trainParam.show=1;
net.trainParam.epochs=15;
net.trainParam.Mu_max=1e-5;
net.trainParam.min_grad=1e-16;
% net.trainParam.mc=0.95;
net.trainParam.mem_reduc=1;

% 重新初始化网络
net=init(net);            

% 对BP神经网络进行训练
=train(net,Pn,T);

% 对BP神经网络进行仿真分析
Yn=sim(net,Pn);


%计算均方误差
E=T-Yn;
MSE=mse(E);
figure(2);
plot(P,T,'r--',P,Yn,'b-');

[ 本帖最后由 eight 于 2007-8-15 20:41 编辑 ]

jimin 发表于 2007-8-15 20:36

要求 p t 的列数 要一样
搞懂了就不会碰到这个问题了

handb 发表于 2007-8-16 09:27

谢谢jimin,我知道p和t的列数要相等,我给出的网络好用,一组p和一组t没问题,但要是p是两组以上数据,就不行了,因为我的t数据与p数据是一一对应的,不可能出现列数不对的问题。我更想知道曲线是不是可以这样拟合(因为我的p和t数据都不规范),以前我是把p和t分别建网,按fft的结果分别建立目标函数,然后再把两个拟合结果合成为一副图,这样的效果很好,但觉得有点牵强。看了别人的论文,是按我问的情况拟合的,不知道目标数据不理想,拟合的效果能行吗?望解答,谢了!!!

handb 发表于 2007-8-17 11:47

我的问题是试验得到数据(每组100个,有很多组),想用神经网络拟合,看了一篇文献写的比最小二乘拟合精度高,想知道神经网络是如何实现的,哪位高人做过这样的问题,麻烦解答一下,谢谢!
页: [1]
查看完整版本: 神经网络拟合实验曲线问题出现列数不对的错误提示