基于两输出一输入BP神经网络的传感器检测数据融合(附带MATLAB代码)

简介: 基于两输出一输入BP神经网络的传感器检测数据融合(附带MATLAB代码)

0.png

1.0 红外光传感器检测数据融合

  • 由于红外光在介质中的传播速度受到温度等环境因素影响,为获得较准确的测量结果需要对红外测距系统的测量数据进行处理。
  • 为确定某一红外测距传感器系统的数据处理算法,利用该测距系统进行如下实验:在不同温度下将目标放置不同的距离分别进行测距,每一温度下对同一目标连续测量5次,测量的实验数据见附表所示。
  • 请利用BP神经网络完成该系统的数据处理。

1.png

注:为说明问题上述数据扩大了温度对结果的影响。

2.0 网络结构设计:

  • 由于输入向量有2个元素、输出向量有1个元素,所以网络输入层的神经元有2个,输出层神经元数目为1。
  • 神经网络是误差后身传播神经网络,其隐含层结构的层数与各层的节点数直接影响网络性能的优劣。若隐层数较多,网络所表达的映射就越复杂,不仅增大计算量,而且易导致数据失真;若各隐含层的节点数较多,会使其学习时间过长,误差也不一定最小,若节点数较少,会导致网络容错性较差,局部极小就多。因此,隐含层是网络结构设计的重要问题。

3.0 网络结构设计:

  • 隐含层数设计:
  • 隐含层的层数应大于1层,可由下式试算:



其中,N为隐层层数;J为输出层神经元个数;I为输入层神经元个数;K为标准样本个数。本例取1层隐层。


隐含层神经元个数设计:

隐含层节点个数设计相对于隐含层数的设计比较复杂,一般有基于最小二乘设计法、基于黄金分割设计法等。本例取:M=2n+1,其中n输入层神经元的个数。


作用函数设计:

隐层作用函数取正切S型传递函数tansig函数,即:




输出层作用函数取对数S型传递函数logsig函数,即:

  • 学习算法设计:

traingdm是带动量的梯度下降法、trainlm是指L-M优化算法、trainscg是指量化共辄梯度法等,本例选择trainlm学习算法。


  • 输入/输出向量设计:

根据已知条件,可将目标距离的理论值作为对测量温度和测量值的一个映射(二元函数)。由此,可以确定网络的输入为2维向量,且该网络为单输出神经网络。

  • 训练样本和测试样本设计:

题给数据共30组,可在同类(共六类)数据组中各挑选一个样本,从而得到六个测试样本,构成测试样本集。剩余24组数据可作为训练样本集。

%% 此程序为matlab编程实现的BP神经网络
% 清空环境变量
clear;clc;close all
%% 第一步 读取数据,输入2维输出1维
input=[20 20 20 20 45 45 45 45 20 20 20 20 45 45 45 45 20 20 20 20 45 45 45 45 20 45 20 45 20 45
    756.575 770.997 765.326 762.908 778.058 768.418 767.072 753.332 869.189 837.808 846.641 850.121 886.931 896.766 855.983 844.269 975.678 936.677 953.530 936.952 969.696 966.840 967.399 991.950 762.734 754.777 871.750 878.671 972.731 960.165];
