TensorFlow反向传播算法实现
TensorFlow反向传播算法实现
反向传播(BPN)算法是神经网络中研究最多、使用最多的算法之一,用于将输出层中的误差传播到隐藏层的神经元,然后用于更新权重。
学习 BPN 算法可以分成以下两个过程:
- 正向传播:输入被馈送到网络,信号从输入层通过隐藏层传播到输出层。在输出层,计算误差和损失函数。
- 反向传播:在反向传播中,首先计算输出层神经元损失函数的梯度,然后计算隐藏层神经元损失函数的梯度。接下来用梯度更新权重。
这两个过程重复迭代直到收敛。
前期准备
首先给网络提供 M 个训练对(X,Y),X 为输入,Y 为期望的输出。输入通过激活函数 g(h) 和隐藏层传播到输出层。输出 Yhat 是网络的输出,得到 error=Y-Yhat。其损失函数 J(W) 如下:
其中,i 取遍所有输出层的神经元(1 到 N)。然后可以使用 J(W) 的梯度并使用链式法则求导,来计算连接第 i 个输出层神经元到第 j 个隐藏层神经元的权重 Wij 的变化:
这里,Oj 是隐藏层神经元的输出,h 表示隐藏层的输入值。这很容易理解,但现在怎么更新连接第 n 个隐藏层的神经元 k 到第 n+1 个隐藏层的神经元 j 的权值 Wjk?过程是相同的:将使用损失函数的梯度和链式法则求导,但这次计算 Wjk:
现在已经有方程了,看看如何在 TensorFlow 中做到这一点。在这里,还是使用 MNIST 数据集(http://yann.lecun.com/exdb/MNIST/)。
具体实现过程
现在开始使用反向传播算法:
导入模块:
加载数据集,通过设置 one_hot=True 来使用独热编码标签:
定义超参数和其他常量。这里,每个手写数字的尺寸是 28×28=784 像素。数据集被分为 10 类,以 0 到 9 之间的数字表示。这两点是固定的。学习率、最大迭代周期数、每次批量训练的批量大小以及隐藏层中的神经元数量都是超参数。可以通过调整这些超参数,看看是如何影响网络表现的:
需要 Sigmoid 函数的导数来进行权重更新,所以定义:
为训练数据创建占位符:
创建模型:
定义权重和偏置变量:
为正向传播、误差、梯度和更新计算创建计算图:
定义计算精度 accuracy 的操作:
初始化变量:
执行图:
结果如下:
解读分析
在这里,训练网络时的批量大小为 10,如果增加批量的值,网络性能就会下降。另外,需要在测试数据集上检测训练好的网络的精度,这里测试数据集的大小是 1000。
单隐藏层多层感知机在训练数据集上的准确率为 84.45,在测试数据集上的准确率为 92.1。这是好的,但不够好。MNIST 数据集被用作机器学习中分类问题的基准。接下来,看一下如何使用 TensorFlow 的内置优化器影响网络性能。
TensorFlow反向传播算法实现相关推荐
- TensorFlow基础10-(误差反向传播算法以及实现多层神经网络)
记录TensorFlow听课笔记 文章目录 记录TensorFlow听课笔记 一,误差反向传播算法 二,链式求导法则 三,隐含层有多个神经元的误差反向传播 四,激活函数 五,实现多层神经网络 一,误差 ...
- 《TensorFlow 2.0深度学习算法实战教材》学习笔记(六、反向传播算法)
反向传播算法和梯度下降算法是神经网络的核心算法. 导数与梯度 导数本身是标量,没有方向,但是导数表征了函数值在某个方向Δ
- TensorFlow 2.0深度学习算法实战 第七章 反向传播算法
第七章 反向传播算法 7.1 导数与梯度 7.2 导数常见性质 7.2.1 基本函数的导数 7.2.2 常用导数性质 7.2.3 导数求解实战 7.3 激活函数导数 7.3.1 Sigmoid 函数导 ...
- 独家 | 数据科学家指南:梯度下降与反向传播算法
作者:Richmond Alake 翻译:陈之炎 校对:zrx本文约3300字,建议阅读5分钟 本文旨在为数据科学家提供一些基础知识,以理解在训练神经网络时所需调用的底层函数和方法. 标签:神经网络, ...
- 反向传播算法最全解读,机器学习进阶必看!
如果对人工智能稍有了解的小伙伴们,或多或少都听过反向传播算法这个名词,但实际上BP到底是什么?它有着怎样的魅力与优势?本文发布于 offconvex.org,作者 Sanjeev Arora与 Ten ...
- 梯度下降与反向传播算法的原理与推导
梯度下降算法是机器学习中最常用的优化算法之一,它可以求得目标函数的最小值,即算法的最优解.而对于复杂的多层神经网络来说,运用梯度下降算法十分复杂,因为其包含求导过程,为此学者将多层神经网络的优化问题简 ...
- 脱离公式谈谈对反向传播算法的理解
机器学习的训练过程可看作是最优化问题的求解过程. 根据原理 对于函数f(x),如果f(x)在点xt附近是连续可微的,那么f(x)下降最快的方向是f(x)在xt点的梯度的反方向 得到最简单最常用的优化算 ...
- 用反向传播算法解释大脑学习过程?Hinton 等人新研究登上 Nature 子刊
机器之心报道 魔王.Jamin.杜伟 反向传播可以解释大脑学习吗?近日 Hinton 等人的研究认为,尽管大脑可能未实现字面形式的反向传播,但是反向传播的部分特征与理解大脑中的学习具备很强的关联性.该 ...
- LSTM模型与前向反向传播算法
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 前 言 在循环神经网络(RNN)模型与前向反向传播算法中,我们总 ...
最新文章
- php ile_get_contents无法请求https连接的解决方法
- layui时间怎么设置年月日时分秒_layui-laydate时间日历控件使用方法详解
- 使用 EasyBCD 安装Ubuntu 14.04 Error 15: file not found错误的解决方法
- ElasticSearch-hadoop saveToEs源码分析
- python测试开发自学教程-自动化平台测试开发- Python 测试开发实战
- python学习第二课要点记录
- ESP32片上模数转换ADC精度简单测试方案及测试数据分享
- HDU 1372 Knight Moves
- C# 依据鼠标坐标取网页内成员坐标.ie
- CTS(12)---android 兼容性测试 CTS 测试过程
- Win11未安装Defender怎么办?解决Win11未安装Defender的方法
- java day38【Servlet 、HTTP协议 、Request】
- linux怎么启动程序路径,linux查找启动程序的路径
- 对象数组 —— 学生信息表
- Android取手机号码
- SQL基础篇 (增 删 查 改)
- 【Spark Mllib】决策树,随机森林——预测森林植被类型
- 平面阵列天线的3D方向图的Python综合
- c语言笔记(翁凯男神
- SQL异常:exist: integer = character varying