Tensorflow之使用LeNet-5模型识别Minist手写体数字

本文介绍了如何使用Tensorflow实现LeNet-5模型来识别Minist手写体数字,详细阐述了Minist数据集特点、LeNet-5模型原理,以及模型训练和分析过程。在不同迭代次数下,模型的识别准确率有所提升,揭示了批处理大小对训练速度和精度的影响。
摘要由CSDN通过智能技术生成

安装Tensorflow教程

请移步到这篇博客 ☛ https://blog.csdn.net/weixin_38283428/article/details/84201733
下载的tensorflow版本要和自己的python版本一致。

一、Minist手写体数据集的特点

1.训练数据和测试数据各有多少

from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets('MNIST_data/', one_hot=True)
print('训练数据数量',mnist.train.num_examples)
print('验证数据数量',mnist.validation.num_examples)
print('测试数据数量',mnist.test.num_examples)

在这里插入图片描述
2.train集合数据及标签的形状

print('train集合数据矩阵形状:',mnist.train.images.shape)
print('train集合数据标签矩阵形状:',mnist.train.labels.shape)
print('train集合第一个数据标签长度、内容:',len(mnist.train.labels[0]),mnist.train.labels[0])

在这里插入图片描述
从上面的运行结果可以看出,在train集合数据中总共有55000个样本,每个样本有784个特征。原图片形状为28*28=784,每个图片样本展平后则有784维特征。在train集合数据标签中总共有55000个样本,每个样本有10维特征,根据所显示的内容能够推断出这幅图片为数字为7,因为它在第8个位置响应度为1,其他位置为0.

3.查看一部分图片内容

import os 
import numpy as np
import matplotlib.pyplot as plt
import math
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data

mnist = input_data.read_data_sets('MNIST_data/', one_hot=True)

def drawdigit(position,image,title):
    plt.subplot(*position)
    plt.imshow(image,cmap='gray_r')
    plt.axis('off')
    plt.title(title)

def batchDraw(batch_size):
    images,labels = mnist.train.next_batch(batch_size)
    row_num = math.ceil(batch_size ** 0.5)
    column_num = row_num
    plt.figure(figsize=(row_num,column_num))
    for i in range(row_num):
        for j in range(column_num):
            index = i * column_num + j
            if index < batch_size:
                position = (row_num,column_num,index+1)
                image = images[index].reshape(-1,28)
                title = 'actual:%d'%(np.argmax(labels[index]))
                drawdigit(position,image,title)
if __name__ == '__main__':
    batchDraw(196)
    plt.show()

在这里插入图片描述
观察train集合中的数据发现
0类:有普通正常的0,未闭合成圈的0,容易被误认为6和8的0,圈极扁的0,朝着左右方向倾斜的0
1类:打印体的1(容易被误认为7),朝着左右方向倾斜的1,弯曲的1,粗细不同的1
2类:第一笔弯曲弧度不够的2,最后结束那一笔写得过长的2(容易被误认为是3)或者过于短的2,粗细不同的2
3类:朝着左右方向倾斜的3,最后一笔向上勾的弧度不够的3,写得像烟圈的3,整体弯曲弧度不够的3,粗细不同的3
4类:写得像Y、A、H的4,像飘扬的旗帜的4,写得太过紧凑的4,粗细不同4
5类:写得像S的5,因为最后一笔而容易被认为是6的5,粗细不同的5
6类:下半部分的圆圈被涂满不是空心的6,横躺的6,下半部分未闭合成圆圈的6,最后一笔写出头容易被认成4的6
7类:打印体形状的7,多加一条横杠的7,横与竖形成的角度过小的7,粗细不同的7
8类:最上面是开口的8,朝着左右方向倾斜的8,最下面是开口的8,上下两个圈被涂满的8,手写习惯为先画上面一个圈再画下面一个圈的8
9类:打印体形状的9,圆圈过大容易被误认为0的9,粗细不同的9,上方未闭合成圆圈的9,像g

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值