相信大家对使用Lenet5识别Mnist数据集的方法已经耳熟能详,也是众多研究者的入门首选,但受制于开发工具、代码难度、网络构建、数据集获取等因素,许多人望而却步,本文目的就是用最简洁的介绍,最简洁的代码,展示该网络的构建、训练与测试全过程。
一、预先准备
- 语言选择:Python;
请放下心中对其他任何语言的偏爱,Python在人工智能领域的研究优势是其他语言所不能比拟的,其语言设计简单,且全世界有大量的公司或研究者在为Python编写便于研究的扩展包,这就相当于你的研究将会建立在无数人前人的基础之上。 - IDE选择:PyCharm;
PyCharm是目前使用人数最多的PythonIDE,它不好难道用的少的好?至于怎么下载安装,不要太简单,不再赘述。 - 第三方库:Tensorflow;
接第一点,既然有这么多人为我们提供便利,为何不用呢?且Tensorflow是现在占有率最高的AI学习工具,并且是由公司Google推出,当然首选Tensorflow。 - 安装Tensorflow;
这点相信很多初学者看的头昏脑胀,其实PyCharm为我们提供了十分简便的第三方库安装方法,依次点击PyCharm-Preference-Project Interpreter-左下角的小“+”号,搜索并install自己需要的库就OK啦。 - Mnist获取;
Tensorflow自带,不用单独下载。
二、 程序编写
在准备工作完成后,直接打开PyCharm开撸代码,本文提供的代码共19行,本节将对这19行逐一讲解,直至实现全部功能。
1.import tensorflow as tf
没啥说的,加载Tensorflow库,起名叫tf。
2.import tensorflow.examples.tutorials.mnist.input_data as input_data
顾名思义,让Tensorflow加载Mnist数据集,起名叫input_data
3.x = tf.placeholder('float', shape=[None, 28*28])
Python在使用变量时需要先定义,原理上就是在内存上先给他分配一个空间。x就是输入的图片,大小为2828。注意:这里的x还没有形状,只有2828的大小。
4.y_true = tf.placeholder('float', shape=[None, 10])
为Mnist数据集中图片的标签分配内存。
5.conv_relu_pool_1 = tf.nn.max_pool(tf.nn.relu(tf.nn.bias_add(tf.nn.conv2d(tf.reshape(x, [-1, 28, 28, 1]),tf.Variable(tf.truncated_normal([5, 5, 1, 6], stddev=0.1)),strides=[1,1,1,1],padding="SAME"),tf.Variable(tf.constant(0.1, shape=[6])))),ksize=[1,2,2,1],strides=[1,2,2,1],padding