TensorFlow反向传播算法实现
反向传播(BPN)算法是神经网络中研究最多、使用最多的算法之一,用于将输出层中的误差传播到隐藏层的神经元,然后用于更新权重。

学习 BPN 算法可以分成以下两个过程:

  1. 正向传播:输入被馈送到网络,信号从输入层通过隐藏层传播到输出层。在输出层,计算误差和损失函数。
  2. 反向传播:在反向传播中,首先计算输出层神经元损失函数的梯度,然后计算隐藏层神经元损失函数的梯度。接下来用梯度更新权重。

这两个过程重复迭代直到收敛。

前期准备
首先给网络提供 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/)。

具体实现过程
现在开始使用反向传播算法:

  1. 导入模块:

  2. 加载数据集,通过设置 one_hot=True 来使用独热编码标签:

  3. 定义超参数和其他常量。这里,每个手写数字的尺寸是 28×28=784 像素。数据集被分为 10 类,以 0 到 9 之间的数字表示。这两点是固定的。学习率、最大迭代周期数、每次批量训练的批量大小以及隐藏层中的神经元数量都是超参数。可以通过调整这些超参数,看看是如何影响网络表现的:

  4. 需要 Sigmoid 函数的导数来进行权重更新,所以定义:

  5. 为训练数据创建占位符:

  6. 创建模型:

  7. 定义权重和偏置变量:

  8. 为正向传播、误差、梯度和更新计算创建计算图:

  9. 定义计算精度 accuracy 的操作:

  10. 初始化变量:

  11. 执行图:

  12. 结果如下:

解读分析
在这里,训练网络时的批量大小为 10,如果增加批量的值,网络性能就会下降。另外,需要在测试数据集上检测训练好的网络的精度,这里测试数据集的大小是 1000。

单隐藏层多层感知机在训练数据集上的准确率为 84.45,在测试数据集上的准确率为 92.1。这是好的,但不够好。MNIST 数据集被用作机器学习中分类问题的基准。接下来,看一下如何使用 TensorFlow 的内置优化器影响网络性能。

TensorFlow反向传播算法实现相关推荐

  1. TensorFlow基础10-(误差反向传播算法以及实现多层神经网络)

    记录TensorFlow听课笔记 文章目录 记录TensorFlow听课笔记 一,误差反向传播算法 二,链式求导法则 三,隐含层有多个神经元的误差反向传播 四,激活函数 五,实现多层神经网络 一,误差 ...

  2. 《TensorFlow 2.0深度学习算法实战教材》学习笔记(六、反向传播算法)

    反向传播算法和梯度下降算法是神经网络的核心算法. 导数与梯度 导数本身是标量,没有方向,但是导数表征了函数值在某个方向Δ

  3. TensorFlow 2.0深度学习算法实战 第七章 反向传播算法

    第七章 反向传播算法 7.1 导数与梯度 7.2 导数常见性质 7.2.1 基本函数的导数 7.2.2 常用导数性质 7.2.3 导数求解实战 7.3 激活函数导数 7.3.1 Sigmoid 函数导 ...

  4. 独家 | 数据科学家指南:梯度下降与反向传播算法

    作者:Richmond Alake 翻译:陈之炎 校对:zrx本文约3300字,建议阅读5分钟 本文旨在为数据科学家提供一些基础知识,以理解在训练神经网络时所需调用的底层函数和方法. 标签:神经网络, ...

  5. 反向传播算法最全解读,机器学习进阶必看!

    如果对人工智能稍有了解的小伙伴们,或多或少都听过反向传播算法这个名词,但实际上BP到底是什么?它有着怎样的魅力与优势?本文发布于 offconvex.org,作者 Sanjeev Arora与 Ten ...

  6. 梯度下降与反向传播算法的原理与推导

    梯度下降算法是机器学习中最常用的优化算法之一,它可以求得目标函数的最小值,即算法的最优解.而对于复杂的多层神经网络来说,运用梯度下降算法十分复杂,因为其包含求导过程,为此学者将多层神经网络的优化问题简 ...

  7. 脱离公式谈谈对反向传播算法的理解

    机器学习的训练过程可看作是最优化问题的求解过程. 根据原理 对于函数f(x),如果f(x)在点xt附近是连续可微的,那么f(x)下降最快的方向是f(x)在xt点的梯度的反方向 得到最简单最常用的优化算 ...

  8. 用反向传播算法解释大脑学习过程?Hinton 等人新研究登上 Nature 子刊

    机器之心报道 魔王.Jamin.杜伟 反向传播可以解释大脑学习吗?近日 Hinton 等人的研究认为,尽管大脑可能未实现字面形式的反向传播,但是反向传播的部分特征与理解大脑中的学习具备很强的关联性.该 ...

  9. LSTM模型与前向反向传播算法

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 前  言 在循环神经网络(RNN)模型与前向反向传播算法中,我们总 ...

最新文章

  1. php ile_get_contents无法请求https连接的解决方法
  2. layui时间怎么设置年月日时分秒_layui-laydate时间日历控件使用方法详解
  3. 使用 EasyBCD 安装Ubuntu 14.04 Error 15: file not found错误的解决方法
  4. ElasticSearch-hadoop saveToEs源码分析
  5. python测试开发自学教程-自动化平台测试开发- Python 测试开发实战
  6. python学习第二课要点记录
  7. ESP32片上模数转换ADC精度简单测试方案及测试数据分享
  8. HDU 1372 Knight Moves
  9. C# 依据鼠标坐标取网页内成员坐标.ie
  10. CTS(12)---android 兼容性测试 CTS 测试过程
  11. Win11未安装Defender怎么办?解决Win11未安装Defender的方法
  12. java day38【Servlet 、HTTP协议 、Request】
  13. linux怎么启动程序路径,linux查找启动程序的路径
  14. 对象数组 —— 学生信息表
  15. Android取手机号码
  16. SQL基础篇 (增 删 查 改)
  17. 【Spark Mllib】决策树,随机森林——预测森林植被类型
  18. 平面阵列天线的3D方向图的Python综合
  19. c语言笔记(翁凯男神
  20. SQL异常:exist: integer = character varying

热门文章

  1. Go 知识点(17)— go 工具链 go test 使用
  2. 浅显易懂 Makefile 入门 (07)— 其它函数(foreach 、if、call、origin )
  3. Docker 入门系列(1)- 初识容器,镜像、容器、仓库的区别
  4. 通过聚合数据API获取微信精选文章
  5. 文件句柄和文件描述符的区别和理解指针
  6. dockerfile kafka
  7. MinkowskiEngine demo ModelNet40分类
  8. 【CV】吴恩达机器学习课程笔记第10章
  9. HarmonyOS 界面跳转以及界面跳转的同时传递参数
  10. nginx环境的搭建