BP神经网络续1
一、BP网络中的函数
1.创建函数
1) cascadeforwardnet函数
cascadeforwardnet(hiddenSizes,trainFcn)
其中参数hiddenSizes为隐含层神经元节点的个数,如果有多个隐含层,则hiddenSizes是一个行向量,默认值为10;参数trainFcn为训练函数(默认值为trainlm)。
2) feedforwardnet(hiddenSizes,trainFcn)
3) newff函数
4) newcf函数
2.传递函数
1) logsig函数
A = logsig(N,FP):N为SxQ维的网络输入(列)向量,FP为性能参数
dA_dN = logsig(‘dn’,N,A,FP)
返回A关于N的导数dA_dN,如果A或FP没有给出,则FP返回默认参数
2) tansig函数
3) purelin函数
该函数为线性传递函数
3.学习函数
1) learngd函数
2) learngdm函数
4.训练函数
1) trainbfg函数
准牛顿BP算法
2) traingd函数
该函数为负梯度下降BP算法函数
3) traindm函数
该函数为负梯度下降动量BP算法函数
5.性能函数
perf = msereg(E,Y,X,FP)
参数E表示误差矩阵或向量(E=T-Y,T表示网络的目标向量);Y为网络的输出向量;X为所有权值和阈值的向量;FP表示性能参数;返回参数perf为平均绝对误差
6.显示函数
1) plotperf函数
用于绘制一个单独神经元的额误差曲面
plotperf(tr,goal,name,epoch)
其中tr为网络训练记录;参数goal为性能目标,默认值为NaN;参数name为训练函数名称,默认为空;参数epoch为训练步数,默认训练记录的长度。
2) errsurf函数
errsurf(P,T,WV,BV,F)
P为输入行向量,T为目标行向量;WV为权值列向量;BV为阈值列向量;F为函数名字
3) plotes函数
plotes(WV,BV,ES,V)
其中,参数WV为权值的N维列向量;参数BV为M维的阈值行向量;参数ES为误差向量组成的MxN维矩阵;参数V为视角,默认为[-37.5,30]
4) plotep函数
H = plotep(W,B,E)
参数W为当前权值;参数B为当前阈值;参数E为当前神经元的输入误差
二、BP神经网络的应用
1.分类
p=[1 2;-1 1;-2 1;-4 0]';
t=[0.2 0.8 0.8 0.2];
net=newff([-1 1;-1 1],[5 1],{'logsig','logsig'},'traingd');
net.trainParam.goal = 0.001;
net.trainParam.epochs = 5000;
[net,tr]=train(net,p,t);
iw1=net.iw{1}
ib1=net.b{1}
iw2=net.iw{2}
ib2=net.b{2}
save li3_27 net;
load li3_27 net;
p1=[1 2;-1 1;-2 1;-4 0]';
a2=sim(net,p1)
disp('输出分类结果为:')
a2=a2>0.5
2.BP网络去除噪声
clear all;
[alphabet,targets]=prprob;
[R,Q]=size(alphabet);
[S2,Q]=size(targets);
S1=10;
P=alphabet;
net=newff(minmax(P),[S1 S2],{'logsig','logsig'},'traingdx');
net.LW{2,1}=net.LW{2,1}*0.01;
net.b{2}=net.b{2}+0.01;
% 无噪声训练
T=targets;
net.performFcn='sse';
net.trainParam.goal=0.1;
net.trainParam.show=20;
net.trainParam.epochs=5000;
net.trainParam.mc=0.95;
[net,tr]=train(net,P,T);
% 有噪声训练
netn=net;
netn.trainParam.goal=0.6;
netn.trainParam.epochs=300;
T=[targets targets targets targets];
for pass=1:10
P=[alphabet,alphabet,(alphabet+rand(R,Q)*0.1),(alphabet+randn(R,Q)*0.2)];
[netn,tr]=train(netn,P,T);
end
% 再次进行无噪声训练,为了使得网络得到理想信号
netn.trainParam.goal=0.1;
netn.trainParam.epochs=5000;
netn.trainParam.show=5;
P=alphabet;
T=targets;
% [net,tr]=train(netn,P,T);
% 系统性能
noise_range=0:0.05:0.5;
max_test=100;
network1=[];
network2=[];
T=targets;
for noiselevel=noise_range
errors1=0;
errors2=0;
for i=1:max_test
P=alphabet+randn(35,26)*noiselevel;
A=sim(net,P);
AA=compet(A);
errors1=errors1+sum(sum(abs(AA-T)))/2;
An=sim(netn,P);
AAn=compet(An);
errors2=errors2+sum(sum(abs(AA-T)))/2;
end
network1=[network1 errors1/26/100];
network2=[network2 errors2/26/100];
end
plot(noise_range,network1*100,'--',noise_range,network2*100);
xlabel('噪声指标');
ylabel('无噪声训练 -- 有噪声训练 ---');
legend('无噪声训练网络','有噪声训练');
% 对训练的网络进行仿真
noisyA=alphabet(:,1)+randn(35,1)*0.2;
figure;
plotchar(noisyA);
A2=sim(net,noisyA);
A2=compet(A2);
answer=find(compet(A2)==1);
figure;plotchar(alphabet(:,answer));
- 使用 WMI 进行诊断WCF
- java:快速文件分割及合并
- 暴涨210倍的一个数字货币正悄无声息崛起
- QT Creator 快速入门教程 读书笔记(一)
- .NET程序优化(GCServer )
- redis 学习笔记(4)-HA高可用方案Sentinel配置
- oracle: job使用
- velocity模板引擎学习(2)-velocity tools 2.0
- java:如何用代码控制H2 Database启动
- 游戏开发完整学习路线(各个版本都有)
- spring mvc4:异常处理
- TCP/IP, WebSocket 和 MQTT
- struts2: 玩转 rest-plugin
- 设置系统环境变量立即生效的VBS脚本
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Mysql常用函数——告别复杂sql
- Spring Boot读取配置文件的几种方式
- python菜鸟教程 | if else 判断
- Java 语言中十大“坑爹”功能!
- R语言生存分析可视化分析
- 全平台轻量开源verilog仿真工具iverilog+GTKWave使用教程
- R语言时间序列和ARIMA模型预测拖拉机销售的制造案例研究
- Windows10下安装linux子系统学习笔记
- 项目实践 | 从零开始学习Deep SORT+YOLO V3进行多目标跟踪(附注释项目代码)
- [OHIF-Viewers]医疗数字阅片-医学影像-Module: Panel-自定义面板-中-es6-Object.defineProperty()定义属性
- (数据科学学习手札90)Python+Kepler.gl轻松制作时间轮播地图
- WEB前端安全自查和加固
- 硬核!IDEA 中使用 Git 完整入门教程!
- 神器你值得拥有——CoolFormat代码一键自动格式化工具,支持Verilog
- 一个简单现实案例挑战 PowerBI 水平测试 - 深度解析