python实现误差逆传播算法
最近学习神经网络,自己参照源代码把误差逆传播重新写了一遍,其实挺简单的,关键是要把逆传播的几个过程搞清楚以及每一步是为了得到什么,然后知道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实现误差逆传播算法相关推荐
- 《机器学习与数据挖掘》实验五 编程实现误差逆传播算法(BP算法)
前言: 摘要:本文对机器学习实验五 标准BP算法的代码进行实现,如果不了解的BP算法的话,可以自行上网搜索BP算法的详解. 实验题目:编程实现误差逆传播算法(BP算法) 实验目的:掌握误差逆传播算法( ...
- 人工智能知识全面讲解:多层神经网络与误差逆传播算法
7.3.1 从单层到多层神经网络 明斯基教授曾表示,单层神经网络无法解决异或问题,但是当增加一个计 算层以后,两层神经网络不仅可以解决异或问题,而且具有非常好的非线性分 类效果.只是两层神经网络的计算 ...
- BP(BackPropagation)误差逆传播算法
上篇文章介绍了多层前馈神经网络,那么这种网络是怎样训练生成的呢,BP算法就是其中一种生成多层神经网络的算法 ,又称为反向传播算法,下面来了解一下BP算法. 举例: 下图中是根据一个手写数字辨识的神经网 ...
- BP算法误差逆传播参数更新公式推导
BP算法误差逆传播参数更新公式推导
- 误差逆传播算法公式理解及推导
前言:公式理解及推导参考自<机器学习>周志华 P101 BP网络 BP网络一般是指由 误差逆传播(error BackPropagation, BP)算法训练的多层前馈神经网络. 给定训练 ...
- 机器学习经典算法具体解释及Python实现--K近邻(KNN)算法
(一)KNN依旧是一种监督学习算法 KNN(K Nearest Neighbors,K近邻 )算法是机器学习全部算法中理论最简单.最好理解的.KNN是一种基于实例的学习,通过计算新数据与训练数据特征值 ...
- 深度学习入门笔记(六):误差反向传播算法
专栏--深度学习入门笔记 推荐文章 深度学习入门笔记(一):机器学习基础 深度学习入门笔记(二):神经网络基础 深度学习入门笔记(三):感知机 深度学习入门笔记(四):神经网络 深度学习入门笔记(五) ...
- Python 还原控制SCI论文算法系列1: 基于策略迭代的自适应最优控制器设计
Python 还原控制SCI论文算法系列1: 基于策略迭代的自适应最优控制器设计 文章目录 Python 还原控制SCI论文算法系列1: 基于策略迭代的自适应最优控制器设计 0.前言 1.研究问题的描 ...
- Python实现标准的Kmeans算法
Python实现标准的Kmeans算法 Kmeans很常用,特别是针对无监督学习.Kmeans简单容易理解,但是功能还是很强大的. 1 Kmeans算法原理 基本原理,就是通过距离的大小去将数据分类. ...
- python 决策树回归参数_使用 Python 和 scikit-learn 学习回归算法
本教程已纳入面向开发者的机器学习这一学习路径. 简介 在本教程中,我们将介绍解决基于回归的机器学习问题的基础知识,并对当前最流行的一些算法进行比较研究. 设置 注册或登录. 从 Try IBM Wat ...
最新文章
- VS2012代码提示快捷键
- Google Map App 问题集锦
- 相见恨晚的 Python 内置库:itertools
- Docker for windows 容器内网通过独立IP直接访问的方法
- centos 6.7 mysql 5.6_CentOS 6.7 安装 MySQL 5.6 思路整理
- 顶点计划家庭感情冲突问题讨论
- UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xae in position 53: illegal multibyte sequence
- r语言列表添加元素_技术贴 | R语言:geom_smooth在散点图中添加多条回归直线
- 科来网络分析工具基本操作与案例分析
- 华为EC6108V9C/ E6108V9强刷固件及教程
- M1芯片,PS2022版真的来了。Photoshop 2022 for Mac中文版介绍安装教程,支持Monterey系统
- java拼图游戏(带文档资料)
- AT24C1024读写
- ae字体预设下载_20组经典的文字动画AE源文件,含20个AE预设
- 字节跳动或推独立出口电商APP,亚马逊阿里虾皮:不慌
- Python技巧——解析式
- 爬取每日必应图片,python爬虫简单入门
- CATIA鼠标操作简介
- JavaScript 设计模式学习第五篇-继承与原型链
- 通用管理系统顶部及侧面导航栏简易制作