深度学习笔记整理1 - 手写数字识别

手写数字识别

MNIST数据集(修改的国家标准与技术研究所——Modified National Institute of Standards and Technology),是一个大型的包含手写数字图片的数据集。该数据集由0-9手写数字图片组成,共10个类别。每张图片的大小为28 * 28。

加载必要的库

import tensorflow as tf
# tensorflow提供了关于手写数字识别相关的类型,通过input_data可以方便的获取手写数字数据集,
# 并且进行手写数字识别的任务。
from tensorflow.examples.tutorials.mnist import input_data
import matplotlib.pyplot as plt

下载数据集

调用read_data_sets,可以下载mnist数据集到指定的目录,如果目录不存在,可自定创建。
如果数据已经下载,则直接从文件中提取数据。

说明:

  • 如果因为网络原因,导致下载不成功,可以去MNIST官网进行下载。
# 读取数据集,第1个参数指定数据集的位置。如果在指定的路径下没有数据集,则
# 可以自动进行下载。如果在指定的路径下,数据集已经存在,则不会再次下载,而是
# 真正的读取数据集,返回数据集对象。
# 参数:one_hot 指定是否已one_hot编码的形式进行返回(指定的标签)。
mnist = input_data.read_data_sets("data/", one_hot=True)

在这里插入图片描述

MNIST数据集查看

MNIST数据集共有70000张图像,其中训练集60000张,测试集10000张。训练集分为55000张训练图像与5000张验证图像。
MNIST图像为单通道。并且每张图像是将28 * 28结构进行拉伸存储,即每张图像的形状存储为(784, )。

# 获取训练集样本mnist.train.images 
display(mnist.train.images.shape)
# 获取训练集标签mnist.train.labels
display(mnist.train.labels.shape)
# display(mnist.train.images[0])
# display(mnist.train.labels[0])
# 获取验证集与测试集。
display(mnist.validation.images.shape)
display(mnist.validation.labels.shape)
display(mnist.test.images.shape)
display(mnist.test.labels.shape)

在这里插入图片描述

显示指定的图像

可以通过matplotlib库显示指定的图像。注意,在显示图像时,需要将形状结构(784, )重构为(28, 28)。

plt.imshow(mnist.train.images[9].reshape((28, 28)), cmap="gray")

在这里插入图片描述

实现

我们使用单层神经网络来实现该任务。使用softmax激活函数。
图像的每个像素可以看做一个特征,而每个像素点对应着一个权重,来衡量该像素点对目标的影响大小。如果这个像素具有很强的证据说明这张图片不属于该类,则相应的权值为负数,相反如果这个像素拥有有利的证据支持这张图片属于这个类,则权值是正数。
在这里插入图片描述
下图中展示了图像0 ~ 9中,不同位置的像素点,对该类图像的影响。红色为负面影响(负数权值),蓝色为正面影响(正数权值)。
在这里插入图片描述
我们通过对图像中存储的数值进行加权求和,得到每个类别的分值。其中,i为某一个类别。j为某一个特征,m为类别的数量,n为特征的数量。
z i = ∑ j = 1 n w j x j + b i z_i = \sum_{j=1}^{n}w_jx_j + b_i z

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值