基于长短期神经网络LSTM的飞行轨迹跟踪预测,基于长短期神经网络LSTM的三维路径预测

目录
背影
摘要
LSTM的基本定义
LSTM实现的步骤
基于长短期神经网络LSTM的飞行轨迹跟踪
完整代码: https://download.csdn.net/download/abc991835105/87705046
效果图
结果分析
展望
参考论文

背影

路径追踪预测,对实现自动飞行驾驶拥有重要意义,长短期神经网络是一种改进党的RNN神经网络,克服了梯度爆炸的问,飞行轨迹也是一种时间序列的数据,用LSTM神经网络进行预测,准确率更高
摘要
LSTM原理,MATALB编程长短期神经网络LSTM的飞行轨迹预测。

LSTM的基本定义

LSTM是一种含有LSTM区块(blocks)或其他的一种类神经网络,文献或其他资料中LSTM区块可能被描述成智能网络单元,因为它可以记忆不定时间长度的数值,区块中有一个gate能够决定input是否重要到能被记住及能不能被输出output。
图1底下是四个S函数单元,最左边函数依情况可能成为区块的input,右边三个会经过gate决定input是否能传入区块,左边第二个为input gate,如果这里产出近似于零,将把这里的值挡住,不会进到下一层。左边第三个是forget gate,当这产生值近似于零,将把区块里记住的值忘掉。第四个也就是最右边的input为output gate,他可以决定在区块记忆中的input是否能输出 。
图1 LSTM模型
图1 LSTM模型
LSTM有很多个版本,其中一个重要的版本是GRU(Gated Recurrent Unit),根据谷歌的测试表明,LSTM中最重要的是Forget gate,其次是Input gate,最次是Output gate

训练方法

为了最小化训练误差,梯度下降法(Gradient descent)如:应用时序性倒传递算法,可用来依据错误修改每次的权重。梯度下降法在递回神经网络(RNN)中主要的问题初次在1991年发现,就是误差梯度随着事件间的时间长度成指数般的消失。当设置了LSTM 区块时,误差也随着倒回计算,从output影响回input阶段的每一个gate,直到这个数值被过滤掉。因此正常的倒传递类神经是一个有效训练LSTM区块记住长时间数值的方法。

lstm的步骤

1 , LSTM的第一步是确定我们将从单元状态中丢弃哪些信息,这个策略有一个被称为遗忘门的sigmoid层决定。输入ht-1和xt遗忘门对应单元状态ct-1中每个数输出一个0到1之间的数字。1代表“完全保持”,0表示“完全遗忘”。

让那个我们回到我们的语言模型例子中尝试基于所有之前的词预测下一个词是什么。在这个问题中,单元状态中可能包括当前主题的性别,因此可以预测正确代词。当我们看到一个新的主题的性别时,我们想要忘记旧主题的性别。

=(W*[h-1,x]+b)

下一步将决定我们在单元状态中保存那些新信息。包括两个部分;第一”输入门层”的sigmoid层决定我们将更新那些值,第二,tanh层创建可以添加到状态的新候选值ct-1的向量。在下一步中,我们将结合这两个来创建状态更新。

在我们语言模型的例子中,我们想要将新主题的性别添加到单元格状态,以替换我们忘记的旧主题

=(W*[h-1,x]+b)

=tanh(W*[h-1,x]+b)

现在是时候将旧的单元状态ct-1更新为新的单元状态ct,之前的步骤已经决定要做什么,我们只需要实际做到这一点。我们将旧状态乘以ft,忘记我们之前决定忘记的事情,然后我们添加*Ct .这是新的候选值,根据我们的决定更新每个州的值来缩放。

在语言模型的情况下,我们实际上放弃了关于旧主题的性别的信息并添加新信息,正如我们在前面的步骤中所做的那样。

C=C-1+(1-)

最后,我们需要决定我们要输出的内容,此输出将基于我们的单元状态,但将是过滤版本,首先,我们运行一个sigmoid层,它决定我们要输出的单元状态的哪些部分,然后我们将单元状态设置为tanh(将值推到介于-1和1之间)并将其乘以sigmoid门的输出,以便我们只输出我们决定的部分。

对于语言模型示例,由于它只是看到一个主题,他可能想要输出与动物相关的信息,以防接下来会发生什么,例如,他输出主语是单数还是复数,一边我们知道动词应该与什么形式供轭。

O=(W[h-1,x]+b)

h=O*tanh©

​基于MATLAB编程的lstm长短期神经网络的股票价格预测

%% LSTM network
%% import data
clc
clear
close all
%读取double格式数据
[num2,ax,ay] = xlsread(‘CSH9148-1123.xlsx’,1);
num2(:,1:2) = [];
n = length(num2);
num = [];
panx=4;
for ii = 1:n-panx
num = [num;[reshape(num2(ii:ii+panx-1,:),1,panx*3) num2(ii+panx,:)]];
end
n = randperm(length(num));
m = length(n)-1256;
input_train =num(n,1:12);%训练数据输出数据
output_train = num(n,13:15);%训练数据输入数据
input_test = num((m+1:end),1:12);%测试数据输出数据
output_test = num((m+1:end),13:15);%测试数据输入数据
[inputn,inputps]=mapminmax(input_train’,-1,1);%训练数据的输入数的归一化
[outputn,outputps]=mapminmax(output_train’,-1,1);%训练数据的输出数据的归一化de
inputn_test=mapminmax(‘apply’,input_test’,inputps);

