2022-02-19
,了解有关机器学习和深度学习的更多信息!
手写数字识别
下一步将以MNIST数据集为例,使用卷积层和池化层实现手写数字识别的卷积神经网络,并输出卷积和池化效果。
数据准备
MNIST数据集可以直接从网站的THE MNIST下载。
网址:
train–idx3-ubyte.gz:训练集图片
train–idx1-ubyte.gz:训练集列索引
p>
t10k–idx3-ubyte.gz: 测试集图片
t10k–idx1-ubyte.gz:测试集列索引
与加载MNIST数据库相关的,可以在程序运行时直接加载。
代码如下:
from tensorflow.examples.tutorials.mnist import input_data
import matplotlib.pyplot as pyplot
#引入 MNIST 数据集
mnist = input_data.read_data_sets("/tmp/data/", one_hot=False)
#选取训练集中的第 1 个图像的矩阵
mnist_one=mnist.train.images[0]
#输出图片的维度,结果是:(784,)
print(mnist_one.shape)
#因为原始的数据是长度是 784 向量,需要转换成 28*28 的矩阵。
mnist_one_image=mnist_one.reshape((28,28))
#输出矩阵的维度
print(mnist_one_image.shape)
#使用 matplotlib 输出为图片
pyplot.imshow(mnist_one_image)
pyplot.show()
代码的输出是:
1.单个手写数字图片尺寸:
(784,)
2.转换为二维矩阵后的打印结果:
(28, 28)
3.使用输出作为图片
模型实现功能介绍:
tf.nn.(x, W, , =’SAME’)
为输入的 4D 数据 x 计算 2D 卷积。
参数x:
4维张量,每一维都是batch,,,.
[批次, , , ]
灰度图像只有2维来表示每个像素的值,彩色图像的每个像素都有3通道的RGB值,所以彩色图像被转换成3维的张量,即长、宽、和颜色通道的数量。并且由于每次训练都是大量的输入,所以将多个 3 维张量组合成 4 维张量。
参数w:
,因为是二维卷积,所以它的维度是:
[, , , ]
对应参数x,前三个参数是,,,对应x,最后一个参数是滤波器的输出通道数量。
参数:
长度为4的一维张量,对应参数x的4维中的步幅。
参数:
p>
边缘填充方式,主要是“SAME”、“VALID”,一般使用“SAME”。
卷积层的简单封装
# 池化操作
def conv2d(x, W, b, strides=1):
# Conv2D wrapper, with bias and relu activation
x = tf.nn.conv2d(x, W, strides=[1, strides, strides, 1], padding='SAME')
x = tf.nn.bias_add(x, b)
return tf.nn.relu(x)
功能介绍:
tf.nn.(x, ksize, ,)
参数 x:
和参数x一样,是一个4维的张量,每个维度分别代表batch,,,,。
参数ksize:
池化内核的大小是一个长度为 4 的一维张量,对应于参数 x 的 4 个维度上的池化大小。
参数:
长度为4的一维张量,对应参数x的4维中的步长。
参数:
边缘填充方式,主要是“SAME”、“VALID”,一般使用“SAME”。
接下来,我们将使用如下结构来实现卷积神经网络:
在下一篇文章中,我们将使用这个卷积神经网络来实现。
本文来自,对深度学习感兴趣和喜爱的朋友,欢迎关注我们的网站!
分类:
技术要点:
相关文章:
暂无评论内容