MindSpore手写数字识别初体验,深度学习也没那么神秘嘛
摘要:想了解深度学习却又无从下手,不如从手写数字识别模型训练开始吧!
深度学习作为机器学习分支之一,应用日益广泛。语音识别、自动机器翻译、即时视觉翻译、刷脸支付、人脸考勤……不知不觉,深度学习已经渗入到我们生活中的每个角落,给生活带来极大便利。即便如此,依然有很多人觉得深度学习高深莫测、遥不可及,的确,它有深奥之处,非专业人士难以企及,但也有亲和力十足的一面,让没有基础的小白也能轻松上手,感受深度学习的魅力,接下来要介绍的手写数字识别模型训练正是如此。
手写数字识别初探
手写数字识别是计算机视觉中较为简单的任务,也是计算机视觉领域发展较早的方向之一,早期主要用于银行汇款、单号识别、邮政信件、包裹的手写、邮编识别等场景,目前手写数字识别已经达到了较高的准确率,得到大规模的推广与应用。虽然手写数字识别本身的领域比较狭窄,实用性有限,但是在它基础上发展起来的卷积神经网络等计算机视觉技术早已应用在更为复杂的任务中,因此,手写数字识别也成为计算机视觉领域衡量算法表现的一个基准任务。所以,通过这一实践场景来了解神经网络开发和训练,可谓再好不过了。如何使用深度学习框架MindSpore进行模型开发与训练?又如何在ModelArts平台训练一个可以用于识别手写数字的模型呢?让我们来一探究竟吧。
数据集的选择与准备
机器学习中的传统机器学习和深度学习都是数据驱动的研究领域,需要基于大量的历史数据对模型进行训练,再使用模型对新的数据进行推理和预测,因此数据是机器学习中的关键要素之一。
MNIST数据集是目前手写数字识别领域使用最为广泛的公开数据集,大部分识别算法都会基于它进行训练和验证。MNIST数据集包含0~9这10种数字,每一种数字都包含大量不同形态的手写数字图片训练集,分为训练集和测试集。训练集涵盖6万张手写数字图片,测试级涵盖1万张手写数字图片。每一张图片皆为经过尺寸标准化的黑白图像,是28*28像素,像素值为0或者1的二值化图像。MNIST数据集的原始图像是黑白的,但在实际训练中使用数据增强后的图片能够获得更好的训练效果。
本次训练所使用的经过数据增强的图片
基于深度学习的识别方法
与传统的机器学习使用简单模型执行分类等任务不同,此次训练我们使用深度神经网络作为训练模型,即深度学习。深度学习通过人工神经网络来提取特征,不同层的输出常被视为神经网络提取出的不同尺度的特征,上一层的输出作为下一层的输入,层层连接构成深度神经网络。
深度学习工作原理
1994年,Yann LeCun发布了结合反向传播的卷积神经网络 LeNet, 其在手写数字识别领域效果远超其他模型。1998年,Yann LeCun等人构建的卷积神经网络LeNet-5在手写数字识别问题中取得成功 ,被誉为卷积神经网络的“Hello Word”。LeNet-5以及在此之后产生的变体定义了现代卷积神经网络的基本结构,可谓入门级神经网络模型。本次实践使用的模型正是LeNet-5。
LeNet-5结构
LeNet-5由输入层、卷积层、池化层和全连接层组成。输入层用于输入数据;卷积层通过卷积运算对输入进行局部特征提取;池化层通过下采样的方式降低特征图的分辨率,从而降低输出对位置和形变的敏感度,同时还可降低网络中的参数和计算量;全连接层将局部特征通过权值矩阵组装成完整的图像,完成特征空间到真实类别空间的映射,最终的图像分类便是由全连接层完成的。有了这样一个神经网络后,我们还需要用大量数据集对它进行不断地训练,才能对输入数据有较为准确的预测结果,这一过程便依赖于华为自研的深度学习框架MindSpore。
MindSpore的“学习”过程
MindSpore当前已经部署在ModelArts的开发环境和训练环境中,同时提供了阈值算法供开发者直接使用,它的学习过程如下图所示,简单总结一下:
1. 使用MindSpore提供的基本模块进行前线网络开发
2. 对数据进行处理和增强以便得到更好的数据输入
3. 利用前线网络构建训练模型,并进行模型保存和推理
说起来可能平淡无奇,但是实验终究需要自己亲自动手才能体会其中的无限乐趣。
看到这里,想必各种背景知识和原理大家已经略知一二,如果你已经跃跃欲试,那就快来华为云学院学习微认证课程《使用MindSpore训练手写数字识别模型》吧。对了,悄悄告诉你,这个实验现在还是免费的哟,来华为云学院沙箱实验室就能即刻体验。从原理到实践,带你全方位了解手写数字模型训练全过程,快速上手深度学习,速来!
本文分享自华为云社区《MindSpore手写数字识别初体验,深度学习也没那么神秘嘛》,原文作者:学院小助 。
MindSpore手写数字识别初体验,深度学习也没那么神秘嘛的更多相关文章
- mnist手写数字问题初体验
上一篇我们提到了回归问题中的梯度下降算法,而且我们知道线性模型只能解决简单的线性回归问题,对于高维图片,线性模型不能完成这样复杂的分类任务.那么是不是线性模型在离散值预测或图像分类问题中就没有用武之地 ...
- 【百度飞桨】手写数字识别模型部署Paddle Inference
从完成一个简单的『手写数字识别任务』开始,快速了解飞桨框架 API 的使用方法. 模型开发 『手写数字识别』是深度学习里的 Hello World 任务,用于对 0 ~ 9 的十类数字进行分类,即输入 ...
- Pytorch1.0入门实战一:LeNet神经网络实现 MNIST手写数字识别
记得第一次接触手写数字识别数据集还在学习TensorFlow,各种sess.run(),头都绕晕了.自从接触pytorch以来,一直想写点什么.曾经在2017年5月,Andrej Karpathy发表 ...
- 第二节,TensorFlow 使用前馈神经网络实现手写数字识别
一 感知器 感知器学习笔记:https://blog.csdn.net/liyuanbhu/article/details/51622695 感知器(Perceptron)是二分类的线性分类模型,其输 ...
- 【深度学习系列】PaddlePaddle之手写数字识别
上周在搜索关于深度学习分布式运行方式的资料时,无意间搜到了paddlepaddle,发现这个框架的分布式训练方案做的还挺不错的,想跟大家分享一下.不过呢,这块内容太复杂了,所以就简单的介绍一下padd ...
- mnist手写数字识别——深度学习入门项目(tensorflow+keras+Sequential模型)
前言 今天记录一下深度学习的另外一个入门项目——<mnist数据集手写数字识别>,这是一个入门必备的学习案例,主要使用了tensorflow下的keras网络结构的Sequential模型 ...
- 【深度学习系列】手写数字识别卷积神经--卷积神经网络CNN原理详解(一)
上篇文章我们给出了用paddlepaddle来做手写数字识别的示例,并对网络结构进行到了调整,提高了识别的精度.有的同学表示不是很理解原理,为什么传统的机器学习算法,简单的神经网络(如多层感知机)都可 ...
- 深度学习之 mnist 手写数字识别
深度学习之 mnist 手写数字识别 开始学习深度学习,先来一个手写数字的程序 import numpy as np import os import codecs import torch from ...
- 深度学习之PyTorch实战(3)——实战手写数字识别
上一节,我们已经学会了基于PyTorch深度学习框架高效,快捷的搭建一个神经网络,并对模型进行训练和对参数进行优化的方法,接下来让我们牛刀小试,基于PyTorch框架使用神经网络来解决一个关于手写数字 ...
随机推荐
- 新版本 swagger 组件中 Servers 的 坑
新版本 Swashbuckle swagger 组件中 Servers 的 坑 Intro 上周做了公司的项目升级,从 2.2 更新到 3.1, swagger 直接更新到了最新,swagger 用的 ...
- flask-profiler的使用
使用 profiler测量在你的Flask 应用程序中定义的端点:并通过web界面提供细粒度的报告. 它给出了这些问题的答案: 应用程序中的瓶颈在哪里? 应用程序中最慢的终结点? 哪些是最常被调用的终 ...
- Win10 Terminal + WSL 2 安装配置指南,精致开发体验
自从 Windows Terminal 正式发布后就再没有用过 Windows 系统自带的终端了.主要是 Terminal 简洁且灵活,更重要的是支持特殊字体,通过一些简单的配置可以使得终端看起来更舒 ...
- glog修改
在写代码的过程中,打log肯定是少不了的,毕竟不能总靠调试来发现问题.log库的选用就很纠结了,成熟的log库非常多,log4cpp.log4cxx.poco.log.boost.log.glog等等 ...
- 2018noip游记
2018noip游记 相隔一年多才想起可以弄一篇博客纪念一下我的首次比赛, 以现在的水平回望过去,发现很好玩很有纪念意义, 于是这篇博客诞生了 \(T1\) 当时的我刚学会什么是字符串,但仍然很不熟练 ...
- 分布式文档存储数据库之MongoDB基础入门
一.MongoDB简介 MongoDB是用c++语言开发的一款易扩展,易伸缩,高性能,开源的,schema free 的基于文档的nosql数据库:所谓nosql是指不仅仅是sql的意思,它拥有部分s ...
- Maven依赖管理系统
[背景] 之前在领英上读到一篇软文,<Managing Software Dependency at Scale>,讲述了领英是如何处理模块之间的依赖解析,以及如何去更好的处理依赖关系以及 ...
- CF1396E——Distance Matching
传送门:QAQQAQ(题面翻译) 以后博客可能一直咕咕咕了.一些做题的思考可能会直接放在代码里而不是单独写博客,因为这样太浪费时间,只有一些比较新的题才会单独写博客 思路:对于这种构造可行解使得权值和 ...
- 【Kata Daily 190924】Difference of Volumes of Cuboids(长方体的体积差)
题目: In this simple exercise, you will create a program that will take two lists of integers, a and b ...
- 英特尔与 Facebook 合作采用第三代英特尔® 至强® 可扩展处理器和支持 BFloat16 加速的英特尔® 深度学习加速技术,提高 PyTorch 性能
英特尔与 Facebook 曾联手合作,在多卡训练工作负载中验证了 BFloat16 (BF16) 的优势:在不修改训练超参数的情况下,BFloat16 与单精度 32 位浮点数 (FP32) 得到了 ...