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 ...
- 神经网络反向传播算法&&卷积神经网络
听一遍课程之后,我并不太明白这个算法的奇妙之处?? 为啥? 神经网络反向传播算法 神经网络的训练依靠反向传播算法,最开始输入层输入特征向量,网络层计算获得输出,输出层发现输出和正确的类号不一样,这时就 ...
随机推荐
- Tomact和XML配置文件
1 Http协议2 Tomcat服务器3 编写xml4 通过DTD约束编写指定格式的XML 5 通过Schema约束编写指定格式的XML6 使用D0M4J解析xml================== ...
- 带有通配符的字符串匹配算法-C/C++
日前某君给我出了这样一道题目:两个字符串,一个是普通字符串,另一个含有*和?通配符,*代表零个到多个任意字符,?代表一个任意字符,通配符可能多次出现.写一个算法,比较两个字符串是否相等. 我花了四个小 ...
- 并发编程学习笔记之可见性&过期数据(二)
想要使用多线程编程,有一个很重要的前提,那就是必须保证操纵的是线程安全的类. 那么如何构建线程安全的类呢? 1. 使用同步来避免多个线程在同一时间访问同一数据. 2. 正确的共享和安全的发布对象,使多 ...
- sql去掉换行符
select replace(replace(ServiceCall,CHAR(13),''),CHAR(10),'') from outbound_complaint where bz1='朱成 ...
- PCA(主成分分析)
PCA(Principal Component Analysis)是一种常用的数据分析方法.PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降 ...
- 编译原理-First集和Follow集
刚学first集和follow集的时候,如果上课老师没有讲明白或者自己没听明白,自己看的时候还真是有点难理解,不过结合着具体的题目可以理解的更快. 先看一下两种集合的求法: First集合的求法: ...
- Codeforces Round #541 (Div. 2)D(并查集(dsu),拓扑排序)
#include<bits/stdc++.h>using namespace std;vector<int>g[2007];int fa[2007],vis[2007],num ...
- 818. Race Car
Your car starts at position 0 and speed +1 on an infinite number line. (Your car can go into negati ...
- LAMP之PHP
保持apache.mysql正在运行 [root@cairui php-]# lsof -i tcp: COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NA ...
- SP8791 DYNALCA - Dynamic LCA
\(\color{#0066ff}{ 题目描述 }\) 有一个森林最初由 n (\(1 \le n \le 100000\))n(\(1\leq n\leq 100000\)) 个互不相连的点构成 你 ...