d2l_第七章学习_卷积神经网络

参考:

  • d2l
  • 今日学习——卷积神经网络(CNN)https://blog.csdn.net/m0_61165991/article/details/124176077
  • 图像工程(上册)-图像处理
  • 傅里叶变换https://blog.csdn.net/qq_43369406/article/details/131350139
  • CNN卷积神经网络基础知识 https://blog.csdn.net/qq_43369406/article/details/127134277

x.1 前储知识(optional可跳过)

x.1.1 信号处理

x.1.2 数字图像处理

参考图像工程(上册)-图像处理

在这里插入图片描述

x.1.2.1 空域/时域

x.1.2.2 傅里叶变换

参考傅里叶变换 https://blog.csdn.net/qq_43369406/article/details/131350139

x.1.2.3 频域

x.2 filter/kernel例子,二维卷积

filter滤波器/kernel卷积核的概念的由来是信号处理和数字图像处理技术,卷积就类似空域中的模板卷积,下面来举一个边缘检测的小例子,

请添加图片描述

请添加图片描述

上面这个操作,也就是我们常说的2-D卷积的操作,参看卷积是什么https://blog.csdn.net/qq_43369406/article/details/131351280

x.3 From Fully Connected Layers to Convolutions

x.3.1 CNN和图像的性质

我们学习了线性模型,非线性模型如MLP,MLP适合处理表格数据,行对应样本,列对应特征,对于表格类数据我们使用MLP来寻找特征间交互的通用模式(PR)。我们也可以将多张图片展平为多个一维向量后传入MLP训练,但是这会忽略每张图片的空间结构信息,例如第一行第一个像素和第二行第一个像素它们是相邻的,但是展平为一维向量后,我们往往会丢失这一层关系。

为了更好利用相邻像素间的相互关联性这一先验知识,诞生了convolutional neural network, CNN, 卷积神经网络。CNN具有如下优点:

  • CNN需要的参数少于Full Connect Neural Network(FCNN)
  • 卷积易于用GPU并行计算
  • CNN适合图像

卷积神经网络的提出需要具有两种假设,translation invariance平移不变性locality局部性,这些性质都可以在下图中寻找特定人Waldo得到体现

  • translation invariance: 不管检测对象出现在图像中的那个位置,神经网络的前面基层应该对相同的图像区域具有类似的反应。
  • locality: 神经网络的前面几层应该只探索输入图像中的局部区域,而不过度在意图像中相隔较远区域的关系。

请添加图片描述

x.3.2 卷积操作

我们参考数学中的卷积,再不进行翻转的情况下只考虑互相关运算;在考虑局部性质后,我们只选取小于原图大小的尺寸较小的卷积核,即限制在2 delta的范围;考虑多个通道的存在我们引入四维表示,第一第二纬度是长宽,第三纬度(输入通道数),第四维度(输出通道数)。最终我们得到卷积计算公式如下(严格意义上讲是cross-correlation互相关计算公式后再加上bias偏置),式中V是卷积核值,X是输入特征矩阵值,H是输出特征矩阵值,u是bias:

请添加图片描述

请添加图片描述

我们可以更改卷积核中的参数以达到不同效果,如平滑或者锐化。而CNN则是将卷积核中参数设置为可学习的,通过将输出特征矩阵和label进行运算,反向传播卷积核中的参数,以使得CNN模型能够达到在图像中找到我们所需要的物体的结果。

x.3.3 receptive field

在CNN中,互相关运算称为卷积运算;卷积核张量上的权重称为元素。

receptive field感受野,指的是:对于某一层的任意元素x,其感受野指在forward propagation, FP前向传播期间可能影响该层元素x计算的所有元素,来自于前面的所有层。例如在上面的output中19的感受野就是input的四个位置元素。

x.4 kernel_size, stride, padding

