数学建模学习(44):BP神经网络经典应用,详细讲解配matlab代码

简介: 数学建模学习(44):BP神经网络经典应用,详细讲解配matlab代码

文章目录

题目

要求设计一个BP网络,逼近函数g(x)=1+sin(kpi/2x),实现对该非线性函数的逼近。其中,分别令k=2,3,6进行仿真,通过调用参数得出信号的频率与隐含层借点之间,隐含层节点与函数逼近能力之间的关系。

解析

假设频率参数k=2,绘制逼近的非线性函数的目标函数。

matlab代码如下:

clear all
clc
k=2;
p=[-1:0.5:8];
g=1+sin(k*pi/2*p);
plot(p,g,'-');
title('要逼近的非线性函数');
xlabel('时间');
ylabel('非线性函数');

运行后得到目标函数图形:

1.png

用newff函数奖励BP网络结构。隐含层神经元数目n可以改变,暂定n=5,输出层有一个神经元。选择隐含层和输出层神经元传递函数分别为tansing函数和purelin函数,网络训练的算法采用Levenberg-Marquardt算法trainlm。

n=5;
net=newff(minmax(p),[n,1],{'tansig','purelin'},'trainlm');
%对于初始网络,可以应用sim()函数观察网络输出
y1=sim(net,p);
figure;
plot(p,g,'-',p,y1,':')
title('为训练网络的输出结果')
xlabel('时间')
ylabel('仿真输出--原函数--')

运行上述代码可以得到网络输出曲线与原函数的比较图:

1.png

因为使用newff函数奖励函数网络时,权值和阙值的初始化是随机的,所以网络输出结构很差,根本达不到毕竟函数的目的,每次运行的结果有时也不同。


应用train()函数对网络进行训练前,需要预先设置网络训练参数。将训练时间设置为200,训练精度设置为0.2,其余参数使用默认值。训练神经网络的matlab代码如下:

net.trainParam.epochs=200;%网络训练时间设置为200
net.trainParam.goal=0.2;%网络训练精度为0.2
net=train(net,p,g);%开始训练网络

运行后得到的误差变化过程如下:

1.png

对于训练好的网络进行仿真:

y2=sim(net,p);
figure;
plot(p,g,'-',p,y1,':',p,y2,'--')
title('训练后网络的输出结果');
xlabel('时间');
ylabel('仿真输出');

绘制网络输出曲线,并与原始非线性函数曲线以及未训练网络的输出结果曲线相比较,如图:

1.png

从图可以看出,相对于没有训练的曲线,经过训练之后的曲线和原始的目标曲线更接近。这说明经过训练后,BP网络对非线性函数的逼近效果更好。

改变非线性函数的频率和BP函数银行层神经元的数目,对于函数逼近的效果要更差一些;隐含层神经元的数目对于网络逼近效果页有一定影响,一般来说,隐含层神经元数目多,则BP网络逼近非线性函数的能力越强。

(暂时写到这,晚上继续编辑本文,做更多的分析)


相关文章
|
23天前
OFDM深入学习及MATLAB仿真(二)
OFDM深入学习及MATLAB仿真
22 1
|
30天前
|
机器学习/深度学习 算法 PyTorch
RPN(Region Proposal Networks)候选区域网络算法解析(附PyTorch代码)
RPN(Region Proposal Networks)候选区域网络算法解析(附PyTorch代码)
221 1
|
2天前
|
机器学习/深度学习 传感器 数据可视化
MATLAB用深度学习长短期记忆 (LSTM) 神经网络对智能手机传感器时间序列数据进行分类
MATLAB用深度学习长短期记忆 (LSTM) 神经网络对智能手机传感器时间序列数据进行分类
14 1
MATLAB用深度学习长短期记忆 (LSTM) 神经网络对智能手机传感器时间序列数据进行分类
|
7天前
|
存储 监控 安全
网络安全与信息安全:防范漏洞、应用加密、提升意识
【4月更文挑战第18天】 在数字化时代,网络安全与信息安全保障已成为维护国家安全、企业利益和个人隐私的关键。本文深入探讨网络安全的多面性,包括识别和防御网络漏洞、应用加密技术保护数据以及提升全民网络安全意识的重要性。通过对这些关键领域的分析,文章旨在为读者提供实用的策略和建议,以增强其网络环境的安全防护能力。
10 0
|
7天前
|
数据采集 机器学习/深度学习 数据挖掘
网络数据处理中的NumPy应用实战
【4月更文挑战第17天】本文介绍了NumPy在网络数据处理中的应用,包括数据预处理、流量分析和模式识别。通过使用NumPy进行数据清洗、格式化和聚合,以及处理时间序列数据和计算统计指标,可以有效进行流量分析和异常检测。此外,NumPy还支持相关性分析、周期性检测和聚类分析,助力模式识别。作为强大的科学计算库,NumPy在处理日益增长的网络数据中发挥着不可或缺的作用。
|
8天前
|
机器学习/深度学习 数据可视化 网络架构
matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类
matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类
12 0
|
9天前
|
机器学习/深度学习 人工智能 数据可视化
西安石油大学数学建模校赛培训(2)matlab的使用
西安石油大学数学建模校赛培训(2)matlab的使用
36 0
|
11天前
|
机器学习/深度学习 算法
【MATLAB】GA_ELM神经网络时序预测算法
【MATLAB】GA_ELM神经网络时序预测算法
282 9
|
15天前
|
传感器 监控 安全
|
15天前
|
安全 SDN 数据中心

热门文章

最新文章