一、分类程序介绍

mnist是一个28x28的图片数据集,训练集中包含60000个图片以供训练,每张图片上都是手写的数字,从0到9,并且每张图片都有自己的标签,因此可以通过训练该数据集,将手写的数字图片进行分类

二、代码解析

1、导入依赖的模块

import numpy as np
import matplotlib.pyplot as plt
from tensorflow import keras
import tensorflow as tf

2、载入mnist数据集数据并进行处理

#载入数据
(x_train,y_train),(x_test,y_test) = tf.keras.datasets.mnist.load_data()
print(x_train.shape)
print(y_train.shape)
#x_train的数据shape为(60000,28,28)
#y_train的数据shape为(60000,)#将x_train和x_test的shape转换成(60000,784)
#(60000,28,28)->(60000,784)
#由于其数值范围从0到255,因此除以255以实现归一化使得数据范围从0到1
x_train = x_train.reshape(x_train.shape[0],-1)/255.0
x_test = x_test.reshape(x_test.shape[0],-1)/255.0
print(x_train.shape)#将y_train和t_test转换成one hot格式
y_train = keras.utils.to_categorical(y_train,num_classes=10)
y_test = keras.utils.to_categorical(y_test,num_classes=10)

首先,神经网络的输入是28x28=784个结点用于接收图片的像素,因此需要先将每张图片从28x28转换成784的列表,因此使用了reshape函数并且将像素进行归一化,使每个像素的数值都除以255

然后将标签转换成one hot(独热)格式,以便对应生成的十个输出神经元

3、创建神经网络模型

#创建模型,输入784个神经元,输出10个神经元
model = keras.Sequential()
model.add(keras.layers.Dense(10,input_dim=784))
model.add(keras.layers.Activation('softmax'))sgd = keras.optimizers.SGD()
model.compile(optimizer=sgd,loss='mse',metrics=['accuracy'])

输入为784维的神经元,输出为10维的神经元,并且在输出后加入softmax激活函数

使用sgd优化器,损失函数使用mse,评估的metrics使用准确率

4、开始训练模型

#开始训练模型
model.fit(x_train,y_train,batch_size=32,epochs=10)

batch_size为32,即随机从60000个数据中取32作为一组;epochs为10,意思是总共要训练60000x10个数据

5、评估模型

#评估模型
loss,accuracy = model.evaluate(x_test,y_test)
print('loss: ',loss)
print('accuracy: ',accuracy)

最后使用测试集对模型进行评估,打印loss和accuracy,结果如下图所示