对于卷积神经网络我们需要注意以下信息:

  • Pytorch中特征矩阵排列顺序如下(Batch_size, Channel, Height, Width),后简写为(B, C, H, W)。如果三维则为(B, C, S, H, W), S represents Slice。kernel_size是卷积核大小,kernel_size是卷积核个数,H_out为输出特征矩阵高,H_in为输入特征矩阵高。stride为步幅,padding为填充。
    • stride是每一步走多远
    • padding填充的是0,默认是上下左右都会填充。
  • 卷积核纬度等于输入特征矩阵维度
  • 输出特征矩阵维度等于卷积核个数
  • 卷积核参数个数计算公式为(kernel_size*kernel_size*C+1)*kernel_numkernel_size*kernel_size*C是weight参数,1是bias参数,一个卷积核可能有多个维度,但是只有一个偏置。
  • 输出特征矩阵大小计算公式为H_out = (H_in - kernel_size + padding)/stride + 1
  • 在dense net中常用的不改变输出特征矩阵大小的卷积核参数:3, 1, 1; 1, 1, 0; 对应关系为kernel_size, stride, padding.

如下,是一个二维输入特征矩阵,个数为1的卷积核。

请添加图片描述

x.5 pooling 汇聚/池化层

卷积汇聚虽然都可以进行下采样,但是他们的区别如下:

  1. 卷积在下采样的同时可以对特征进行提取,运行速度会慢一些,参数需要学习
  2. 池化进行下采样只能进行特征降维,运行速度快,参数不需要学习

x.6 LeNet

data flow数据流向如下:

请添加图片描述

参考代码如下:

https://github.com/yingmuzhi/deep_learning/tree/main/chapter7

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STC15 Proteus仿真DHT11环境湿度采集报警系统STC15W4K32S4-0043

STC15 Proteus仿真DHT11环境湿度采集报警系统STC15W4K32S4-0043 Proteus仿真小实验: STM32 Proteus仿真DHT11环境湿度采集报警系统STC15W4K32S4-0043 功能: Protues版本:8.9 硬件组成:STC15W4K32S4单片机 LCD1602显示器DHT11…

基于深度学习的高精度推土机检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要:基于深度学习的高精度推土机检测识别系统可用于日常生活中检测与定位推土机目标,利用深度学习算法可实现图片、视频、摄像头等方式的推土机目标检测识别,另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型训…

2023 node 接入腾讯云短信服务,实现发送短信功能

1、在 腾讯云开通短信服务,并申请签名和正文模板 腾讯云短信 https://console.cloud.tencent.com/smsv2 a、签名即是短信的开头。例如 【腾讯云短信】xxxxxxx; b、正文模板即短信内容, 变量部分使用{1}, 数字从1开始累推。例如&a…

深度学习-第T10周——数据增强

深度学习-第T10周——数据增强 深度学习-第T10周——数据增强一、前言二、我的环境三、前期工作1、导入数据集2、查看图片数目 四、数据预处理1、 加载数据1.1、设置图片格式1.2、划分训练集1.3、划分验证集1.4、查看标签1.5、再次检查数据1.6、配置数据集 2、数据可视化 五、数…

软件工程实践总结

前言 这次我们学校花了很多心血在这次的课设上,真的是特别感动和感谢,当你遇到真心为你好对你好的老师的时候,真的是会觉得人间值得! 之前在学软件工程的时候我就会觉得这些理论的东西有什么用啊,什么UML,…

Scrapy框架之下载中间件(详解)

目录 Scrapy中下载中间件 概念 方法 process_request(self, request, spider) 参数: process_response(self, request, response, spider) 参数 基本步骤 示例代码 注意 Scrapy 中 Downloader 设置UA 开发UserAgent下载中间件 代码 三方模块 配置模块到Settin…

【js30天挑战】第四天:数组操作

