04-00 Deep_Neural_Network–线性模型的局限性

03章节的TensorFlow入门我们建立了一个线性的模型Wx+b,实现了针对图片训练的简单逻辑分类器。这个功能看起来不错,但是功能却是十分有限。我们需要引入非线性的元素来实现更多的功能。
阅读更多

3-06 TensorFlow入门–随机梯度下降

前面我们反复提到了使用梯度下降法逐渐调整神经网络的权重和偏置,使得神经网络输出的loss逐渐逼近最小值。同时,用于训练网络的训练数据集越大越好,越能提高神经网络预测的精度。这就有一个矛盾:梯度下降法每计算一次需要输入全部的数据计算误差,再反向求导。模型越复杂,输入数据越多,计算量就会飙升。

阅读更多

3-05 TensorFlow入门–过拟合以及训练集的大小

分类器经常会使用大量数据进行训练,但训练总是会带来一些问题:分类器可以非常好的识别那些见过的数据,一旦输入全新的数据,预测结果会变得非常差。这种情况在分类器中是普遍存在的,这是因为分类器总是偏向于记住这些训练数据而不是记住特征后推理新数据。我们将在这个章节讨论如何解决这种过拟合问题,以及选取多大的训练集比较合适。
阅读更多

3-04 TensorFlow入门-输入与优化

经过上面几个章节的讲解,我们知道了使交叉熵减小的办法是梯度下降,需要对损失函数求导。我们掌握了导数工具之后将面临两个问题:我如何将图像输入到我的分类器中,以及我何时开始进行我的优化过程?本章节我们将会一一解答。

阅读更多

3-03 TensorFlow入门-One_Hot编码与交叉熵

上一节我们训练了我们的第一个分类器,其中sandbox文件中有很多有意思的点可以探讨:softmax、one-hot encoding。这一章节我们将一一探讨这些知识点。
阅读更多

3-02 TensorFlow入门-训练分类器

分类事一种给定输入和标记的任务,如下图的字母,每个字母有一个标签,说明它是什么。典型情况下我们会有很多样本,我们把它归类后交给分类器学习。当出现了全新的样本时,分类器的目标是指出这个新样本属于哪一类。虽然机器学习不仅仅包含分类,但是分类是我们机器学习的基础,例如:排序,目标检测,回归等算法都需要基于分类。本文将实现使用TensorFlow训练识别手写数字0,1,2.

阅读更多

3-01 TensorFlow入门-Hello World

上节我们使用了一个hello world的示例来测试TensorFlow是否正确安装,现在我们来看一看这一段代码究竟做了什么。

阅读更多

3-00 TensorFlow入门–安装TensorFlow

本章节开始学习如何使用TensorFlow解决实际问题。围绕MNIST数据集识别出图像中的字母作为目标。以下是MNIST数据集中字母A的一些图形:
阅读更多

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

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

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

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