15.使用matlab的神经网络工具箱进行轨迹预测

经过调查研究,分析衡量,最终选取反向传播算法进行预测,轨迹预测系统的创新点在第12篇。

在百度上找bp算法的实现代码,发现matlab的神经网络工具箱特别好用。

matlab有自己的优势,也有其局限。优势在于脚本式编程,简单易学、调试方便。局限就是灵活性不够,难以扩展和改进算法内部,无法移植成其他代码,也没法进行服务器编程(其实能,但是是个超级大的坑),效率也是问题。

为了偷懒省下自己开发bp算法的工作量,就开心的勉强使用matlab吧,放弃开发b/s架构的系统,把优化算法内部放在下次。系统分成4个主要模块,分别是预处理模块、训练模块、预测模块、测试模块。以后的研究只要重新实现这4个模块就可以了,至少不用改架构。下面的内容分成两块,神经网络工具箱的使用,和实现过程中遇到的坑。

一、跳过对4个模块的解释,直接说神经网络工具箱怎么用。

matlab肯定是装最新版啦,可是从某一版开始神经网络工具箱的用法整个有修改,我就不对比了,直接说最新版的用法

1.数据归一化,反归一化

[p1,minmaxp]=mapminmax(P_train,-1,1);%参数是原始训练数据,归一化的范围,返回归一化后的数据和归一化参数,后面还要反归一化
[t1,minmaxt]=mapminmax(T_train,-1,1);%标签数据,和训练数据一一对应
c=mapminmax('reverse',b,minmaxt);%反归一化,用于预测结果

2.初始化网络

net=newff(p1,t1,[4,10,4],{'tansig','tansig','tansig','purelin'},'trainlm');

参数是训练集,标签集,层数,每层的激活函数,误差传播方法。这里注意层数这个东西,最后会自动加上一个输出层,不用自己设计输出层。ps:原理性的东西去别处找吧

3.参数设置

net.trainParam.epochs = 5000;%设置训练次数
net.trainParam.goal=0.000000002;%设置收敛误差,1秒是30米,误差大概设定为3秒,大概8.3e-4度,归一化后大概是4.6e-6,这种计算方式好像不对
net.trainParam.min_grad=1e-9;%最小梯度,这是个坑
net.trainParam.max_fail=10;% 最小确认失败次数 

4.开始训练

[net,tr]=train(net,p1,t1);

5.使用训练好的网络预测

b=sim(net,a);
c=mapminmax('reverse',b,minmaxt);%还记得前面的反归一化吗

二、实际操作时遇到的坑

1.先说说归一化这件事,因为数据的单位不统一,所以需要归一化。也有说反向传播网络的激活函数只支持0到1的数据,某些支持-1到1,例如我用的激活函数。其他激活函数,或者误差传播方法也请去别处查找。

反正归一化一定要做,不然结果肯定不准

2.matlab的datanum是按天算的,interval=(1/24)*(1/2);这是30分钟的意思

3.Gradient

这个参数网上给的解释只有两个字“梯度”,更具体的都是原理上的解释,谁也没说怎么设置。我自己摸索出来的,看上面1.3

4.训练目标,这个问题非常坑。我本来以为这个是标签要达到的精度,那样算一算实际精度,加上归一化,也就差不多了。先回到归一化,如果用地理经度作为标签,取值范围是-180到180,精度是小数点第6位,归一化成-1到1,精度大概是小数点第9位。训练目标大概就选到小数点第9位吧,那按字面理解梯度要比精度低吧,不然改变一个梯度就超过训练目标位置了。这也是为什么上面费劲找怎么设置梯度。

可是后来我发现了训练误差这个指标,就是图中的“Mean Squared Error”均方误差。而训练目标大概就是这个误差的程度,一下子整个人都崩了,根本不知道怎么设置训练精度。现在仍然不会哭


5.反归一化,这个不难,只是要记得保存之前的归一化参数,不然你用什么反归一化呢

6.其实训练一半打断了或者有新数据进来,是可以继续训练的,但是一定要注意新数据要采用旧数据的归一化标准,因为归一化标准不统一肯定不行,按新数据的标准归一化就相当于改变了旧数据归一化后的结果,也是不行。



都是一脚一脚踩出来的坑啊,等我顺利毕业的,把源代码放出来大家参考下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值