深度学习——手写数字识别

深度学习——手写数字识别

图 1

学习深度学习的朋友应该对MNIST数据集不陌生吧,相信很多人在刚开始学习深度学习的时候都会用到MNIST数据集进行书写数字识别。本篇文章参考鱼书创建一个深度网络来进行书写数字识别的任务。

如上图所示,这里使用的卷积层全都是 3 × 3 3 \times 3 3×3 的小型滤波器,特点是随着层的加深,通道数变大(卷积层的通道数从前面的层开始按顺序以16、16、32、32、64、64的方式增加)。此外,如图所示,插入了池化层,以逐渐减小中间数据的空间大小;并且,后面的全连接层中还使用了Dropout层(为了防止过拟合)。

这个网络使用He初始值(何恺明大神的提出的)作为权重的初始值,使用Adam更新权重参数。把上述内容总结起来,这个网络有如下特点。

  • 基于 3 × 3 3 \times 3 3×3的小型滤波器的卷积层。
  • 激活函数是 ReLU。
  • 全连接层的后面使用 Dropout 层。
  • 基于 Adam 的最优化。
  • 使用 He 初始值作为权重初始值。

权重初始化对训练深度网络很重要,特别是ReLU激活函数流行之后。Xavier 初始化是针对Sigmoid和Tanh设计的,Sigmoid函数和Tanh函数左右对称,且中央附近可以视作线性函数,但ReLU的非线性特性导致前向传播时输出方差会变化。

而He初始化主要是为了解决ReLU激活函数在初始化时方差缩小的问题。He初始值一种专门为使用ReLu激活函数及其变体(如Leaky ReLU, PPeLU)的神经网络层设计的权重初始化方法。它是由何恺明(Kaiming He)等人在2015年的论文《Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification》中提出的。ReLU会把负数部分归零,所以输出的方差会比输入小一半。如果每一层都这样,深度网络的方差会越来越小,导致梯度消失。

He初始值使用标准差为 2 n \sqrt{\frac{2}{n}} n2 的高斯分布,n是输入神经元的数量。与 Xavier 初始化相比, He 的方差更大,以补偿ReLU造成的方差减半。

代码:https://github.com/Benxiaogu/mnist

鱼书全书代码
https://github.com/qiaohaoforever/DeepLearningFromScratch

训练结果:

函数im2col的作用是将数据展开以适合滤波器(权重)。如下图所示,对3维的输入数据应用此函数后,数据转换为2维矩阵(正确地讲,是把包含批数量的4维数据转换成了2维数据)。

im2col 是 "image to column"的缩写,翻译过来就是“从图像到矩阵”的意思。

使用im2col展开输入数据之后,之后就只需将卷积层的滤波器(权重)纵向展开为1列,并计算2个矩阵的乘积即可,如下图所示。这和全连接层的 Affine 层进行的处理基本相同。

如上图所示,基于 im2col 方式的输出结果是2为矩阵。因为 CNN 中数据会保存为4维数组,所以要将 2 维输出数据转换为合适的形状。

函数col2im是函数im2col的逆过程

