TensorFlow实战-TensorFlow第一步-第3章
Posted learnfromnow
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TensorFlow实战-TensorFlow第一步-第3章相关的知识,希望对你有一定的参考价值。
3 TensorFlow第一步 39
3.1 TensorFlow的编译及安装 39
-
install anconda
link -
CPU version
conda install tensorflow -
GPU version
conda install tensorflow-gpu
3.2 TensorFlow实现SoftmaxRegression识别手写数字 46
导入数据
MNIST是一个非常简单的机器视觉数据集,由几万张28x28像素的手写数字组成,这些图片只包含灰度信息。
1
|
from tensorflow.examples.tutorials.mnist import input_data
|
Extracting MNIST_data/train-images-idx3-ubyte.gz
Extracting MNIST_data/train-labels-idx1-ubyte.gz
Extracting MNIST_data/t10k-images-idx3-ubyte.gz
Extracting MNIST_data/t10k-labels-idx1-ubyte.gz
(55000, 784) (55000, 10)
(10000, 784) (10000, 10)
(5000, 784) (5000, 10)
可以看到数据集中,训练集有55000个样本,测试集有10000个样本,验证集有5000个样本。
这里的数据全部丢弃了图片的二维结构信息,只是把一张图片变成了一个很长的一维向量。
我们可以使用matplotlib把一维数据还原为原来的图像。如下所示。
1
|
from matplotlib import pyplot as plt
|
[0. 0. 0. 0. 0. 0. 0. 1. 0. 0.]
)
训练数据(55000, 784),第一维是图片的编号,第二维是图片中像素点的编号。
对10个种类的标签进行了onehot编码,如上所示,[0. 0. 0. 0. 0. 0. 0. 1. 0. 0.] 代表为7
准备好数据以后,接下来就要设计算法了
这里使用了一个叫做softmax regression的算法来训练分类模型。
当我们处理分类任务时,通常需要使用softmax regression模型。即使后面章节中的CNN或者RNN,如果是分类模型,最后一层同样也是softmax regression。
它的工作原理很简单,将可以判定为某类的特征想加,然后将这些特征转化为判定为这一类的概率。
这些特征可以通过一些简单的方法得到,比如对所有像素求一个加权和,而权重是根据数据自动学习、训练出来的。比如某一个像素的灰度值大代表可能是数字n的概率越大。
如下公式:
其中i为第i类,j代表一张图片的第j个像素。bi是bias。
接下来计算所有特征的softmax,简单的说就是计算一个exp函数,然后再进行标准化(让所有类别的输出的概率值和为1)。
其中判定为第i类的概率是:
可以用下面一行简洁的表达:
cross_entropy的定义如下:
1
|
import tensorflow as tf
|
0.9194
总结
从上面的例子,我们可以总结一下整个流程。
- 定义算法公式,也就是神经网络forward时的计算
- 定义loss,选定优化器,并指定优化器优化loss
- 迭代地对数据进行训练
- 在测试集或者验证集上对准确率进行评测。
以上是关于TensorFlow实战-TensorFlow第一步-第3章的主要内容,如果未能解决你的问题,请参考以下文章
6.4 tensorflow2实现FNN推荐系统——Python实战(第二篇)
Tensorflow实战 手写数字识别(Tensorboard可视化)
读书笔记-《机器学习实战:基于Scikit-LearnKeras和TensorFlow》 第2版(第一章)