在进行机器学习时,一般学习的第一个项目就是手写MNIST识别学习。相当于Hello,Word,方便我们初步对机器学习有一个大概的概念。
什么是MNIST?
MNIST 是一个入门级计算机视觉数据集,包含了很多手写数字图片。如下图所示,为四张MNIST图片.
(MNIST资源很有网站都可以免费下载,如果实在找不到的可以联系我)
什么是TensorFlow?
TensorFlow是谷歌于2015年11月9日正式开源的计算框架。TensorFlow计算框架可以很好地支持深度学习的各种算法,但它的应用也不限于深度学习。
TensorFlow是由Jeff Dean领头的谷歌大脑团队基于谷歌内部第一代深度学习系统DistBelief改进而来的通用计算框架。DistBelief是谷歌2011年开发的内部深度学习工具,这个工具在谷歌内部已经获得了巨大的成功。
综上,TensorFlow就是深度学习工具。也就是流图从网络的一端流动到另一端的计算过程。
基本概念
TensorFlow中所有数据都是由张量的形式表示。
张量是什么?张量是一种组合数据类型,表示一个多维数组,通用表达形式为:[T1,T2,T3,…Tn],其中T可以是单个数字,也是是一个矩阵。
张量的维又叫张量的阶,是张量维数的一个数量描述。例:
1 #维度为0的张量
[1,2,3] #维度为1
[[1],[2]] #维度为2
[[1],[2],[3]] #维度为2
[[[1],[2]],[[3],[4]]] #维度为3
张量的形状,表达形式为[D0,D1,…Dn] D为任意正整数。例:
形状[3,4] 表示第一维有3个元素,第二维有4个元素。 [3,4]表示一个3行4列的矩阵
常量
def constant(value,dtype=None,shape=None,name=‘Const’,verify_shape=False)
value: 符合tf中定义的数据类型的常数值或者常数列表
dtype:数据类型,可选
shape:常量的形状,可选
name:常量的名字,可选
verify_shape:常量的形状是否可以被更改,默认不可更改
例:tensor_constant1 = tf.constant([1,2,3,4])
变量
TensorFlow中的变量特指深度学习机制中,控制输入到输出映射的可以变化的数据,
这些变化数据随着训练迭代的进行,不断地改变数值,不断优化,使输出的结果越来越接近于正确的结果。
例:初始化一个含有100个值为0的一维常量的变量:
w_c1 = Variable(tf.zeros([100]))
占位变量
def placeholder(dtype,shape=None,name=None)
dtype:表示tensorflow中的数据类型,如常用的tf.float32,tf.float64等数值类型
shape:表示数据类型,默认的None是一个一维的数值,shape=[None,5],表示行不定,列是5
name:张量名称
例:X = tf.placeholder(tf.float32,shape=[None,100*100])