%% Define Network Architecture
% Define the network architecture.
numFeatures = 12;%输入层维度
numResponses = 3;%输出维度
% 200 hidden units
numHiddenUnits = 50;%第一层维度
% a fully connected layer of size 50 & a dropout layer with dropout probability 0.5
layers = [ …
sequenceInputLayer(‘’numFeatures‘’)%输入层
lstmLaye(numHiddenUnits,‘OutputMode’,‘sequence’)%第一层
fullyConnectedLayer(30)%链接层
dropoutLayer(0.2)%遗忘层
fullyConnectedLayer(numResponses)%链接层
regressionLayer];%回归层

% Specify the training options.
% Train for 60 epochs with mini-batches of size 20 using the solver ‘adam’
maxEpochs = 60;%最大迭代次数
miniBatchSize = 20;%最小批量
% the learning rate == 0.01

% set the gradient threshold to 1
% set ‘Shuffle’ to ‘never’
options = trainingOptions(‘adam’, … %解算器
‘MaxEpochs’,maxEpochs‘’, … %最大迭代次数
‘MiniBatchSize’,miniBatchSize, … %最小批次
‘InitialLearnRate’,0.01, … %初始学习率
‘GradientThreshold’,1, … %梯度阈值
‘Shuffle’,‘every-epoch’, … %打乱顺序
‘Plots’,‘training-progress’,… %画图
‘Verbose’,0); %不输出训练过程

%% Train the Network
net = trainNetwork(inputn,outputn,layers,options);%开始训练

%% Test the Network
y_pred = predict(net,inputn_test,‘MiniBatchSize’,20)‘;%测试仿真输出
y_pred=(mapminmax(‘reverse’,y_pred’,outputps))‘;
% y_pred0 = predict(net,inputn,‘MiniBatchSize’,1)’;%训练拟合值
% y_pred0=(mapminmax(‘reverse’,y_pred0’,outputps))';
y_pred=(double(y_pred));
figure%打开一个图像窗口
plot(y_pred(:,1),‘k-’)%黑色实线,点的形状为*
hold on%继续画图
plot(output_test(:,1),‘r–’)%红色实线,点的形状为o
hold off%停止画图
title(‘测试图’)%标题
ylabel(‘经度’)%Y轴名称
legend(‘测试值’,‘实际值’)%标签

figure%打开一个图像窗口
plot(y_pred(:,2),‘k-’)%黑色实线,点的形状为*
hold on%继续画图
plot(output_test(:,2),‘r–’)%红色实线,点的形状为o
hold off%停止画图
title(‘测试图’)%标题
ylabel(‘纬度’)%Y轴名称
legend(‘测试值’,‘实际值’)%标签

figure%打开一个图像窗口
plot(y_pred(:,3),‘k-’)%黑色实线,点的形状为*
hold on%继续画图
plot(output_test(:,3),‘r–’)%红色实线,点的形状为o
hold off%停止画图
title(‘测试图’)%标题
ylabel(‘高度’)%Y轴名称
legend(‘测试值’,‘实际值’)%标签

error1 = y_pred-output_test;%误差
figure
plot(error1(:,1),‘k-’)
title(‘经度测试误差图’)
ylabel(‘误差’)

figure
plot(error1(:,2),‘k-’)
title(‘纬度测试误差图’)
ylabel(‘误差’)

figure
plot(error1(:,3),‘k-’)
title(‘高度测试误差图’)
ylabel(‘误差’)

[MSE,RMSE,MBE,MAE ] =MSE_RMSE_MBE_MAE(output_test,y_pred);
MSE = mean(MSE)
RMSE = mean(RMSE)
MBE = mean(MBE)
MAE = mean(MAE)

result_table = table;
result_table.sim = y_pred;
result_table.true = output_test;
writetable(result_table,‘./结果.csv’)

结果图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

结果分析

从图中可以看出来,基于长短期神经网络三维路径跟踪,预测准确,泛发性好

展望

长短期神经网络在处理有时间关联性的问题方面,拥有独特的优势,预测结果更平滑,稳定,并且可调参,路径跟踪属于时间序列的数据,,LSTM可以和其他是算法结合,比如粒子群优化LSTM参数,DBN+LSTM,等

参考论文

百科

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
基于长短期神经网络LSTM的叶绿素-a预测模型是一种用于预测水体中叶绿素-a浓度的方法。这个模型可以捕捉各种因素与叶绿素-a之间的相关性,并自适应地捕获来自先前时间间隔的动态时间信息以进行预测。通过使用LSTM神经网络,该模型可以更好地处理时间序列数据,特别适用于预测水体中叶绿素-a浓度这种时间相关的数据。基于MATLAB编程,使用LSTM进行叶绿素-a预测的代码已经被开发出来,并且具有完整的数据和注释,方便扩展应用。这种方法的优势在于它可以根据过去的数据来预测未来的叶绿素-a浓度变化,有助于水质监测和管理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [论文笔记:Unsteady Multi-Element Time Series Analysis and Prediction Based on Spatial-Temporal ...](https://blog.csdn.net/qq_40206371/article/details/122543045)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [基于长短期神经网络LSTM的公交站客流量预测](https://download.csdn.net/download/abc991835105/88184734)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神经网络机器学习智能算法画图绘图

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值