转载——关于bp神经网络
一、BP神经网络的概念
二、BP神经网络的流程
1、网络的初始化
2、隐含层的输出
3、输出层的输出
4、误差的计算
5、权值的更新
- 隐含层到输出层的权重更新
- 输入层到隐含层的权重更新
6、偏置的更新
- 隐含层到输出层的偏置更新
- 输入层到隐含层的偏置更新
7、判断算法迭代是否结束
三、实验的仿真
MATLAB代码
- %% BP的主函数
- % 清空
- clear all;
- clc;
- % 导入数据
- load data;
- %从1到2000间随机排序
- k=rand(1,2000);
- [m,n]=sort(k);
- %输入输出数据
- input=data(:,2:25);
- output1 =data(:,1);
- %把输出从1维变成4维
- for i=1:2000
- switch output1(i)
- case 1
- output(i,:)=[1 0 0 0];
- case 2
- output(i,:)=[0 1 0 0];
- case 3
- output(i,:)=[0 0 1 0];
- case 4
- output(i,:)=[0 0 0 1];
- end
- end
- %随机提取1500个样本为训练样本,500个样本为预测样本
- trainCharacter=input(n(1:1600),:);
- trainOutput=output(n(1:1600),:);
- testCharacter=input(n(1601:2000),:);
- testOutput=output(n(1601:2000),:);
- % 对训练的特征进行归一化
- [trainInput,inputps]=mapminmax(trainCharacter');
- %% 参数的初始化
- % 参数的初始化
- inputNum = 24;%输入层的节点数
- hiddenNum = 50;%隐含层的节点数
- outputNum = 4;%输出层的节点数
- % 权重和偏置的初始化
- w1 = rands(inputNum,hiddenNum);
- b1 = rands(hiddenNum,1);
- w2 = rands(hiddenNum,outputNum);
- b2 = rands(outputNum,1);
- % 学习率
- yita = 0.1;
- %% 网络的训练
- for r = 1:30
- E(r) = 0;% 统计误差
- for m = 1:1600
- % 信息的正向流动
- x = trainInput(:,m);
- % 隐含层的输出
- for j = 1:hiddenNum
- hidden(j,:) = w1(:,j)'*x+b1(j,:);
- hiddenOutput(j,:) = g(hidden(j,:));
- end
- % 输出层的输出
- outputOutput = w2'*hiddenOutput+b2;
- % 计算误差
- e = trainOutput(m,:)'-outputOutput;
- E(r) = E(r) + sum(abs(e));
- % 修改权重和偏置
- % 隐含层到输出层的权重和偏置调整
- dw2 = hiddenOutput*e';
- db2 = e;
- % 输入层到隐含层的权重和偏置调整
- for j = 1:hiddenNum
- partOne(j) = hiddenOutput(j)*(1-hiddenOutput(j));
- partTwo(j) = w2(j,:)*e;
- end
- for i = 1:inputNum
- for j = 1:hiddenNum
- dw1(i,j) = partOne(j)*x(i,:)*partTwo(j);
- db1(j,:) = partOne(j)*partTwo(j);
- end
- end
- w1 = w1 + yita*dw1;
- w2 = w2 + yita*dw2;
- b1 = b1 + yita*db1;
- b2 = b2 + yita*db2;
- end
- end
- %% 语音特征信号分类
- testInput=mapminmax('apply',testCharacter',inputps);
- for m = 1:400
- for j = 1:hiddenNum
- hiddenTest(j,:) = w1(:,j)'*testInput(:,m)+b1(j,:);
- hiddenTestOutput(j,:) = g(hiddenTest(j,:));
- end
- outputOfTest(:,m) = w2'*hiddenTestOutput+b2;
- end
- %% 结果分析
- %根据网络输出找出数据属于哪类
- for m=1:400
- output_fore(m)=find(outputOfTest(:,m)==max(outputOfTest(:,m)));
- end
- %BP网络预测误差
- error=output_fore-output1(n(1601:2000))';
- k=zeros(1,4);
- %找出判断错误的分类属于哪一类
- for i=1:400
- if error(i)~=0
- [b,c]=max(testOutput(i,:));
- switch c
- case 1
- k(1)=k(1)+1;
- case 2
- k(2)=k(2)+1;
- case 3
- k(3)=k(3)+1;
- case 4
- k(4)=k(4)+1;
- end
- end
- end
- %找出每类的个体和
- kk=zeros(1,4);
- for i=1:400
- [b,c]=max(testOutput(i,:));
- switch c
- case 1
- kk(1)=kk(1)+1;
- case 2
- kk(2)=kk(2)+1;
- case 3
- kk(3)=kk(3)+1;
- case 4
- kk(4)=kk(4)+1;
- end
- end
- %正确率
- rightridio=(kk-k)./kk
激活函数
- %% 激活函数
- function [ y ] = g( x )
- y = 1./(1+exp(-x));
- end
转载——关于bp神经网络的更多相关文章
- 【转载】BP神经网络
原文地址:http://blog.csdn.net/acdreamers/article/details/44657439 今天来讲BP神经网络,神经网络在机器学习中应用比较广泛,比如函数逼近,模式识 ...
- BP神经网络—java实现(转载)
神经网络的结构 神经网络的网络结构由输入层,隐含层,输出层组成.隐含层的个数+输出层的个数=神经网络的层数,也就是说神经网络的层数不包括输入层.下面是一个三层的神经网络,包含了两层隐含层,一个输出层. ...
- 数据挖掘系列(9)——BP神经网络算法与实践
神经网络曾经很火,有过一段低迷期,现在因为深度学习的原因继续火起来了.神经网络有很多种:前向传输网络.反向传输网络.递归神经网络.卷积神经网络等.本文介绍基本的反向传输神经网络(Backpropaga ...
- bp神经网络及matlab实现
本文主要内容包含: (1) 介绍神经网络基本原理,(2) AForge.NET实现前向神经网络的方法,(3) Matlab实现前向神经网络的方法 . 第0节.引例 本文以Fisher的Iris数据集 ...
- RBF神经网络和BP神经网络的关系
作者:李瞬生链接:https://www.zhihu.com/question/44328472/answer/128973724来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...
- BP神经网络的公式推导
如果感觉自己看不懂,那就看看我博客的梯度下降法,博文最后的感知机也算最简单的BP神经网络吧,用的也是反馈(w,b):典型梯度下降法 BP网络的结构 BP网络的结构如下图所示,分为输入层(Input), ...
- BP神经网络的数学原理及其算法实现
什么是BP网络 BP网络的数学原理 BP网络算法实现 转载请声明出处http://blog.csdn.net/zhongkejingwang/article/details/44514073 上一篇 ...
- BP神经网络-- 基本模型
转载:http://www.cnblogs.com/jzhlin/archive/2012/07/28/bp.html BP 神经网络中的 BP 为 Back Propagation 的简写,最早它 ...
- 模式识别之ocr项目---(模板匹配&BP神经网络训练)
摘 要 在MATLAB环境下利用USB摄像头采集字符图像,读取一帧保存为图像,然后对读取保存的字符图像,灰度化,二值化,在此基础上做倾斜矫正,对矫正的图像进行滤波平滑处理,然后对字符区域进行提取分割出 ...
随机推荐
- mysql术语
事务 概念:在关系数据库中,一个事物可以是一条sql语句,一组sql语句或整个程序. 特性:事物应该具有4个特性:原子性.一致性.隔离性.持久性.统称为ACID特性. 原子性(A)一个不可分割的工作单 ...
- cglib动态代理(需导入cglib-nodep-2.1_3.jar)
public interface AnimalInterface { public void cry(); } public class AnimalImpl implements AnimalInt ...
- int数组的下标为n
int 类型的数组 先定义int n = 5: 定义int a[n] = {0}; 编译怎么不通过啊?n必须为常量如果想实现你说的,应该用宏#define n 5int a[n]={0};这样就可以了 ...
- 最优化问题 Optimization Problems & 动态规划 Dynamic Programming
2018-01-12 22:50:06 一.优化问题 优化问题用数学的角度来分析就是去求一个函数或者说方程的极大值或者极小值,通常这种优化问题是有约束条件的,所以也被称为约束优化问题. 约束优化问题( ...
- 实例化后的list的默认值
public class List默认值 { public static void main(String[] args) { List<String> arrayList = new A ...
- springmvc的@Validated/@Valid注解使用和BindingResult bindingResult
关于@Valid和Validated的比较 @Valid是使用hibernate validation的时候使用 @Validated 是只用spring Validator 校验机制使用 一:@V ...
- tomcat安装图文教程
tomcat安装图文教程 运维 memory 发布于June 1, 2013 标签: Windows, Tomcat 下载Tomcat安装文件,官方下载地址是:http://tomcat.apache ...
- 【待填坑】ajax问题
原生xhr怎么写? 怎么处理回调? 问:http状态码常见有哪些? 问:302是啥?304是啥?什么时候会返回304?你刚刚说浏览器缓存,具体缓存机制是怎么样的? 问:你刚刚说的是发起一个get请求, ...
- JBPM4入门——2.在eclipse中安装绘制jbpm流程图的插件
本博文只是简要对JBPM4进行介绍,如需更详细内容请自行google 链接: JBPM入门系列文章: JBPM4入门——1.jbpm简要介绍 JBPM4入门——2.在eclipse中安装绘制jbpm流 ...
- MoreEffectiveC++Item35(操作符)(条款5-8)
条款5 对定制的"类型转换函数"保持警惕 条款6 区别increment/decrement操作符的前值和后置形式 条款7 千万不要重载&&,||,和,操作符 条款 ...