热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

手把手教你用一个简单的2DCNN完成MNIST数字识别任务!

卷积神经网络(CNN)是当前用于图像分类任务的最先进的体系结构。无论是面部识别、自动驾驶汽车还是物体检测,CNN都被广泛使用。在这篇文章中

卷积神经网络(CNN)是当前用于图像分类任务的最先进的体系结构。无论是面部识别、自动驾驶汽车还是物体检测,CNN都被广泛使用。在这篇文章中,我们设计了一个简单的二维卷积神经网络(CNN)模型,该模型使用具有张量流后端的keras,用于众所周知的MNIST数字识别任务。整个工作流程可以是:

  • 准备数据

  • 建立和编译模型

  • 训练和评估模型

  • 将模型保存到磁盘以供重用

手把手教你用一个简单的2DCNN完成MNIST数字识别任务!

准备数据

这里使用的数据集是如上所述的MNIST数据集。 MNIST数据库(修改后的国家标准与技术研究院数据库)是手写数字(0至9)的大型数据库。该数据库包含60,000个训练图像和10,000个每个大小为28x28的测试图像。第一步是加载数据集,这可以通过keras api轻松完成。

手把手教你用一个简单的2DCNN完成MNIST数字识别任务!

从这里可以看出,在左上角存储的图像'5'是X_train [0],y_train [0]包含标签’5'。我们的深度学习模式应该只能够手写图像并预测写入的实际数字。

手把手教你用一个简单的2DCNN完成MNIST数字识别任务!

手把手教你用一个简单的2DCNN完成MNIST数字识别任务!

现在,为了准备数据,我们需要对图像进行一些处理,如调整图像大小,对像素值进行归一化等。

手把手教你用一个简单的2DCNN完成MNIST数字识别任务!

在对图像信息进行必要的处理之后,标签数据即y_train和y_test需要被转换为分类格式,如标签'3'应该被转换为向量[ 0,0,0]用于建模。

手把手教你用一个简单的2DCNN完成MNIST数字识别任务!

建立和编译模型

在数据准备好提供给模型后,我们需要定义模型的体系结构并使用必要的优化函数、损失函数和性能指标进行编译。

这里遵循的体系结构是2个卷积层,接着是合并层,分别是完全连接层和softmax层。在每个卷积层使用多个滤波器,用于不同类型的特征提取。一个直观的解释是,如果第一个过滤器有助于检测图像中的直线,第二个过滤器将有助于检测圆圈等等。每层技术执行的解释将成为即将发布的文章的一部分。在maxpooling和完全连接层之后,在我们的模型中引入dropout作为正则化来减少过度拟合问题。

在maxpooling和完全连接层之后,在我们的模型中引入dropout作为正则化来减少过度拟合问题。

手把手教你用一个简单的2DCNN完成MNIST数字识别任务!

在定义了模型的体系结构之后,需要编译模型。在这里,我们使用categorical_crossentropy损失函数,因为它是一个多类分类问题。由于所有标签都具有相似的权重,因此我们更愿意将其作为性能指标。使用称为AdaDelta的流行梯度下降技术来优化模型参数。

手把手教你用一个简单的2DCNN完成MNIST数字识别任务!

训练和评估模型

在定义和编译模型架构之后,需要使用训练数据对模型进行训练,以便能够识别手写数字。因此我们将用X_train和y_train来拟合模型。

手把手教你用一个简单的2DCNN完成MNIST数字识别任务!

这里,一个时代意味着所有训练样本的前向和后向传递。批量大小意味着一次前进/后退过程中训练样本的数量。训练输出是:

手把手教你用一个简单的2DCNN完成MNIST数字识别任务!

现在,训练好的模型需要根据性能进行评估。

手把手教你用一个简单的2DCNN完成MNIST数字识别任务!

测试准确性99%+意味着该模型对于预测训练良好。如果我们将整个训练日志形象化,那么随着更多数量的时期,模型在训练和测试数据上的损失和准确性趋于一致,从而使模型变得稳定。

手把手教你用一个简单的2DCNN完成MNIST数字识别任务!

手把手教你用一个简单的2DCNN完成MNIST数字识别任务!

将模型保存到磁盘以供重用

现在,训练好的模型需要序列化。模型的体系结构或结构将存储在json文件中,权重将以hdf5文件格式存储。

手把手教你用一个简单的2DCNN完成MNIST数字识别任务!

因此,保存的模型可以稍后重复使用或轻松移植到其他环境。在即将发布的文章中,我们将看到如何在生产环境中部署这种训练好的模型。

享受深度学习!

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31509949/viewspace-2155026/,如需转载,请注明出处,否则将追究法律责任。


转载于:http://blog.itpub.net/31509949/viewspace-2155026/


推荐阅读
  • 使用nodejs爬取b站番剧数据,计算最佳追番推荐
    本文介绍了如何使用nodejs爬取b站番剧数据,并通过计算得出最佳追番推荐。通过调用相关接口获取番剧数据和评分数据,以及使用相应的算法进行计算。该方法可以帮助用户找到适合自己的番剧进行观看。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 本文详细介绍了GetModuleFileName函数的用法,该函数可以用于获取当前模块所在的路径,方便进行文件操作和读取配置信息。文章通过示例代码和详细的解释,帮助读者理解和使用该函数。同时,还提供了相关的API函数声明和说明。 ... [详细]
  • vue使用
    关键词: ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • 图像因存在错误而无法显示 ... [详细]
author-avatar
ld无痕的心迹
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有