最近学习神经网络,自己参照源代码把误差逆传播重新写了一遍,其实挺简单的,关键是要把逆传播的几个过程搞清楚以及每一步是为了得到什么,然后知道numpy的矩阵运算操作,废话不多说,直接上代码:

# 反向传播算法
def backpro(weights, bs, x, y, nums):"""逆传播计算参数的梯度:param weights: 权重矩阵列表,每一层一个权重矩阵,直到最后一层,整个网络构成一个矩阵集合:param bs: 偏置向量列表,每一层一个偏置列向量:param x: 输入:param y: 期望输出:param nums: 网络层数:return:"""# 构造两个空的梯度列表,形状跟每一层权重矩阵和列向量形状相同nabla_weight = [np.zeros(z.shape) for z in weights]   # 每一层权重的梯度矩阵跟权重矩阵的形状相同nabla_b = [np.zeros(b.shape) for b in bs]  # 同理,每一层偏置的梯度列向量跟偏置列向量的形状相同# 定义带权输入列表,保存每一层的带权输入列向量zs = []# 定义激活值列表,保存激活值activation = xactivations = [x]# 第一步,前向传播,计算带权输入和激活值for w, b in zip(weights, bs):# 计算当前层的带权输入zz = np.dot(w, activation) + b# 计算当前层的激活值activation = f(z)zs.append(z)activations.append(activation)# 第二步,计算输出层的误差delta = g(activations[-1]) * h(zs[-1])nabla_b[-1] = delta  # 输出层的偏置梯度即为其误差nabla_weight[-1] = np.dot(delta, activations[-2].transpose())# 第三步,误差逆传播,计算倒数第二层到第二层的误差for l in range(2, nums):# 逆传播公式,-l+1层的误差得到-l层的误差delta = np.dot(weights[-l+1].transpose(), delta) * h(zs[-l])nabla_b[-l] = deltanabla_weight[-l] = np.dot(delta, activations[-l-1].transpose())return nabla_weight, nabla_b# 定义一个激活函数
def f(z):return z# 定义一个激活函数的导函数
def h(z):return z# 定义一个代价函数的导函数
def g(a):return a

注意:其中的激活函数及其导数,以及代价函数都没有具体的形式,自己可以根据具体情况把这是哪个函数进行修改

最后在具体操作的过程在有什么问题,欢迎大家一起交流讨论。
在下编程小白,如果有什么错误欢迎大家批评指正!
邮箱:1916728303@qq.com

python实现误差逆传播算法相关推荐

  1. 《机器学习与数据挖掘》实验五 编程实现误差逆传播算法(BP算法)

    前言: 摘要:本文对机器学习实验五 标准BP算法的代码进行实现,如果不了解的BP算法的话,可以自行上网搜索BP算法的详解. 实验题目:编程实现误差逆传播算法(BP算法) 实验目的:掌握误差逆传播算法( ...

  2. 人工智能知识全面讲解:多层神经网络与误差逆传播算法

    7.3.1 从单层到多层神经网络 明斯基教授曾表示,单层神经网络无法解决异或问题,但是当增加一个计 算层以后,两层神经网络不仅可以解决异或问题,而且具有非常好的非线性分 类效果.只是两层神经网络的计算 ...

  3. BP(BackPropagation)误差逆传播算法

    上篇文章介绍了多层前馈神经网络,那么这种网络是怎样训练生成的呢,BP算法就是其中一种生成多层神经网络的算法 ,又称为反向传播算法,下面来了解一下BP算法. 举例: 下图中是根据一个手写数字辨识的神经网 ...

  4. BP算法误差逆传播参数更新公式推导

    BP算法误差逆传播参数更新公式推导

  5. 误差逆传播算法公式理解及推导

    前言:公式理解及推导参考自<机器学习>周志华 P101 BP网络 BP网络一般是指由 误差逆传播(error BackPropagation, BP)算法训练的多层前馈神经网络. 给定训练 ...

  6. 机器学习经典算法具体解释及Python实现--K近邻(KNN)算法

    (一)KNN依旧是一种监督学习算法 KNN(K Nearest Neighbors,K近邻 )算法是机器学习全部算法中理论最简单.最好理解的.KNN是一种基于实例的学习,通过计算新数据与训练数据特征值 ...

  7. 深度学习入门笔记(六):误差反向传播算法

    专栏--深度学习入门笔记 推荐文章 深度学习入门笔记(一):机器学习基础 深度学习入门笔记(二):神经网络基础 深度学习入门笔记(三):感知机 深度学习入门笔记(四):神经网络 深度学习入门笔记(五) ...

  8. Python 还原控制SCI论文算法系列1: 基于策略迭代的自适应最优控制器设计

    Python 还原控制SCI论文算法系列1: 基于策略迭代的自适应最优控制器设计 文章目录 Python 还原控制SCI论文算法系列1: 基于策略迭代的自适应最优控制器设计 0.前言 1.研究问题的描 ...

  9. Python实现标准的Kmeans算法

    Python实现标准的Kmeans算法 Kmeans很常用,特别是针对无监督学习.Kmeans简单容易理解,但是功能还是很强大的. 1 Kmeans算法原理 基本原理,就是通过距离的大小去将数据分类. ...

  10. python 决策树回归参数_使用 Python 和 scikit-learn 学习回归算法

    本教程已纳入面向开发者的机器学习这一学习路径. 简介 在本教程中,我们将介绍解决基于回归的机器学习问题的基础知识,并对当前最流行的一些算法进行比较研究. 设置 注册或登录. 从 Try IBM Wat ...

最新文章

  1. VS2012代码提示快捷键
  2. Google Map App 问题集锦
  3. 相见恨晚的 Python 内置库:itertools
  4. Docker for windows 容器内网通过独立IP直接访问的方法
  5. centos 6.7 mysql 5.6_CentOS 6.7 安装 MySQL 5.6 思路整理
  6. 顶点计划家庭感情冲突问题讨论
  7. UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xae in position 53: illegal multibyte sequence
  8. r语言列表添加元素_技术贴 | R语言:geom_smooth在散点图中添加多条回归直线
  9. 科来网络分析工具基本操作与案例分析
  10. 华为EC6108V9C/ E6108V9强刷固件及教程
  11. M1芯片,PS2022版真的来了。Photoshop 2022 for Mac中文版介绍安装教程,支持Monterey系统
  12. java拼图游戏(带文档资料)
  13. AT24C1024读写
  14. ae字体预设下载_20组经典的文字动画AE源文件,含20个AE预设
  15. 字节跳动或推独立出口电商APP,亚马逊阿里虾皮:不慌
  16. Python技巧——解析式
  17. 爬取每日必应图片,python爬虫简单入门
  18. CATIA鼠标操作简介
  19. JavaScript 设计模式学习第五篇-继承与原型链
  20. 通用管理系统顶部及侧面导航栏简易制作

热门文章

  1. numpy部分函数使用总结
  2. keras入门 ---在小数据集上训练神经网络
  3. HDU6184 Counting Stars(三元环计数)
  4. Qml使用阿里字体图标库及FontAwesome字体图标库
  5. wifi和wlan有什么区别
  6. python input隐藏输入_python输入input
  7. Python 爬取笔趣阁小说
  8. rar压缩文件密码破解
  9. CNTV的点播调度方式
  10. python绘制ROC曲线图,并计算面积