29_动手实现TensorFlow–随机梯度下降

通过上一章节我们得到了每个输入对cost的梯度值,也就是forward_and_backward()函数的返回值。通过这个函数,我们的神经网络已经具备了学习的条件,为了使它开始学习,我们引入随机梯度下降方法。
阅读更多

28_动手实现TensorFlow–反向传播Backpropagation

本章节我们将实现:找出各参数对Cost的影响,弄清该如何改变参数使得Cost最小化。我们不能指望盲目改变参数值却能得到正确的结果。弄清每个参数对Cost的影响的技术是反向传播,它的本质是一个链式规则。
阅读更多

27_动手实现TensorFlow–实现梯度下降

上节实现了误差计算之后我们已经实现所有前向的计算步骤。下面我们将使用计算出的误差进行反向的操作,也就是反向传播。在这个过程中,神经网络计算权重该如何修改才能够使得误差最小。我们通常使用梯度下降法实现对权重的修改。
阅读更多

26_动手实现TensorFlow–Cost or Lost

通过之前学习我们知道,我们通过权重和偏置(weights and biases)去计算node的输出,然后通过激活函数去将输出归类。神经网络通过输入经过标记的数据进行训练,不断修改权重和偏置提高输出的精度。当前有多种办法去衡量一个神经网络的输出精度,这些办法都以网络产生尽可能接近已知正确值的值的能力为核心。人们使用不同的名称表示精确度测量,通常将其称为损失(Lost)或成本(Cost)。
阅读更多

25_动手实现TensorFlow–激活函数Sigmoid()

上节课我们实现了线性变换,使用了np.dot()实现矩阵乘法,得出y=wx+b。但神经网络需要利用交替变换和激活函数来对输出进行更好的分类。在众多激活函数中Sigmoid函数是最常用的。
阅读更多

24_动手实现TensorFlow–线性变换Linear_Transform

经过上一节课的完善,我们的MiniFlow已经可以像神经网络一样接受输入数据,产生输出数据了。但是神经网络还有一个重要特征就是可以通过训练逐渐提升精度。但我们只有一个Add节点,这是无法提升精度的。为了达到提升精度的目的,我们引入一个比Add节点更有用的节点类型:线性节点。
阅读更多

23_动手实现TensorFlow–前向传播与拓扑排序

在MiniFlow中我们设置了两种方法使数据在整个图中传递:topological_sort()和forward_pass()。topological_sort()是对图中的节点计算顺序进行排序,返回一个按照要求排序的序列。forward_pass()按照topological_sort()的顺序进行计算。
阅读更多

22_动手实现TensorFlow–MiniFlow的架构

本文通过Python代码实现一个仿TensorFlow的神经网络框架——MiniFlow,该框架具备TensorFlow的核心特征,反向传播和计算图。
在实现MiniFlow之前我们先看一下计算图的含义。
阅读更多

21_自己的TensorFlow–MiniFlow

在这个章节我们将创建自己的深度学习框架,自己的TensorFlow。

TensorFlow是目前最流行的开源神经网络框架,TensorFlow™是一个开放源代码软件库,用于进行高性能数值计算。借助其灵活的架构,用户可以轻松地将计算工作部署到多种平台(CPU、GPU、TPU)和设备(桌面设备、服务器集群、移动设备、边缘设备等)。TensorFlow™ 最初是由 Google Brain 团队(隶属于 Google 的 AI部门)中的研究人员和工程师开发的,可为机器学习和深度学习提供强力支持,并且其灵活的数值计算核心广泛应用于许多其他科学领域。
阅读更多

19_神经网络–反向传播

上节我们认识到增加隐藏层可以解决更为复杂的非线性问题,也计算出了各隐藏层节点的输入与输出值。现在问题来了,我们要怎样才能够让这种多层感知器的网络进行权重的学习呢?本节将介绍深度学习的基础:反向传播
阅读更多