美文网首页
第三周、机器学习-MNIST的手写体数字识别

第三周、机器学习-MNIST的手写体数字识别

作者: Johnny_Su | 来源:发表于2017-05-21 16:07 被阅读0次

    首先本周没有完成用神经网络训练手写体数字识别的实例,下一周继续研究,并在本篇文章结尾继续更新。

    目录:

    1.使用Softmax Regressions完成手写体数字识别

    2.利用神经网络训练手写体数字识别的必备知识

    3.利用神经网络训练手写体数字识别

    第一、使用Softmax Regressions完成手写体数字识别

    其实学习TensorFlow的MNIST实验就相当于在学习C语言中打印出“Hello world!”。在MNIST For ML Beginners中官方指南给出了详细的说明并提供了实现Code,我按照其提供的Code运行结果为0.9714,还有很大的提升空间。

    第二、利用神经网络训练手写体数字识别的必备知识

    所需的必备知识有卷积、池化、全连接、Dropout激励函数CNN神经网络层次分析

    第三、利用神经网络训练手写体数字识别

    参见训练代码,其中使用到了:

    1.InteractiveSession类,这能让你在构建代码时更加灵活,允许你做一些交互操作,通过创建一个计算流图(computation graph)来部分地运行图计算。

    2.tf.nn.conv2d(x, W,strides=[1,1,1,1],padding='SAME'),计算卷积的方法,tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, name=None)

    除去name参数用以指定该操作的name,与方法有关的一共五个参数:

    第一个参数input:指需要做卷积的输入图像,它要求是一个Tensor,具有[batch, in_height, in_width, in_channels]这样的shape,具体含义是[训练时一个batch的图片数量, 图片高度, 图片宽度, 图像通道数],注意这是一个4维的Tensor,要求类型为float32和float64其中之一

    第二个参数filter:相当于CNN中的卷积核,它要求是一个Tensor,具有[filter_height, filter_width, in_channels, out_channels]这样的shape,具体含义是[卷积核的高度,卷积核的宽度,图像通道数,卷积核个数],要求类型与参数input相同,filter的通道数要求与input的in_channels一致,有一个地方需要注意,第三维in_channels,就是参数input的第四维

    第三个参数strides:卷积时在图像每一维的步长,这是一个一维的向量,长度4,strides[0]=strides[3]=1

    第四个参数padding:string类型的量,只能是"SAME"(),"VALID"其中之一,这个值决定了不同的卷积方式

    第五个参数:use_cudnn_on_gpu:bool类型,是否使用cudnn加速,默认为true

    结果返回一个Tensor,这个输出,就是我们常说的feature map

    2.tf.nn.max_pool(x,ksize=[1,2,2,1],strides=[1,2,2,1],padding='SAME'),采用最大池化的方法,减少数据量,提高计算速度。

    3.weight_variable([7*7*64,1024]),全连接层,图像的尺寸被缩减为7 * 7,我们最后加入一个神经元数目为1024的全连接层来处理所有的图像上。

    4.tf.nn.dropout(h_fc1, keep_prob),为了减少过拟合程度,在输出层之前应用dropout技术(即丢弃某些神经元的输出结果)。

    相关文章

      网友评论

          本文标题:第三周、机器学习-MNIST的手写体数字识别

          本文链接:https://www.haomeiwen.com/subject/nrzmxxtx.html