手写数字识别mnist

文章目录

  • 手写数字识别mnist
    • 一、前言
    • 二、环境配置
    • 三、代码如下
    • 四、配置环境过程
      • 1、打开Anaconda Prompt
        • a、创建一个叫MNIST4的环境
        • b、创建成功后激活环境并下载keras包:
        • c、下载matplotlib包
        • d、下载tensorflow包
      • 2、打开Pycharm配置
    • 五、运行程序

一、前言

在实现手写数字识别的时候,我看到csdn上检索的手写数字识别有一些繁杂,可是作为AL世界的Hello World,这是不合理的,代码本来就不复杂。
繁杂的操作和图片有点让人生畏,所以我决定有必要重写一下程序、记录一下过程。

下面是一些国内的pip源,有需要可自取

阿里云 http://mirrors.aliyun.com/pypi/simple/

中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/

豆瓣(douban) http://pypi.douban.com/simple/

清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/

中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/

二、环境配置

软件:ANACONDA3+Pycharm2019

keras>=2.7;
tensorflow>=1.7
注:一定关掉科学上网

三、代码如下

#第一步:加载keras中的mnist集
from keras.datasets import mnist
(train_images, train_labels),(test_images, test_labels) = mnist.load_data()print(train_images.shape)#查看效果的,这两步可以忽略
print(test_images.shape)#第二步:建立网络架构,
from keras import models
from keras import layers
#层layer就像数据处理的筛子
#本例子含有两个Dense层,最后是一个10路的激活层softmax层,返回一个由10个概率值组成的数组,表示10个数字类别中某一个的概率
network=models.Sequential()
network.add(layers.Dense(512,activation='relu',input_shape=(28*28,)))
network.add(layers.Dense(10,activation='softmax'))#第三步:编译
#optimizer 优化器,loss损失函数,metrics代码级数据监控
network.compile(optimizer='rmsprop',loss='categorical_crossentropy',metrics=['accuracy'])#第四步:准备图像数据和标签
train_images = train_images.reshape((60000, 28 * 28))#图像处理
train_images = train_images.astype('float32') / 255
test_images = test_images.reshape((10000, 28 * 28))
test_images = test_images.astype('float32') / 255#通过二维关系矩阵的方式,生成一个对应关系
from keras.utils.all_utils import to_categorical
train_labels = to_categorical(train_labels)
test_labels = to_categorical(test_labels)#第五步:拟合(FIT)模型
network.fit(train_images,train_labels,batch_size=64,epochs=5)#第六步:评估(EVALUATE)模型
test_loss,test_acc=network.evaluate(test_images,test_labels)#第七步:查看测试集的精度
print('test_acc',test_acc)
#训练精度和测试精度之间的这种差距是过拟合(overfit)造成的

以下是跑通这个程序的过程。如果清楚这些步骤的过程可以略过下面

四、配置环境过程

1、打开Anaconda Prompt

a、创建一个叫MNIST4的环境

conda create -n MNIST4 python=3.8

注:记得python=3.8,大了就下载不了tensorflow包了

b、创建成功后激活环境并下载keras包:

conda activate MNIST4

为了提高下载速度,在国内清华源中下载keras包

pip install keras -i https://pypi.tuna.tsinghua.edu.cn/simple/

c、下载matplotlib包

pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple/

d、下载tensorflow包

pip install tensorflow -i https://pypi.tuna.tsinghua.edu.cn/simple/

2、打开Pycharm配置

配置代码运行环境





注:这里刷新出来的时候比较长,需要等等
之后一路点击确认下去

五、运行程序

将开头的程序copy进pycharm的程序中

这样就训练成功了。

