热门标签 | 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/


推荐阅读
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 本文深入解析了 Kubernetes 控制平面(特别是 API 服务器)与集群节点之间的通信机制,并对其通信路径进行了详细分类。旨在帮助用户更好地理解和定制其安装配置,从而增强网络安全性,确保集群的稳定运行。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • Spring 切面配置中的切点表达式详解
    本文介绍了如何在Spring框架中使用AspectJ风格的切面配置,详细解释了切点表达式的语法和常见示例,帮助开发者更好地理解和应用Spring AOP。 ... [详细]
  • 本文总结了一些开发中常见的问题及其解决方案,包括特性过滤器的使用、NuGet程序集版本冲突、线程存储、溢出检查、ThreadPool的最大线程数设置、Redis使用中的问题以及Task.Result和Task.GetAwaiter().GetResult()的区别。 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • MySQL的查询执行流程涉及多个关键组件,包括连接器、查询缓存、分析器和优化器。在服务层,连接器负责建立与客户端的连接,查询缓存用于存储和检索常用查询结果,以提高性能。分析器则解析SQL语句,生成语法树,而优化器负责选择最优的查询执行计划。这一流程确保了MySQL能够高效地处理各种复杂的查询请求。 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • 深入解析Struts、Spring与Hibernate三大框架的面试要点与技巧 ... [详细]
  • 该大学网站采用PHP和MySQL技术,在校内可免费访问某些外部收费资料数据库。为了方便学生校外访问,建议通过学校账号登录实现免费访问。具体方案可包括利用学校服务器作为代理,结合身份验证机制,确保合法用户在校外也能享受免费资源。 ... [详细]
  • 在ElasticStack日志监控系统中,Logstash编码插件自5.0版本起进行了重大改进。插件被独立拆分为gem包,每个插件可以单独进行更新和维护,无需依赖Logstash的整体升级。这不仅提高了系统的灵活性和可维护性,还简化了插件的管理和部署过程。本文将详细介绍这些编码插件的功能、配置方法,并通过实际生产环境中的应用案例,展示其在日志处理和监控中的高效性和可靠性。 ... [详细]
  • ### 优化后的摘要本学习指南旨在帮助读者全面掌握 Bootstrap 前端框架的核心知识点与实战技巧。内容涵盖基础入门、核心功能和高级应用。第一章通过一个简单的“Hello World”示例,介绍 Bootstrap 的基本用法和快速上手方法。第二章深入探讨 Bootstrap 与 JSP 集成的细节,揭示两者结合的优势和应用场景。第三章则进一步讲解 Bootstrap 的高级特性,如响应式设计和组件定制,为开发者提供全方位的技术支持。 ... [详细]
  • 在PHP中实现腾讯云接口签名,以完成人脸核身功能的对接与签名配置时,需要注意将文档中的POST请求改为GET请求。具体步骤包括:使用你的`secretKey`生成签名字符串`$srcStr`,格式为`GET faceid.tencentcloudapi.com?`,确保参数正确拼接,避免因请求方法错误导致的签名问题。此外,还需关注API的其他参数要求,确保请求的完整性和安全性。 ... [详细]
  • 技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告
    技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告 ... [详细]
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社区 版权所有