当前位置:   article > 正文

tensorflow入门项目(一):手写数字识别之DNN模型(超超超详解)_dnn入门项目

dnn入门项目

前言

手写数字识别,为了学习的需要,所以记录的超级详细。一看就会,一看就懂。
一开始下载数据可能会花费点时间。
直接复制,即可运行。

也可以跳过正文,直接复制代码,代码里包含了全部的讲解

正文

MNIST 数据集中的每张图片由 28 x 28 个像素点构成, 每个像素点用一个灰度值表示.
在这里, 我们将 28 x 28 的像素展开为一个一维的行向量, 这些行向量就是图片数组里的行(每行 784 个值, 或者说每行就是代表了一张图片).
mnist 函数返回的第二个数组(labels) 包含了相应的目标变量, 也就是手写数字的类标签(整数 0-9).

tf.placeholder(dtype, shape=None, name=None)
TensorFlow中的占位符,用于feed_dict传入外部数据。
dtype:数据类型。
shape:数据的维度。默认为None,表示没有限制
name:名称
返回类型:Tensor

tf.Variable(initializer,name),
参数initializer是初始化参数,
name是可自定义的变量名称

tf.random_normal(形状,平均值= 0.0,stddev = 1.0,dtype = tf.float32,种子=无,名称=无)
shape:输出张量的形状,必选
平均:正态分布的均值,默认为0
stddev:正态分布的标准差,交替为1.0
dtype:输出的类型,默认为tf.float32
seed:随​​机数种子,是一个整数,当设置之后,每次生成的随机数都一样
名称:操作的名称

tf.matmul(a, b, transpose_a=False, transpose_b=False, adjoint_a=False, adjoint_b=False, a_is_sparse=False, b_is_sparse=False, name=None)
a: 一个类型为 float16, float32, float64, int32, complex64, complex128 且张量秩 > 1 的张量。
b: 一个类型跟张量a相同的张量。
其他的参数没用上就不一一介绍了
返回值: 一个跟张量a和张量b类型一样的张量且最内部矩阵是a和b中的相应矩阵的乘积。

tf.nn.softmax(logits,axis=None,name=None,dim=None)
logits:一个非空的Tensor。必须是下列类型之一:half, float32,float64
axis:将在其上执行维度softmax。默认值为-1,表示最后一个维度
name:操作的名称(可选)
dim:axis的已弃用的别名
返回:一个Tensor,与logits具有相同的类型和shape
通过Softmax回归,将logistic的预测二分类的概率的问题推广到了n分类的概率的问题
softmax的输出向量是概率,该样本属于各个类的概率,这里是十个类别0-9。输出的向量的每个值的大小范围为0到1。
当一个样本经过softmax层并输出一个向量,会取这个向量中值最大的那个数的index作为这个样本的预测标签,
下文中的tf.argmax(pred , 1)就是取最大值操作

tf.log函数,这个函数完成了对张量所有元素依次求对数的功能

tf.reduce_sum(input_tensor,axis=None,keepdims=None,name=None,reduction_indices=None,keep_dims=None)
input_tensor:待求和的tensor;
reduction_indices:在以前版本中用来指定轴,已弃用;
有两个取值分别为0和1,通常用reduction_indices=[0]或reduction_indices=[1]来传递参数。
从上图可以看出,当等于0时,是纵向对矩阵求和,原来矩阵有几列就得到几个值;
相似地,当等于1时,是横向对矩阵求和;当省略参数时,默认对矩阵所有元素进行求和。
reduce_sum应该理解为压缩求和,用于降维,不懂指路:https://blog.csdn.net/lxg080

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/697828
推荐阅读
相关标签
  

闽ICP备14008679号