手写数字识别mnist相关推荐

  1. GAN变种ACGAN利用手写数字识别mnist生成手写数字

    1.摘要 本文主要讲解:GAN变种ACGAN利用手写数字识别mnist数据集进行训练,最终生成手写数字图片 主要思路: Initialize generator and discriminator I ...

  2. Pytorch实战1:LeNet手写数字识别 (MNIST数据集)

    版权说明:此文章为本人原创内容,转载请注明出处,谢谢合作! Pytorch实战1:LeNet手写数字识别 (MNIST数据集) 实验环境: Pytorch 0.4.0 torchvision 0.2. ...

  3. Keras搭建CNN(手写数字识别Mnist)

    MNIST数据集是手写数字识别通用的数据集,其中的数据是以二进制的形式保存的,每个数字是由28*28的矩阵表示的. 我们使用卷积神经网络对这些手写数字进行识别,步骤大致为: 导入库和模块 我们导入Se ...

  4. Python 手写数字识别 MNIST数据集下载失败

    目录 一.MNIST数据集下载失败 1 失败的解决办法(经验教训): 2 亲测有效的解决方法: 一.MNIST数据集下载失败 场景复现:想要pytorch+MINIST数据集来实现手写数字识别,首先就 ...

  5. 使用Pytorch实现手写数字识别(Mnist数据集)

    目标 知道如何使用Pytorch完成神经网络的构建 知道Pytorch中激活函数的使用方法 知道Pytorch中torchvision.transforms中常见图形处理函数的使用 知道如何训练模型和 ...

  6. tensorflow实现手写数字识别(MNIST)

    手写数字图片数字集       机器学习需要从数据中间学习,因此首先需要采集大量的真实样本数据.以手写的数字图片识别为例,我们需要收集大量的由真人书写的0-9的数字图片,为了便于存储和计算,一般把收集 ...

  7. keras库的安装及使用,以全连接层和手写数字识别MNIST为例

    1.什么是keras 什么是keras? keras以TensorFlow和Theano作为后端封装,是一个专门用于深度学习的python模块. 包含了全连接层,卷积层,池化层,循环层,嵌入层等等等, ...

  8. 手写数字识别MNIST数据集下载百度网盘链接快速下载

    介绍 MNIST数据集是机器学习领域中非常经典的一个数据集,由60000个训练样本和10000个测试样本组成,每个样本都是一张28 * 28像素的灰度手写数字图片. 下载 官方链接:http://ya ...

  9. linux手写数字识别,mnist手写数字识别与图片预处理

    用户mnist训练了一个模型,想用自己的图片进行测试,需要将自己的图片进行预处理为mnist需要的1*784的二维张量. 因为MNIST数据是28*28的黑底白字图像,而且输入时要将其拉直,也就是可以 ...

  10. 莫烦keras学习代码二(手写数字识别MNIST classifier CNN版)

    知道了CNN的原理,同样是只要将之前用tensorflow写的几个建立网络的函数用keras的更简单的方法替换就行. 训练结果: 用Sequential().add()添加想要的层,添加卷积层就用Co ...

最新文章

  1. javascript-XMLHttpRequest
  2. 使用JMeter压力测试
  3. 前端学习(1742):前端调试值之快速调试和修改
  4. c++用new求数组中n个数的和_在C++中实现任意大小数组的定义方法
  5. Linux报错:/etc/sudoers is world writable
  6. clipse中Access restriction: The type ‘XXX’ is not API 解决
  7. Null对象模式的用法
  8. 【C#】WM 消息大全
  9. 使用ROW_NUMBER()查询:列名 'RowNumber' 无效。
  10. Java实现八大排序算法【九千字超详解】
  11. flutter-学习之发布安卓包APK
  12. 周鸿祎:人人需要Mentor,世界没有奇迹
  13. shell获取脚本本身名称_linux,shell脚本中获取脚本的名字,使用脚本的名字。
  14. python tkinter Entry的使用
  15. 【专题】经典DP问题(上)
  16. [转]自信过头是狂妄,谦虚过度是虚伪
  17. 环境配置 | 更改注册表使PPT导出的图片分辨率达到300dpi
  18. 推荐一个基于 Vue 的前端界面可视化设计器项目
  19. CocosCreater的俄罗斯方块游戏实现
  20. 看了诺奖得主的故事,我只说五个字:狂野酷姐姐

热门文章

  1. 【转载】VGA视频信号详解
  2. 北斗卫星导航有哪些频段
  3. 黄杏元《地理信息系统概论》考研复习考点精讲(一)
  4. wincc7.5系统语言切换功能(C脚本)
  5. 09-10c语言试卷a,09C语言试卷A-B(试题).doc
  6. 免费的html模板开源网站
  7. 爬虫入门(1)--糗百
  8. 现在谁还会LOL钻石网吧特权?
  9. 各类图像数据大集合(下载链接)
  10. Android 10.0 PackageManagerService(四)APK安装流程-[Android取经之路]