总结 filter(筛选条件为true的项) map(你想要输出的东西),进来多少个 出去多少个 sort(),默认可排字母顺序。sort(compareFn(a, b))其中compareFn(a, b)返回的值若大于0则a在b的后面。 reduce(),最复杂。reduce(func(){上一轮计算出的结果…

Flink-SQL 写入PostgreSQL 问题汇总

​ 1.主键字段为空问题 错误信息 org.apache.flink.table.api.TableException: Column bus_no is NOT NULL, however, a null value is being written into it. You can set job configuration table.exec.sink.not-null-enforcerDROP to suppress this exception and drop …

罗技k380键盘教程

在智能手机和平板电脑上享受台式电脑般舒适便捷的输入体验。罗技蓝牙™ 多设备键盘 K380 是一款小巧独特的键盘,让您在家中任何地方都能使用个人设备进行沟通和创作。 借助便捷的易于切换™ 按钮,可以通过蓝牙™ 无线技术同时连接最多三台设备&#xff…

【实用技巧】使用USB数据线向亚马逊kindle导入电子书

一、内容简介 本文主要介绍如何使用USB数据线向亚马逊kindle阅读器导入电子书。 二、所需原料 笔记本电脑、Kindle阅读器、Kindle适配的USB-a数据线。 三、导入方法 1、使用USB-a数据线将Kindle阅读器与电脑连接。 2、找到Kindle文件夹-documents-Downloads-Items1目录。…

Django框架实现简单的接口开发

前提创建一个Django项目&#xff0c;目录如下&#xff1a; Django框架上进行GET请求接口开发示例: 1.在上面项目结构目录Template下&#xff0c;新建一个login.html页面&#xff0c;定义表单提交请求的方式为post&#xff0c;具体代码如下。 <!DOCTYPE HTML> <html …

freemarker 使用word模板赋值

1. 引包<dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.28</version></dependency>word文档工具类import freemarker.template.Configuration; import freemarker.template.…

快来看看Java在编程语言中的优势与特性吧

作者主页&#xff1a;paper jie的博客_CSDN博客-C语言,算法详解领域博主 本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 其他专栏&#xff1a;《系统解析C语言》《C语言》《C语言-语法篇》 内容分享&#xff1a…

CentOS 7.9 安装 Jenkins

CentOS 7.9 安装 Jenkins 文章目录 CentOS 7.9 安装 Jenkins一、概述二、安装1、安装 OpenJDK2、安装 Jenkins3、启动 Jenkins4、给 Jenkins 放行端口 三、初始化 Jenkins 配置1、访问2、解锁 Jenkins3、配置清华大学的源地址4、安装插件5、创建管理员用户6、完成安装 四、功能…

【C++】C++关于异常的学习

文章目录 C语言传统的处理错误的方式一、异常的概念及用法二、自定义异常体系总结 C语言传统的处理错误的方式 传统的错误处理机制&#xff1a; 1. 终止程序&#xff0c;如 assert &#xff0c;缺陷&#xff1a;用户难以接受。如发生内存错误&#xff0c;除 0 错误时就会终止…

三相一次重合闸程序逻辑原理(二)

在手动合闸至故障线路或手动分闸及保护或自动装置要求不允许重合闸&#xff08;如母线、变压器保护及低频减载动作&#xff09;等情况下&#xff0c;闭锁重合闸的输入开关量触点接通&#xff0c;H4输出“1”&#xff0c;非门Z4输出“0”&#xff0c;计数器清零&#xff08;CD0&…

基于Java+SpringBoot+Vue前后端分离网课在线学习观看系统

博主介绍&#xff1a;✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

Spring Boot banner详解

Spring Boot 3.x系列文章 Spring Boot 2.7.8 中文参考指南(一)Spring Boot 2.7.8 中文参考指南(二)-WebSpring Boot 源码阅读初始化环境搭建Spring Boot 框架整体启动流程详解Spring Boot 系统初始化器详解Spring Boot 监听器详解Spring Boot banner详解 自定义banner Spring …

Kubernetes API Server源码学习(二):OpenAPI、API Resource的装载、HTTP Server具体是怎么跑起来的?

本文基于Kubernetes v1.22.4版本进行源码学习 6、OpenAPI 1&#xff09;、OpenAPI的作用 OpenAPI是由Swagger发展而来的一个规范&#xff0c;一种形式化描述Restful Service的语言&#xff0c;便于使用者理解和使用一个Service。通过OpenAPI规范可以描述一个服务&#xff1a;…

2024考研408-计算机组成原理第四章-指令系统学习笔记

文章目录 前言一、指令系统现代计算机的结构1.1、指令格式1.1.1、指令的定义1.1.2、指令格式1.1.3、指令—按照地址码数量分类①零地址指令②一地址指令&#xff08;1个操作数、2个操作数情况&#xff09;③二地址指令④三地址指令⑤四地址指令 1.1.4、指令-按照指令长度分类1.…