项目稍有停歇,终于有时间来玩一下TensorFlow和DL了。看了官网入门教程就先来说说神经网络吧。
1.MNIST数据集
MNIST是一个入门级的计算机视觉数据集,它包含各种手写数字图片,如下图:官网在此
MNIST包含四个部分:一个训练图片集,一个训练标签集,一个测试图片集,一个测试标签集。下载下来后解压四个文件都是二进制文件,需要转换才能看到真实的图片。
每一个MNIST数据单元有两部分组成:一张包含手写数字的图片和一个对应的标签,每一张图片包含28X28个像素点。
2.神经网络
神经网络其实是一种算法,能够提供给我们一种复杂的非线性模型Hw,b(x),并以此来拟合我们的数据。又因为它的构造和处理信息的模式有点像人类,这让神经网络更显得神奇。
基本结构
先从最简单的说起,只有一个神经元的神经网络。
这就是一个简单的神经网络,图中的圆圈圈就是一个神经元。对于一个复杂的,多层的神经网络来说,一个神经元可以有多个输入和一个输出;每个神经元的输入即可以是其他神经元的输出,也可以是整个神经网络的输入。所谓的神经网络结构就是指不同神经元之间的连接结构。神经元结构的输出就是所有输入的加权和,不同输入的权重就是神经元的参数。
基本流程
数据从输入层输入,在隐藏层进行加权变换,最后在输出层进行输出。神经网络的优化过程就是优化神经元中参数取值的过程。
每个神经元都可以代表一种特定的输出函数,例如上面的h(x)=Wx+b。我们也称之为激励函数(Activation Function),又由于每次输入多多少少会带点噪声,那么我们则需要在后面上一个偏置(bias)。本文的激励函数我们选用softmax。
- softmax回归模型
softmax模型是logistic回归模型在多分类问题上的推广,在多分类问题中,类标签 y可以取两个以上的值。 由于MNIST是要辨识10个数字,所以该模型非常适合处理这个问题。值得一提的是,softmax是有监督。在Softmax回归中将 x 分类为类别 j 的概率为:使得所有概率之和为 1 。
3.TensorFlow变量
神经网络中的参数weight和bias是实现分类和回归问题中重要的部分。在TensorFlow中,tf.Variable的作用就是保存和更新神经网络中的参数。下面来看下TensorFlow中是如何生成和初始化变量的。
例子:
weight = tf.