def im2col(input_data, filter_h, filter_w, stride=1, pad=0):"""Parameters:input_data:由(数据量, 通道, 高, 长)的4维数组构成的输入数据filter_h:滤波器的高filter_w:滤波器的长stride:步幅pad:填充Returnscol:2维数组"""N, C, H, W = input_data.shapeout_h = 1 + (H + 2*pad - filter_h) // strideout_w = 1 + (W + 2*pad - filter_w) // strideimg = np.pad(input_data, [(0,0), (0,0), (pad,pad), (pad,pad)], 'constant')col = np.zeros((N, C, filter_h, filter_w, out_h, out_w))for y in range(filter_h):y_max = y + stride*out_hfor x in range(filter_w):x_max = x + stride*out_wcol[:, :, y, x, :, :] = img[:, :, y:y_max:stride, x:x_max:stride]col = col.transpose(0, 4, 5, 1, 2, 3).reshape(N*out_h*out_w, -1)return coldef col2im(col, input_shape, filter_h, filter_w, stride=1, pad=0):"""Parameters:col:2维数组input_data:由(数据量, 通道, 高, 长)的4维数组构成的输入数据filter_h:滤波器的高filter_w:滤波器的长stride:步幅pad:填充Returns:img:由(数据量, 通道, 高, 长)的4维数组构成的输出数据"""N, C, H, W = input_shapeout_h = (H + 2*pad - filter_h) // stride + 1out_w = (W + 2*pad - filter_w) // stride + 1col = col.reshape(N, out_h, out_w, C, filter_h, filter_w).transpose(0, 3, 4, 5, 1, 2) # reshape形状,transpose调整维度顺序img = np.zeros((N, C, H + 2*pad + filter_h - 1, W + 2*pad + filter_w - 1))for y in range(filter_h):y_max = y + stride*out_hfor x in range(filter_w):x_max = x + stride*out_wimg[:, :, y:y_max:stride, x:x_max:stride] += col[:, :, y, x, :, :]return img[:, :, pad:H + pad, pad:W + pad] # 去除填充部分

函数np.flatten()的作用是将多维数组扁平化为一维数组。np.flatten()默认按行优先进行降维,也就是将多维数组的第一行所有元素放到一位数组的前面,然后是第二行,依次类推。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/910009.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/910009.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HashMap算法高级应用实战:频率类子数组问题的5种破解模式

本文将深入剖析5种基于HashMap的高级模式,通过原理详解、多语言实现、性能对比和工业级应用,助您彻底掌握频率类子数组问题。 1. 深入解析:频率类子数组问题 1.1 问题定义与分类 频率类子数组问题是指需要统计或查找满足特定元素频率条件的…

【精选】计算机毕业设计HTML5智能宠物寻找与领养系统 跨平台宠物匹配 地图定位找宠 领养申请审核系统源码+论文+PPT+讲解

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

拼多多商家端 anti_content 补环境分析

声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 部分python代码 import execjs impor…

电脑、手机长时间不关机可以吗

电脑和手机常年处于开机状态,只有在没电或者系统提示更新的时候才会关机。那问题来了,电脑、手机长时间不关机到底可不可以呢?今天咱们就来好好唠唠。 手机长时间不关机的情况 先来说说手机。现在的智能手机功能越来越强大,我们…

「AI大数据」| 《华为:面向智能制造的工业大模型标准化研究报告》

今天给大家介绍 《华为:面向智能制造的工业大模型标准化研究报告》,这是一份由中国电子技术标准化研究院联合华为等多家企业编写的权威报告,聚焦工业大模型在智能制造领域的标准化发展。报告详细分析了工业大模型的技术架构、应用场景、标准化现状与挑战…

Dinky1.2.3基于Kubernetes Application模式提交Flink作业

前言 Dinky 是一个开箱即用、易扩展,以 Apache Flink 为基础,连接 OLAP 和数据湖等众多框架的一站式实时计算平台,致力于流批一体和湖仓一体的探索与实践。 致力于简化Flink任务开发,提升Flink任务运维能力,降低Flink…

【软考高级架构设计师】——2025年上半年软考真题(回忆版)

