IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> BP神经网络——MATLAB实现 -> 正文阅读

[人工智能]BP神经网络——MATLAB实现

最近准备数学建模,了解了一下BP神经网络,照着书写了一边代码,算作是搬运工吧,希望可以帮大家节约代码的时间。此外,加上一些个人理解,希望大家可以快速上手BP神经网络,并直接在代码上面进行简单的修改与套用。

下面是一道拟合白噪声的正弦样本的数据题。

%%%%%%%%%%%%%%%%运用BP网络拟合白噪声的正弦样本数据%%%%%%%%%%%%%%%
clear;
close all;
clc;
%%%%%%%%%定义训练样本矢量%%%%%%%%%%%%%%
%%%%%%%%%%%p为输入矢量%%%%%%%%%
p=-1:0.05:1;
%%%%%%%%%%%T为目标矢量%%%%%%%
T=sin(2*pi*p)+0.1*randn(size(p));
%%%%%%%%%%%%%%绘制样本数据点%%%%%%%
figure
plot(p,T,'+')
hold on;
plot(p,sin(2*pi*p),':');
%%%%%%%%%%%%绘制不产生噪声的正弦曲线%%%%%%%%%%
net=newff(p,T,20,{'tansig','purelin'});
%%%%%%%%%%%%%%%采用贝叶斯正则化算法%%%%%%%%
net.trainFcn='trainbr';
%%%%%%%%%%%%%%设置训练参数%%%%%%%%%%%%
net.trainParam.show=50;           %显示中间结果周期
net.trainParam.lr=0.05;           %学习率
net.trainParam.epochs=500;        %最大迭代次数
net.trainParam.goal=1e-3;         %目标误差
net.divideFcn='';    %清楚样本数据分为训练集、验证集和测试集命令
%%%%%%%%%%%%%%%%%用相应算法训练BP网络%%%%%%%%%%%%
[net,tr]=train(net,p,T);
%%%%%%%%%%%%%对于BP网络进行仿真%%%%%%%%%%%
A=sim(net,p);
%%%%%%%%%%%%%%%%计算仿真误差%%%%%%%%%%%%%%
E=T-A;
MSE=mse(E);
%%%%%%%%%%%%%%%绘制匹配结果曲线%%%%%%%%%%%%%
plot(p,A,p,T,'+',p,sin(2*pi*p),':');
legend('样本点','标准正弦曲线','拟合正弦曲线')

从上面的具体代码中,我们需要了解以下几点

1.一般来说神经网络包含三层,分别是输入层,输出层以及隐含层,所以说输入和输出是非常重要的,如上式代码中p是输入,T是期望输出,BP神经网络是根据实际输出与期望输出之间的残差来调整权重的,所以期望输出非常重要。

2.下面我们就根据代码来了解一下相关代码

? (1)newff:前馈神经网络创建函数

? ? ? ? ? ?用法?;net=newff(p,T,[每层神经元个数],{神将网络激活函数,默认为‘tansig’},......)?

?(2)net.trainFcn:训练函数

? ? ? ? ?net.trainFcn='trainbr';

? ? ? ? 注:trainbr————贝叶斯正则化算法

? ? ? ? ? ? ? ?traingd————梯度下降BP算法

? ? ? ? ? ? ? trainbfg————BFGS拟牛顿BP算法

? ? ? ? ? ? ? trainlm————Levenberg-Marquardt的BP算法?

? ? ? ?除此之外,还有很多哦大家可以去查询MATLAB手册

? (3)一些重要的配置参数

? ? ? ? ? ?net.trainParam.show=50; ? ? ? ? ? %显示中间结果周期
? ? ? ? ? ?net.trainParam.lr=0.05; ? ? ? ? ? %学习率
? ? ? ? ? ?net.trainParam.epochs=500; ? ? ? ?%最大迭代次数
? ? ? ? ? ?net.trainParam.goal=1e-3; ? ? ? ? %目标误差

? ? ? ? ? 这些参数都是依据题目中要求需要改进的。

(4)train函数:神经网络训练学习函数

? 用法:[net,tr,Y1,E]=train(net,X,Y)

X:网络输入矩阵? ? ? ? ? ? Y:网络输出矩阵??

tr:训练跟踪信息? ? ? ? ? ?Y1:网络实际输出? ? ? ? E:误差矩阵

(5)sim函数:神经网络仿真计算网络

用法:Y=sim(net,X)

net:训练好的神经网络? ? ? ? ? ? ? ? ?X:网络输入矩阵? ? ? ? ? ?Y:网络输出矩阵

注:当输入数据范围特别大时,会导致神经网络收敛慢,训练时间常,所以在训练神经网络之前可以先进行归一化处理,运用premnmx函数,然后训练结束之后再运用mapminmax函数进行还原。

相关用法如下:[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t)

? ? ? ? ? ? ? ? ? ? ? ? x_again=mapminmax('reverse',y1,PS);

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-26 12:06:37  更:2021-08-26 12:08:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 18:50:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码