TensorFlow 中文社区 MNIST学习笔记

本笔记内容整理自: http://www.tensorfly.cn/tfdoc/tutorials/mnist_beginners.html

官方例子: 辨识手写数字

要实现的功能: 从MNIST数据集中训练, 学习, 实现识别手写数字的功能.

模型思路:

每一张图片包含(28像素*28像素)。我们可以用一个数字数组来表示这张图片:

我们把这个数组展开成一个向量,长度是 28×28 = 784。

于是, 对于给定的一张图片, 可以通过矩阵将图片表示为: [x1, x2, … , x784].

通过神经网络, 将分别对这个矩阵数据进行加权运行, 加上一定的偏移量(bias), 计算出对应0-9的每个数字的概率是多少, 概率最大的那个就是神经经网络判断的结果.

所有步骤可以简化为:

1.

对[x1, x2, ..., x784]通过加权矩阵[W1,1, W1,2, ..., W1,784]计算, 加上偏移b1, 得到X这张图片数字为0的概率;

2.

对[x1, x2, ..., x784]通过加权矩阵[W2,1, W2,2, ..., W2,784]计算, 加上偏移b2, 得到X这张图片数字为1的概率;

3.

 ...... (分别计算为2,3,4,5,6,7,8的概率); 

4.

对[x1, x2, ..., x784]通过加权矩阵[W10,1, W10,2, ..., W10,784]计算, 加上偏移b9, 得到X这张图片数字为9的概率;

5.

得出概率最大的那个即为神经网络运算的结果, 同时如果概率要尽可能接近100%, 则表示结果可信度更好.

这里, 加权矩阵W[784,10], 以及偏移量矩阵b[1,10], 就是我们通过深度学习要挖掘出来的数据, 是我们所有训练, 测试所要达到的目标.

对于softmax回归模型可以用下面的图解释,对于输入的xs加权求和,再分别加上一个偏置量,最后再输入到softmax函数中:

 

其实就是:

y1=softmax(W1,1 * X1 +W1,2 * X2 +W1,3 * X3 + b1)

y2=softmax(W2,1 * X1 +W2,2 * X2 +W2,3 * X3 + b2)

y3=softmax(W3,1 * X1 +W3,2 * X2 +W3,3 * X3 + b3)

我们可以用向量表示这个计算过程:用矩阵乘法和向量相加。这有助于提高计算效率。(也是一种更有效的思考方式)

更进一步,可以写成更加紧凑的方式:

softmax函数的作用: 把Wx+b的输出空间映射到[0, 1]这个区间, 映射得到的值相当于统计意义上的概率, 不同输出值的大小相当于概率的大小.

 

Leave a Reply

Your email address will not be published.