声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1757|回复: 12

[编程技巧] 大家帮我看看我这段matlab的程序错在哪儿了

[复制链接]
发表于 2007-7-28 14:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
不好意思哦,大家的贴我找了半天还是没能解决问题,所以我又发上来了。要是又发错地方了就请版主

删掉吧,谢谢。

:'(再次恳求大家帮我看看我这段matlab的程序错在哪儿了,谢谢!!!

请帮我看看下面到底哪里错了,万万分感谢!

BP神经网络的训练样本如下:
T1=[0.95 0.88 1.00 0.85 0.98 0.99 0.89]
T2=[0.96 0.85 0.96 0.85 0.87 0.65 0.72]
T3=[0.71 0.86 0.94 0.92 0.94 0.96 0.85]
T4=[0.88 0.80 0.63 0.77 0.79 0.55 0.7]
T5=[0.84 0.96 0.95 0.84 0.83 0.91 0.95]
T6=[0.85 0.93 0.46 0.35 0.85 0.7 0.74]]

样本输出值为:
FT1=[0 0 0 1]
FT2=[0 0 0.1 0.9]
FT3=[0 0 0.7 0.3]
FT4=[0 0.15 0.85 0]
FT5=[0 0 0.4 0.6]
FT6=[0 0.6 0.4 0]

我想用有7个输入节点,5个中间结点,4个输出节点的3层BP神经网络来训练上面的样本,运行后老出现

下面的错误:
??? Error using ==> network/train
Inputs are incorrectly sized for network.
Matrix must have 1 rows.

Error in ==> D:\Matlab Project\evaluate.m
On line 31  ==> [net,tr]=train(net,P,T);

我总觉得是我的输入样本初始化的不对,但是又不知道怎么改了。

我的代码如下:
function evaluate()
clc
%是否P和T写的有问题?
p=[ 0.95 0.88 1.00 0.85 0.98 0.99 0.89;
    0.96 0.85 0.96 0.85 0.87 0.65 0.72;
    0.71 0.86 0.94 0.92 0.94 0.96 0.85;
    0.88 0.80 0.63 0.77 0.79 0.55 0.7;
    0.84 0.96 0.95 0.84 0.83 0.91 0.95;
    0.85 0.93 0.46 0.35 0.85 0.7 0.74];
T=[0 0 0 1;0 0 0.1 0.9;0 0 0.7 0.3; 0 0.15 0.85 0;0 0 0.4 0.6;0 0.6 0.4 0];
P=[p(:,1);p(:,2);p(:,3);p(:,4);p(:,5);p(:,6);p(:,7)]


net=newff([0 1],[7 5 4],{'tansig','logsig','purelin'},'traingdm');

inputWeights=net.IW{1,1}
inputbias=net.b{1}
layerWeights=net.LW{2,1}
layerbias=net.b{2}
net.trainParam.show=50;
net.trainParam.lr=0.05;
net.trainParam.mc=0.5;
net.trainParam.epochs=1000;
net.trainParam.goal=1e-3;


[net,tr]=train(net,P,T);
A=sim(net,P)
E=T-A
MSE=mse(E)
[net,tr]=train(net,P,T);

[ 本帖最后由 eight 于 2007-7-28 21:56 编辑 ]
回复
分享到:

使用道具 举报

发表于 2007-7-28 19:02 | 显示全部楼层
你查一下P 和 T 的列数是相等的么

评分

1

查看全部评分

 楼主| 发表于 2007-7-29 10:11 | 显示全部楼层
哦,好的,谢谢
发表于 2007-7-29 11:14 | 显示全部楼层
2楼可是神经网络方面的专家,照他的意见仔细排查一下。另你说看了大家的例子还没找到问题所在,我实在有些不敢相信。和你一样的网络,别人的程序都是可以的。仔细想想到底为什么,多动手、多思考

[ 本帖最后由 花如月 于 2007-7-29 13:54 编辑 ]
 楼主| 发表于 2007-7-29 11:52 | 显示全部楼层
哦,好的,呵呵,谢谢。第一次用matlab很多看不懂。
发表于 2007-7-29 13:45 | 显示全部楼层
原帖由 花如月 于 2007-7-29 11:14 发表
2楼可是神经网络方面的专家,照他的意见仔细排查一下。另你说看了大家的例子还没找到问题所在,我是在有些不敢相信。和你一样的网络,别人的程序都是可以的。仔细想想到底为什么,多动手、多思考

只能说是走马观花学了几个星期
以我真实的学习历程来看,我很少问问题,并不是我没碰到过问题
自己真正想明白一个问题得到的深刻性和从别人口中答案是完全不一样的
重要的不是得出一个问题的答案,而是要探索一种学习方法
刚开始可能会不习惯,到后来会发现自己找答案会有另一番风味
关于如何进阶的讨论,就等其他朋友来完成了

评分

1

查看全部评分

发表于 2007-7-29 13:57 | 显示全部楼层
Inputs are incorrectly sized for network.
Matrix must have 1 rows.

