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 ...
- 神经网络反向传播算法&&卷积神经网络
听一遍课程之后,我并不太明白这个算法的奇妙之处?? 为啥? 神经网络反向传播算法 神经网络的训练依靠反向传播算法,最开始输入层输入特征向量,网络层计算获得输出,输出层发现输出和正确的类号不一样,这时就 ...
随机推荐
- (数组)Largest Rectangle in Histogram(栈解问题)
Largest Rectangle in Histogram Given n non-negative integers representing the histogram's bar height ...
- 第4章 jQuery中的事件和动画
4.1 jQuery中的事件 4.1.1 加载DOM jQuery就是用 `$(document).ready()方法来代替传统JavaScript的window.onload方法的. 1.执行时机 ...
- Java50道经典习题-程序46 字符串连接
题目:编写一个两个字符串连接的程序 import java.util.Scanner; public class Prog46 { public static void main(String[] a ...
- Python列表删除的三种方法
1.使用del语句删除元素 >>> i1 = ["a",'b','c','d'] >>> del i1[0] >>> prin ...
- P2948 [USACO09OPEN]滑雪课Ski Lessons
题意:Bessie去滑雪,限时T,滑雪场有S节课 每节课开始于$m_i$,长度为$l_i$,可以将Bessie的能力值变成$a_i$(注意是变成不是增加) 有n个滑雪坡,去滑雪需要$c_i$的能力,并 ...
- P1114 “非常男女”计划
题意:给你一个01串,求满足0和1总数相等的最大字串 $n\ \le\ 10^5$ 1.$O(n^3)$枚举起点终点,统计判断是否成立 2.$O(n^2)$先$O(n)$时间计算01个数的前缀和, ...
- freemarker常用标签解释二
1 assign 指令 使用这个指令你可以创建一个新的变量,或者替换一个已经存在的变量.注意仅仅顶级变量可以被创建/替换(也就是说你不能创建/替换some_hash.subvar,除了some_has ...
- Python判断字符串编码以及编码的转换
转自:http://www.cnblogs.com/zhanhg/p/4392089.html Python判断字符串编码以及编码的转换 判断字符串编码: 使用 chardet 可以很方便的实现字符串 ...
- ubuntu中误删/var/lib/dpkg/info的补救方法
今晚在ubuntu上安装一个软件时,出现这样的错误提示:E: Sub-process /usr/bin/dpkg returned an error code (1)然后在网上找了查找问题原因及解决方 ...
- js打印相关,注意此方法受到IE安全性设置影响
<HTML><HEAD><TITLE>javascript打印-打印页面设置-打印预览代码</TITLE> <SCRIPT language=j ...