output=[750 750 750 750 750 750 750 750 850 850 850 850 850 850 850 850 950 950 950 950 950 950 950 950 750 750 850 850 950 950];
%% 第二步 设置训练数据和预测数据
input_train = input(:,1:24);
output_train =output(:,1:24);
input_test = input(:,25:30);
output_test =output(:,25:30);
%节点个数
inputnum=2; % 输入层节点数量
hiddennum=5;% 隐含层节点数量
outputnum=1; % 输出层节点数量
%% 第三本 训练样本数据归一化
[inputn,inputps]=mapminmax(input_train);%归一化到[-1,1]之间,inputps用来作下一次同样的归一化
[outputn,outputps]=mapminmax(output_train);
%% 第四步 构建BP神经网络
net=newff(inputn,outputn,hiddennum,{'tansig','purelin'},'trainlm');% 建立模型,传递函数使用purelin,采用梯度下降法训练
W1= net. iw{1, 1};%输入层到中间层的权值
B1 = net.b{1};%中间各层神经元阈值
W2 = net.lw{2,1};%中间层到输出层的权值
B2 = net. b{2};%输出层各神经元阈值
%% 第五步 网络参数配置( 训练次数,学习速率,训练目标最小误差等)
net.trainParam.epochs=1000;         % 训练次数,这里设置为1000次
net.trainParam.lr=0.01;                   % 学习速率,这里设置为0.01
net.trainParam.goal=0.00001;                    % 训练目标最小误差,这里设置为0.00001
%% 第六步 BP神经网络训练
net=train(net,inputn,outputn);%开始训练,其中inputn,outputn分别为输入输出样本
%% 第七步 测试样本归一化
inputn_test=mapminmax('apply',input_test,inputps);% 对样本数据进行归一化
%% 第八步 BP神经网络预测
an=sim(net,inputn_test); %用训练好的模型进行仿真
%% 第九步 预测结果反归一化与误差计算     
test_simu=mapminmax('reverse',an,outputps); %把仿真得到的数据还原为原始的数量级
error=test_simu-output_test;      %预测值和真实值的误差
%%第十步 真实值与预测值误差比较
figure('units','normalized','position',[0.119 0.2 0.38 0.5])
plot(output_test,'bo-')
hold on
plot(test_simu,'r*-')
hold on
plot(error,'square','MarkerFaceColor','b')
legend('期望值','预测值','误差')
xlabel('数据组数')
ylabel('样本值')
title('BP神经网络测试集的预测值与实际值对比图')
[c,l]=size(output_test);
MAE1=sum(abs(error))/l;
MSE1=error*error'/l;
RMSE1=MSE1^(1/2);
disp(['-----------------------误差计算--------------------------'])
disp(['隐含层节点数为',num2str(hiddennum),'时的误差结果如下:'])
disp(['平均绝对误差MAE为:',num2str(MAE1)])
disp(['均方误差MSE为:       ',num2str(MSE1)])
disp(['均方根误差RMSE为:  ',num2str(RMSE1)])

4. BP代码运行结果

4.1 预测值和真实值的误差计算(MAE、MSE、MRSE)

4.1.png

4.2 BP网络训练的性能分析图像

  • 预测值和真实值、误差的分析图像
  • 4.2.png
  • 训练集、验证集、测试集和总体的均方误差随训练次数的变化图像

注:小圆圈位置代表终止的训练次数(即代数)处的均方误差

4.2.1.png

  • BP神经网络各阶段的训练图像

4.2.2.png

  • 各个样本集和总体的相关性分析图像

4.2.3.png

5.0 总结

通过以上内容我们对两输出一输入BP神经网络设计有了初步了解,大家可以根据自己的需要设计合适的多输出多输入的传感器检测数据融合。

在以后的博文中我们将学会用NodeMCU和arduino物联网交互使用,从而实现对外部世界进行感知,充分认识这个有机与无机的环境,科学地合理地进行创作和发挥效益,然后为人类社会发展贡献一点微薄之力。

——————————