【keras学习(三)】mnist手写图片分类程序(一)相关推荐

  1. 【Keras】30 秒上手 Keras+实例对mnist手写数字进行识别准确率达99%以上

    本文我们将学习使用Keras一步一步搭建一个卷积神经网络.具体来说,我们将使用卷积神经网络对手写数字(MNIST数据集)进行识别,并达到99%以上的正确率. @为什么选择Keras呢? 主要是因为简单 ...

  2. 运用cnn实现手写体(mnist)数字识别_实现 MNIST 手写数字识别

    1. MNIST 数据集加载 MNIST 数据集可以从MNIST官网下载.也可以通过 Tensorflow 提供的 input_data.py进行载入. 由于上述方法下载数据集比较慢,我已经把下载好的 ...

  3. TensorFlow2学习七、使用MNIST手写体识别数据集识别自己手写图片

    一.说明 本示例使用mnist数据集.mnist来自美国国家标准与技术研究所,训练集来自 250 个不同人手写的数字构成.不过这些数据集与中国书写习惯略有差别,所以直接训练好的模型识别中国手写数字准确 ...

  4. DL之CNN:利用卷积神经网络算法(2→2,基于Keras的API-Functional)利用MNIST(手写数字图片识别)数据集实现多分类预测

    DL之CNN:利用卷积神经网络算法(2→2,基于Keras的API-Functional)利用MNIST(手写数字图片识别)数据集实现多分类预测 目录 输出结果 设计思路 核心代码 输出结果 下边两张 ...

  5. DL之CNN:利用卷积神经网络算法(2→2,基于Keras的API-Sequential)利用MNIST(手写数字图片识别)数据集实现多分类预测

    DL之CNN:利用卷积神经网络算法(2→2,基于Keras的API-Sequential)利用MNIST(手写数字图片识别)数据集实现多分类预测 目录 输出结果 设计思路 核心代码 输出结果 1.10 ...

  6. 深度学习21天——卷积神经网络(CNN):实现mnist手写数字识别(第1天)

    目录 一.前期准备 1.1 环境配置 1.2 CPU和GPU 1.2.1 CPU 1.2.2 GPU 1.2.3 CPU和GPU的区别 第一步:设置GPU 1.3 MNIST 手写数字数据集 第二步: ...

  7. 1、基于Keras、Mnist手写数字识别数据集构建全连接(FC)神经网络训练模型

    文章目录 前言 一.MNIST数据集是什么? 二.构建神经网络训练模型 1.导入库 2.载入数据 3.数据处理 4.创建模型 5.编译模型 6.训练模型 7.评估模型 三.总代码 前言 提示: 1.本 ...

  8. 深度学习100例-卷积神经网络(CNN)实现mnist手写数字识别 | 第1天

    文章目录 一.前期工作 1. 设置GPU(如果使用的是CPU可以忽略这步) 2. 导入数据 3. 归一化 4. 可视化图片 5. 调整图片格式 二.构建CNN网络模型 三.编译模型 四.训练模型 五. ...

  9. 用MXnet实战深度学习之一:安装GPU版mxnet并跑一个MNIST手写数字识别 (zz)

    用MXnet实战深度学习之一:安装GPU版mxnet并跑一个MNIST手写数字识别 我想写一系列深度学习的简单实战教程,用mxnet做实现平台的实例代码简单讲解深度学习常用的一些技术方向和实战样例.这 ...

最新文章

  1. Android NDK基础样例
  2. R语言使用caret包构建随机森林模型(random forest)构建回归模型、通过method参数指定算法名称、通过ntree参数指定随机森林中树的个数
  3. Django中多种重定向方法使用
  4. 火狐自动换行 有空格
  5. 【NLP】21个经典深度学习句间关系模型|代码技巧
  6. 7.Appium 安卓自动化(Package与Activity)
  7. PostgreSQL-4-DML数据操纵语言
  8. IDEA设置SQL格式化(关键字大写)
  9. java mp3文件合并,java怎么实现mp3合并
  10. Android挂逼修练之行--微信聊天消息修改器插件开发详解
  11. mac数字键盘错乱_苹果笔记本数字键盘打不出数字怎么办_苹果笔记本按不出数字如何解决-win7之家...
  12. 【技巧】vistual studio 2017 communty 版本许可证过期解决办法
  13. Python 【爬虫3】_微信小程序_小游戏数据助手数据爬取
  14. mysql子查询返回多于1行_mysql – 子查询返回超过1行
  15. 大疆不仅为工程师办比赛,还为他们量身制作了一部动画
  16. 06|领域拆分:如何合理地拆分系统?
  17. 【LINGO】lingo 软件简介
  18. python 入门 guess 函数
  19. win7怎么恢复出厂设置
  20. Java设计模式 ---- 装饰模式

热门文章

  1. 使用STM32F103采集Si7021温湿度传感器数据
  2. 号码认证平台有哪些?号码认证平台费用?
  3. 斗地主的两种发牌方式
  4. Java打印带边框的乘法口诀表_Java 面试 - 打印九九乘法口诀表
  5. linux必须root权限才能mount,root执行/media可执行文件权限不够,chmod修改权限无效...
  6. 教你如何用Python抓取QQ音乐歌单及分析
  7. halting problem 详解
  8. html文件上传到云服务器,把html文件上传到云服务器上
  9. js进栈出栈_JavaScript js调用堆栈(一)
  10. Java调用阿里云OSS下载文件