目录 一、综合知识1.1、计算机基础与操作系统(15道单选)1.2、软件工程与架构(16道单选)1.3、数据与网络(8道单选)1.4、数学与逻辑(4道单选)1.5、其他(27道单选)1.6、英文题(质量属性)(5道单选)二、案例分析2.1、大模型训练系统(必选题)2.2、医院知识图谱(可选…

哈夫曼树Python实现

哈夫曼树构建原则: .统计频率:对待编码字符(或数据块)的频率进行统计。.初始化森林:将每个字符视为一棵只有根节点的二叉树,权值为频率。.合并树:重复以下操作,直到只剩一棵树&…

Dockerfile的学习与实践

Dockerfile通过一系列的命令和参数,构建自定义镜像。一般步骤如下: 一. 常用命令说明 基础命令具体命令描述例子FROMFROM[基础镜像:版本号]基于指定的基础镜像构建自定义镜像FROM eclipse-temurin:17-jdk-alpineRUNRUN构建容器需要运行的命令&#xff0…

【三大前端语言之一】静态网页语言:HTML详解

你知道你在浏览器中所看到的每一个按钮,每一个框,都是怎么创造出来的吗?它们并非魔法,而是由一种被称为HTML的语言精心构建的骨架。作为前端世界的三大基石之一(HTML、CSS、JavaScript),HTML是万…

04、谁发明了深度学习的方法,是怎么发明的?

深度学习的发展是多位研究者长期探索的结果,其核心方法的形成并非由单一人物 “发明”,而是历经数十年理论积累与技术突破的产物。以下从关键人物、核心技术突破及历史背景三个维度,梳理深度学习方法的起源与发展脉络: 一、深度学习的奠基者与关键贡献者 1. Geoffrey Hin…

Jmeter ServerAgent在arm环境启动报错no libsigar-aarch64-linux.so in java.library.path

使用Jmeter压测的时候,用ServerAgent监测arm服务器的性能指标,在启动ServerAgent时,报错了:no libsigar-aarch64-linux.so in java.library.path 解决方案: 下载libsigar-aarch64-linux.so文件,放置在Serv…

AJAX拦截器失效排查指南:当你的beforeSend有效但error/complete沉默时

问题现象 开发者常遇到这样的场景: $.ajaxSetup({beforeSend: () > console.log("✅ 触发"), // 正常执行error: () > console.log("❌ 未触发"), // 静默失效complete: () > console.log("⚡ 未触发") // 同样沉默 })…

【模型微调】负样本选择

1.核心设计理念 非对称检索任务(例如,用一个简短的问题去文档库里查找答案)的一个核心挑战是查询(query)和文档(passage)在文本特征上的巨大差异。以往的研究发现,为查询和文档提供…

下载安装redis

有任何问题,都可以私信博主,共同探讨学习。 正文开始 一、下载安装redis一、启动redis总结 一、下载安装redis redis官方下载地址是github,有条件的同学可以自行搜索下载。针对部分网速不太好的同学,可以通过网盘获取&#xff0c…

flutter 项目配置Gradle下载代理

如图, 在Android Studio中配置代理是不生效的。 需要在flutter sdk的Gradle中去配置代理

世冠科技亮相TMC,以国产MBD工具链赋能汽车电控系统开发新未来

2025年6月12日至13日,第十七届国际汽车动力系统技术年会(TMC2025)在南通国际会展中心盛大召开。作为全球汽车动力系统领域规模最大、规格最高、内容最前沿的标杆性国际盛会,汇聚了来自全球整车企业、核心零部件供应商、顶尖科研机…

将本地项目与远程 Git 仓库关联的完整步骤

将本地项目与远程 Git 仓库关联的完整步骤 现在的情景是:本地文件项目已经写好了,亦或者远程仓库已经建好了,需要与本地项目关联起来 以下是详细的操作流程,我会用清晰的步骤说明如何将你的本地项目与远程 Git 仓库关联&#xf…

3DS 转换为 STP 全攻略:迪威模型网在线转换详解

在三维模型创作与应用的多元场景中,不同格式的文件承担着独特的角色。3DS(3D Studio)格式是 Autodesk 3ds Max 早期广泛使用的文件格式,常用于游戏开发、影视特效制作等领域,能够存储模型的几何形状、材质、动画等信息…

Linux下iptables和firewalld详解

Linux下iptables和firewalld详解 Linux下iptables和firewalld简述Iptables四表五链策略与规则链命令参数Firewalld终端管理工具图形管理工具服务的访问控制列表Linux下iptables和firewalld 简述 ​ 保障数据的安全性是继保障数据的可用性之后最为重要的一项工作。防火墙作为公…