maitlab里RBF神经网络预测问题,程序代码出错了,怎么解决?
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/11 00:45:09
t_data=[0.1 0.68668 0.67143 0.79999 0.79091;
0.36667 0.58001 0.1 0.7 0.71818;
0.26 0.47334 0.1 0.29997 0.2091;
0.36667 0.9 0.9 0.29997 0.13637;
0.26 0.84668 0.67143 0.1 0.42727;
0.36667 0.58001 0.44286 0.49999 0.1;
0.15333 0.47334 0.44286 0.7 0.42727;
0.1 0.84668 0.67143 0.29997 0.5;
0.15333 0.42 0.21429 0.49999 0.5;
0.20667 0.79335 0.21429 0.59999 0.5;
0.1 0.42 0.21429 0.9 0.5;
0.1 0.84668 0.32857 0.59999 0.5;
0.20667 0.47334 0.32857 0.29997 0.13637;
0.1 0.68668 0.67143 0.49999 0.24546;
0.42 0.58001 0.21429 0.9 0.9;
0.31334 0.58001 0.44286 0.49999 0.31818;
0.15333 0.42 0.1 0.19999 0.35454;
0.20667 0.47334 0.32857 0.29997 0.31818;
0.15333 0.68668 0.44286 0.29997 0.31818;
0.20667 0.20667 0.21429 0.39999 0.28183;
0.26 0.79335 0.21429 0.49999 0.57273;
0.42 0.36667 0.1 0.59999 0.35454;
0.47334 0.36667 0.1 0.59999 0.57273;
0.1 0.47334 0.67143 0.7 0.42727;
0.42 0.58001 0.67143 0.49999 0.24546;
0.31334 0.1 0.32857 0.9 0.79091;
0.1 0.52667 0.21429 0.9 0.5;
0.52667 0.55867 0.21429 0.1 0.28183;
0.9 0.58001 0.55715 0.1 0.17273;
0.15333 0.68668 0.62572 0.29997 0.2091];
tt=[0.40004 0.20001 0.80009 0.37504 0.55006 0.60006 0.1 0.55006 0.32503 0.45005 0.27502 0.50005 0.20001 0.42504 0.25002 0.55006 0.27502 0.40004 0.52506 0.9 0.30003 0.35003 0.49894 0.47505 0.8501 0.50005 0.42504 0.32503 0.57506];
我是用RBF神经网络做预测,为什么我输入,输出,编完码后出现了? Error using ==> newrb at 86
Inputs and Targets have different numbers of columns.的问题,该怎么解决啊,写毕设,有点急,麻烦大家帮帮忙啊,谢谢各位了!
我看了下:
size(t_data)=30 5;
size(tt)=1 29;
我估计 你在tt 中少写了个数据,你加上缺的那个数据,然后
写:net=newrb(t_data',tt,err_goal,sc,200,1);%注意这里将t_data转置了的
就这样就可以了
再问: 恩,谢谢你,这个问题已经解决了,我发现我的列向量没有对上。现在又出现了一个问题,我想问问在rbf神经网络里有没有定义输出数值范围的语句啊,怎么定义啊? 就是我现在想要他的输出值在[0 1]的范围里应该怎么做呢?谢谢啦,写毕设,着急,麻烦帮帮忙!
再答: 对于输出值得范围,因为rbf神经网络的输出层是采用的线性函数,所以是多少值输出就为多少,如果在训练中网络输出值和期望值相差比较大,多半是因为你网络没设计好或者数据样本有问题;如果在训练过程中拟合的很好,但遇到新样本又不能很好的拟合,或许就存在过拟合的因素,但我对rbf 不是很熟,对bp 比较熟悉
再问: 《基于BP煤矿安全评价_杨涛》这篇文献中用的就是bp神经网络,在5.3中,我的论文和他的很像但是我得用RBF神经网络,也想像他那样输出值是在[0 1]的数,这样可以写成(竖着看)[1 0 0 0 0;0 0 0 01 0;1 0 0 0 0],就和目标输出一样了,就可以进行评价了,你可不可以帮我看看在RBF里应该怎样弄啊,我实在是写论文不会着急24号就要交了,就卡在这了,麻烦你了,万分感谢!
再答: 他的输出为[0,1],是因为他的输出层采用的传递函数范围为(0,1),你这rbf 输出函数值域为无穷,所以你可以这样:就假如你这是故障判别吧,你把每一种故障用一个数字来表示,分别为1,2,3,,,,;就这样,这样期望值就变成[1 2 3 4,,,,]这样的形式。这样就可以了
再问: 太感谢你了,我试了一下,恩,好像还可以,可是为什么我的等级只有5级,即1,2,3,4,5。可是检验数据输出结果却有6.4625呢? 还有就是RBF里就不可以像bp里那样输出的数值是[0 1]之间的吗?有没有编码语言可以定义呢? 麻烦你了
再答: 对于你的第一问:因为我对rbf神经网络不很熟,所以只是给点建议,你尝试多用几个扩展系数sc和均方误差err_goal ,即改变下他们的值,看看为什么值是误差较小; 比如sc=1,sc=2 对于你的第二问:我认为不行,还是那句话,rbf神经网络的输出层传递函数决定了他的输出值范围 (或许你可以试试把输出归一化)
再问: 可是输出值归一化,只能对目标输出进行归一化,怎么对训练后的输出值进行归一化啊?还有你看看我的图对吗感觉好像哪里不对啊?谢谢啦,麻烦你了
再答: 在matlab2010 即以上版本里,有个归一化函数mipminmax();但这个是将值归一化到[-1,1]; 对于你的问题,你没必要也不用像bp 神经网络那样把输出归一化,你 提到的那个bp神经网络应用实例中,它的输出传递函数决定了输出值的取值范围, 所以它的输出自然而然就为[0.1]; 而你这个rbf神经网络输出函数为purelin();他输出值大于一很正常; 再说了。对于归一化,不是像你这样弄得,归一化是先将训练数据(包括输入和输出,等)全部归一化,然后将归一化后的数据用于网络训练,最后将网络输出值反归一化,得到最终结果; 你上面那图本身没什么问题,它达到了预期要求的;
再问: 非常感谢你,我知道RBF神经网络的输出值大于1是属于正常的,但是如果输出值不再在[0 1],我就没有办法确定等级了,你的意思是不是RBF输出函数决定了他的输出值不能像上图那样在[0 1]之间啊?
为我出的图和下图不一样啊,下图很平缓,而我的却突然下降了很多,是什么原因啊?谢谢你了,回头给你加10分,万分感谢,
再答: “你的意思是不是RBF输出函数决定了他的输出值不能像上图那样在[0 1]之间啊?” 对于这句话:你的输出值该为多少就是多少,比如你用来训练时 期望输出都在[0,1] 之间,那么如果网络训练成功了,对于新输入样本,其输出值也在[0,1] 之间; 你说两幅图 看起来不一样,这是正常的,因为网络的初始权值是随机的,所以网络起始收敛点不一样,经过的迭代次数及迭代曲面的路径也就不一样,但只要最后收敛了,达到了期望指标,都无所谓的。对结果没什么大的影响,只有细微的差别,在一定精度范围内是可以忽略的
再问: 你好,我知道了想我这样的问题应该用RBF神经网络里的概率神经网络,《基于MATLAB的RBF神经网络在分类中的应用》(2)故障诊断那和我的差不多,但是我没弄出来,弄了几次都错了,你能不能帮我看看那个编码是怎么写出来的啊,因为我对matlab也不太懂,麻烦你了,谢谢啦,马上就要交论文了,麻烦你帮帮我!