输入样本对对应不上;
我很少用matlab做ann
因为不论控制还是自适应信号处理
直接利用库函数都存在困难
不如自己编写一个用起来和修改起来都方便

评分

1

查看全部评分

 楼主| 发表于 2007-7-31 13:22 | 显示全部楼层
谢谢大家的帮助,问题基本解决了
发表于 2007-7-31 13:29 | 显示全部楼层

回复 #8 jollyhope 的帖子

希望能把你修改后正确的程序分享一下,改动的地方用蓝色字体标示。可以给其他版友一个参考,也算是分享自己的经验吧,这样别人看了这个帖会觉得更有价值
 楼主| 发表于 2007-7-31 22:17 | 显示全部楼层
恩,好的,改动的地方主要是”训练样本-目标矢量“对的输入格式问题,然后就是把BP改成了两层结构,不好意思我没找到怎么用蓝字标识。

function evaluate3()
clc
P=[1.00 0.90 0.92 0.95 0.85 0.90 0.90 0.95 0.98 0.95 0.90 0.85 1.00 0.96 0.85 0.95 0.90;
   0.85 0.80 0.82 0.80 0.76 0.82 0.82 0.80 0.79 0.84 0.80 0.75 0.80 0.81 0.76 0.78 0.80;
   0.73 0.72 0.70 0.68 0.70 0.75 0.70 0.72 0.71 0.75 0.81 0.70 0.72 0.73 0.62 0.72 0.71;
   0.62 0.58 0.56 0.52 0.42 0.58 0.60 0.58 0.60 0.58 0.55 0.56 0.66 0.58 0.46 0.55 0.56;
   0.96 0.90 0.86 0.85 0.70 0.86 0.90 0.82 0.92 0.96 0.95 0.76 0.96 0.90 0.86 0.92 0.88;
   0.84 0.82 0.80 0.78 0.62 0.80 0.82 0.86 0.78 0.80 0.90 0.72 0.81 0.80 0.70 0.80 0.78;
   0.70 0.72 0.68 0.62 0.60 0.80 0.65 0.70 0.68 0.70 0.66 0.70 0.80 0.70 0.60 0.66 0.68;
   0.60 0.58 0.50 0.46 0.40 0.56 0.58 0.52 0.55 0.54 0.52 0.50 0.62 0.56 0.46 0.52 0.58;
   0.90 0.85 0.86 0.76 0.80 0.86 0.85 0.86 0.89 0.87 0.86 0.70 0.92 0.90 0.86 0.85 0.86;
   0.84 0.82 0.76 0.72 0.62 0.78 0.82 0.78 0.86 0.76 0.78 0.80 0.76 0.81 0.70 0.80 0.82;
   0.70 0.72 0.66 0.62 0.60 0.75 0.72 0.70 0.75 0.68 0.70 0.58 0.70 0.68 0.66 0.75 0.72;
   0.63 0.50 0.40 0.52 0.50 0.58 0.60 0.40 0.50 0.50 0.58 0.50 0.60 0.50 0.40 0.55 0.50]';
   
   
T=[0.94 0.80 0.72 0.57 0.90 0.80 0.69 0.55 0.87 0.80 0.70 0.50];
threshold=[0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1];
net=newff(threshold,[5 1],{'tansig','purelin'},'traingdm');

%学习率
net.trainParam.lr=0.01;
net.trainParam.mc=0.5;
net.trainParam.epochs=8000;
%训练次数
net.trainParam.goal=0.001;
net.trainParam.show=50;

[net,tr]=train(net,P,T);   

T7=[0.94 0.92 0.88 0.86 0.70 0.82 0.89 0.86 0.94 0.92 0.96 0.72 0.95 0.92 0.88 0.90 0.92;
   0.83 0.80 0.81 0.75 0.62 0.90 0.82 0.85 0.76 0.82 0.85 0.80 0.76 0.81 0.78 0.82 0.80;
   0.72 0.70 0.66 0.65 0.60 0.82 0.70 0.68 0.72 0.68 0.70 0.64 0.81 0.70 0.65 0.72 0.68;
   0.60 0.56 0.52 0.40 0.42 0.58 0.50 0.56 0.55 0.52 0.56 0.46 0.60 0.52 0.50 0.56 0.55]'
Y=sim(net,T7)

评分

1

查看全部评分

 楼主| 发表于 2007-7-31 22:24 | 显示全部楼层
其实我需要自己写一个程序用来对**装备根据它的一些指标对其进行综合评价,然后觉得想用神经网络来解决这个问题,但是由于不知道这种想法可不可行,所以不敢贸然写个程序,于是发现了matlab这个工具,想用它模拟一下以说明我的想法可行,然后用百度搜到了振动,然后我觉得非常有收获,希望以后多多关照,谢谢。
发表于 2007-7-31 22:28 | 显示全部楼层
不敢贸然写个程序
大胆写吧
不去试怎么知道对不对呢
年轻没有什么不可以
年轻没有失败

评分

1

查看全部评分

 楼主| 发表于 2007-7-31 22:34 | 显示全部楼层
恩,呵呵,谢谢你的建议
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-18 20:34 , Processed in 0.079046 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表