目录
相关文章
用MASM32按Time Protocol(RFC868)协议编写网络对时程序中的一些有用的函数代码
用MASM32按Time Protocol(RFC868)协议编写网络对时程序中的一些有用的函数代码
|
26天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于BP神经网络的苦瓜生长含水量预测模型matlab仿真
本项目展示了基于BP神经网络的苦瓜生长含水量预测模型,通过温度(T)、风速(v)、模型厚度(h)等输入特征,预测苦瓜的含水量。采用Matlab2022a开发,核心代码附带中文注释及操作视频。模型利用BP神经网络的非线性映射能力,对试验数据进行训练,实现对未知样本含水量变化规律的预测,为干燥过程的理论研究提供支持。
|
7天前
|
机器学习/深度学习 计算机视觉 网络架构
【YOLO11改进 - C3k2融合】C3k2DWRSeg二次创新C3k2_DWR:扩张式残差分割网络,提高特征提取效率和多尺度信息获取能力,助力小目标检测
【YOLO11改进 - C3k2融合】C3k2DWRSeg二次创新C3k2_DWR:扩张式残差分割网络,提高特征提取效率和多尺度信息获取能力,助力小目DWRSeg是一种高效的实时语义分割网络,通过将多尺度特征提取分为区域残差化和语义残差化两步,提高了特征提取效率。它引入了Dilation-wise Residual (DWR) 和 Simple Inverted Residual (SIR) 模块,优化了不同网络阶段的感受野。在Cityscapes和CamVid数据集上的实验表明,DWRSeg在准确性和推理速度之间取得了最佳平衡,达到了72.7%的mIoU,每秒319.5帧。代码和模型已公开。
【YOLO11改进 - C3k2融合】C3k2DWRSeg二次创新C3k2_DWR:扩张式残差分割网络,提高特征提取效率和多尺度信息获取能力,助力小目标检测
|
25天前
|
机器学习/深度学习 网络架构 计算机视觉
目标检测笔记(一):不同模型的网络架构介绍和代码
这篇文章介绍了ShuffleNetV2网络架构及其代码实现,包括模型结构、代码细节和不同版本的模型。ShuffleNetV2是一个高效的卷积神经网络,适用于深度学习中的目标检测任务。
61 1
目标检测笔记(一):不同模型的网络架构介绍和代码
|
10天前
|
机器学习/深度学习 搜索推荐 安全
深度学习之社交网络中的社区检测
在社交网络分析中,社区检测是一项核心任务,旨在将网络中的节点(用户)划分为具有高内部连接密度且相对独立的子群。基于深度学习的社区检测方法,通过捕获复杂的网络结构信息和节点特征,在传统方法基础上实现了更准确、更具鲁棒性的社区划分。
25 7
|
26天前
|
机器学习/深度学习 算法 5G
基于BP神经网络的CoSaMP信道估计算法matlab性能仿真,对比LS,OMP,MOMP,CoSaMP
本文介绍了基于Matlab 2022a的几种信道估计算法仿真,包括LS、OMP、NOMP、CoSaMP及改进的BP神经网络CoSaMP算法。各算法针对毫米波MIMO信道进行了性能评估,通过对比不同信噪比下的均方误差(MSE),展示了各自的优势与局限性。其中,BP神经网络改进的CoSaMP算法在低信噪比条件下表现尤为突出,能够有效提高信道估计精度。
34 2
|
7天前
|
机器学习/深度学习 计算机视觉 网络架构
【YOLO11改进 - C3k2融合】C3k2融合DWRSeg二次创新C3k2_DWRSeg:扩张式残差分割网络,提高特征提取效率和多尺度信息获取能力,助力小目标检测
【YOLO11改进 - C3k2融合】C3k2融合DWRSDWRSeg是一种高效的实时语义分割网络,通过将多尺度特征提取方法分解为区域残差化和语义残差化两步,提高了多尺度信息获取的效率。网络设计了Dilation-wise Residual (DWR) 和 Simple Inverted Residual (SIR) 模块,分别用于高阶段和低阶段,以充分利用不同感受野的特征图。实验结果表明,DWRSeg在Cityscapes和CamVid数据集上表现出色,以每秒319.5帧的速度在NVIDIA GeForce GTX 1080 Ti上达到72.7%的mIoU,超越了现有方法。代码和模型已公开。
|
18天前
|
编解码 算法 数据安全/隐私保护
基于BP译码的LDPC误码率matlab仿真,分析码长,码率,信道对译码性能的影响,对比卷积码,turbo码以及BCH码
本程序系统基于BP译码的LDPC误码率MATLAB仿真,分析不同码长、码率、信道对译码性能的影响,并与卷积码、Turbo码及BCH编译码进行对比。升级版增加了更多码长、码率和信道的测试,展示了LDPC码的优越性能。LDPC码由Gallager在1963年提出,具有低复杂度、可并行译码等优点,近年来成为信道编码研究的热点。程序在MATLAB 2022a上运行,仿真结果无水印。
52 0
|
2月前
|
机器学习/深度学习 数据采集 网络安全
使用Python实现深度学习模型:智能网络安全威胁检测
使用Python实现深度学习模型:智能网络安全威胁检测
173 5
|
2月前
|
安全 C#
某网络硬盘网站被植入传播Trojan.DL.Inject.xz等的代码
某网络硬盘网站被植入传播Trojan.DL.Inject.xz等的代码

热门文章

最新文章