BP人工神经网络-反向传播法
0 网络计算结果
B(m)=f( ∑n( W(n,m)*X(n) ) + Θ(m) ) %中间层的输出
Y(k)=f( ∑m( V(m,k)*B(m) ) + ф(k) ) %输出层的输出
1 计算误差值
E(k)=Y'(k)-Y(K) %Y'表示样本真实的输出值
2 计算校正误差
dV(k)=E(K) * Y(k) * ( 1-Y(k) )* [学习率]
dW(m)=∑k( dV(k) * V(m,k) ) * B(m) * ( 1-B(m) ) * [学习率]
3 误差校正
V(m,k)=V(m,k) + dV(k) * B(m)
W(n,m)=W(n,m) + dW(m) * X(n)
ф(k)=ф(k) + dV(k) * [学习率]
Θ(m)=Θ(m) + dW(m)* [学习率]
4 matlab代码
%% 构建人工神经网络
% input_train,网络的输入,1500个样本,每个样本24个因子
% output_train,网络的输出,与输入样本数相同为1500个,每个输出有4个因子 in_num=24;%输入的因子数
mid_num=25;%中间层的个数
out_num=4;%输出的因子数 W1=rands(mid_num,in_num);%每个输入对中间层的权重
TD1=rands(1,mid_num);%中间层的阈值
W2=rands(out_num,mid_num);%中间层对输出的权重
TD2=rands(1,out_num);%输出的阈值 %学习率
xite=0.1;%权重的学习率
alfa=0.01;%阈值的学习率 loop_num=100;%训练迭代的次数 %% 网络训练
for loop=1:loop_num
for index=1:1500
input=input_train(index,:);
% 计算中间层输出
mid_out=input*W1'+TD1;
mid_out=1./(1+exp(-mid_out));
% 计算网络的输出
output=mid_out*W2'+TD2;
output=1./(1+exp(-output));
% 计算权重的下降梯度
E= output_train(index,:) - output;
dW2 = E .* output .* (1 - output) * xite;
dW1 = dW2 * W2 .* mid_out .* (1-mid_out) * xite;
% 更新权重
W2=W2 + diag( dW2) * repmat(mid_out,out_num,1);
W1=W1 + diag(dW1) * repmat(input,mid_num,1);
% 更新阈值
TD2=TD2+dW2*xite;
TD1=TD1+dW1*xite;
end
end
代码与示例数据
http://download.csdn.net/detail/long7782/8112627
BP人工神经网络-反向传播法的更多相关文章
- 人工神经网络反向传播算法(BP算法)证明推导
为了搞明白这个没少在网上搜,但是结果不尽人意,最后找到了一篇很好很详细的证明过程,摘抄整理为 latex 如下. (原文:https://blog.csdn.net/weixin_41718085/a ...
- 神经网络中的反向传播法--bp【转载】
from: 作者:Charlotte77 出处:http://www.cnblogs.com/charlotte77/ 一文弄懂神经网络中的反向传播法——BackPropagation 最近在看深度学 ...
- 一文弄懂神经网络中的反向传播法——BackPropagation
最近在看深度学习的东西,一开始看的吴恩达的UFLDL教程,有中文版就直接看了,后来发现有些地方总是不是很明确,又去看英文版,然后又找了些资料看,才发现,中文版的译者在翻译的时候会对省略的公式推导过程进 ...
- [转] 一文弄懂神经网络中的反向传播法——BackPropagation
在看CNN和RNN的相关算法TF实现,总感觉有些细枝末节理解不到位,浮在表面.那么就一点点扣细节吧. 这个作者讲方向传播也是没谁了,666- 原文地址:https://www.cnblogs.com/ ...
- 一文弄懂神经网络中的反向传播法(Backpropagation algorithm)
最近在看深度学习的东西,一开始看的吴恩达的UFLDL教程,有中文版就直接看了,后来发现有些地方总是不是很明确,又去看英文版,然后又找了些资料看,才发现,中文版的译者在翻译的时候会对省略的公式推导过程进 ...
- 一文弄懂神经网络中的反向传播法——BackPropagation【转】
本文转载自:https://www.cnblogs.com/charlotte77/p/5629865.html 一文弄懂神经网络中的反向传播法——BackPropagation 最近在看深度学习 ...
- 浅层神经网络 反向传播推导:MSE softmax
基础:逻辑回归 Logistic 回归模型的参数估计为什么不能采用最小二乘法? logistic回归模型的参数估计问题不能“方便地”定义“误差”或者“残差”. 对单个样本: 第i层的权重W[i]维度的 ...
- 用BP人工神经网络识别手写数字
http://wenku.baidu.com/link?url=HQ-5tZCXBQ3uwPZQECHkMCtursKIpglboBHq416N-q2WZupkNNH3Gv4vtEHyPULezDb5 ...
- 神经网络反向传播算法&&卷积神经网络
听一遍课程之后,我并不太明白这个算法的奇妙之处?? 为啥? 神经网络反向传播算法 神经网络的训练依靠反向传播算法,最开始输入层输入特征向量,网络层计算获得输出,输出层发现输出和正确的类号不一样,这时就 ...
随机推荐
- 4. 内网渗透之IPC$入侵
IPC$连接 IPC$的概念: IPC$(Internet Process Connection)是共享”命名管道”的资源,它是为了让进程间通信而开放的命名管道,可以通过验证用户名和密码获得相应的权限 ...
- 多线程学习-基础( 十一)synchronized关键字修饰方法的简单案例
一.本案例设计到的知识点 (1)Object的notify(),notifyAll(),wait()等方法 (2)Thread的sleep(),interrupt(). (3)如何终止线程. (4)如 ...
- 小小c#算法题 - 9 - 基数排序 (Radix Sort)
基数排序和前几篇博客中写到的排序方法完全不同.前面几种排序方法主要是通过关键字间的比较和移动记录这两种操作来实现排序的,而实现基数排序不需要进行记录项间的比较.而是把关键字按一定规则分布在不同的区域, ...
- c 数组作为返回值注意
static char* Test() { char buf[] ="aa"; printf("%s\n",buf); return buf; } int ma ...
- 动态横向(水平)合并Repeater数据行DataItem的列
Insus.NET有对GridView控件进行横纵分别合并列:横:<动态横向(水平)合并GridView数据行DataRow的列>http://www.cnblogs.com/insus/ ...
- Hawk-and-Chicken 强连通
题意:一群人投票 票具有传递性 求出累计和最大的数和 哪几个人最大 强连通好题!!! 毫无疑问先强连通缩点 一开始打算拓扑排序求dis 但是发现拓扑排序会有重复累加的情况 那么就反向建图 当 ...
- EXTJs前后台交互 常用哦3种方式
<1>Ajax交互方式 Ext.Ajax.request( { //被用来向服务器发起请求默认的url url : "", //请求时发送后台的参数,既可以是Json对 ...
- Loadrunner 性能测试笔记
性能测试脚本 // 关联token 放在请求返回前 web_reg_save_param("tokenId", "LB=,\"tokenId\":\& ...
- powershell 操作sharepoint命令集
打开SharePoint 2013 Management Shell, and then run as administrator.执行如下命令 1. 添加wsp和安装Add-SPSolution - ...
- Python学习过程(五)
这里记录下python怎么去和数据库打交道,也就是这么怎么去连接数据库,以及对数据库的操作,我这里用的sqlserver, 好了,首先当然是引入我们的模块包: import pymssql 猜的不错的 ...