标签:-128 inpu rop element cnn number under otl 表达
install anconda
link
CPU version
conda install tensorflow
GPU version
conda install tensorflow-gpu
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
从上面的例子,我们可以总结一下整个流程。
TensorFlow实战-TensorFlow第一步-第3章
标签:-128 inpu rop element cnn number under otl 表达
原文地址:https://www.cnblogs.com/LearnFromNow/p/9349631.html