深度学习pytorch——卷积神经网络(持续更新)
计算机如何解析图片?
在计算机的眼中,一张灰度图片,就是许多个数字组成的二维矩阵,每个数字就是此点的像素值(图-1)。在存储时,像素值通常位于[0, 255]区间,在深度学习中,像素值通常位于[0, 1]区间。
一张彩色图片,是使用三张图片叠加而成,即RGB(red green blue)(图-2)。
什么是卷积?
标准的神经网络是全连接的方式,全连接会获取更多的信息,但同时也包含着巨大的算力需求。在以前,算力完全不足以支撑如此巨大的计算量,但是又要进行处理,因此当时的人们联想到了人类观察事物的过程,即结合人眼观察事物的角度——先观察吸引我们的点,忽略不吸引我们的点,这称为局部相关性(Receptive Field)。应用到神经网络中,就出现了卷积的概念。
卷积操作就是先仅仅观察一部分,然后移动视野观察下一部分,这就称为卷积操作(图-3)。
表现在神经网络中就相当于只连接局部相关性的属性(假设红色的线都是相关的,其它的都断开,当然红色的线都是我自己瞎画的),如图-4所示:
表现在实例上就是图-5的情况:
卷积的数学表示:设x(t)为输入的数据,h(t)为遍历使用的矩阵,y(t)为经过卷积计算得到的矩阵,将x(t)和h(t)进行点乘运算,将每次点成的结果进行累加得到y(t)对应元素的值(公式-1)。
宏观效果(图-6):
实例
以不同的 h(t) 进行卷积操作,会获取到不同的特征:
锐化(图-7):
模糊处理(图-8):
边缘检测(图-9):
卷积神经网络
图-3 是以1个Kernel_channel进行卷积运算。以多个Kernel_channels进行卷积运算(图-10):
假设原来的图像是一个28*28的灰度图像,即[1, 28, 28]。使用3*3的特征矩阵以7个角度来观察这副图像,最后得到的卷积层是[7, 26, 26]。
称呼声明:
Input_channels :输入的图像的通道,彩色图像就是3,灰度图像就是1
Kernel_channels: 以多少个视角来观察图像
Kernel_size : 特征矩阵的size
Stride: 每次向下/左移动的步长
Padding: 空白的数量,补0
实例(图-11),注意右下角的标注,每个圈中的值必须相等。将同一视角不同通道得出来的矩阵进行叠加,最后会得到一个高维的特性。卷积的过程叫做特征提取。
输出图像的大小计算(公式-2):
代码示例:
# 1、
x=torch.rand(1,1,28,28) #[b,c,h,w]
layer=nn.Conv2d(1,3,kernel_size=3,stride=1,padding=0) # weight [3,1,3,3],不补零
out=layer.forward(x)
print(out.shape)
#torch.Size([1, 3, 26, 26])# 2、
layer=nn.Conv2d(1,3,kernel_size=3,stride=1,padding=1) # weight [3,1,3,3],补零
out=layer.forward(x)
print(out.shape)
#torch.Size([1, 3, 14, 14])# 3、
layer=nn.Conv2d(1,3,kernel_size=3,stride=2,padding=1) # weight [3,1,3,3],补零
out=layer.forward(x)
print(out.shape)
#torch.Size([1, 3, 14, 14])# 说明:
#现在基本不用layer.forward,而是用layer
out=layer(x) #推荐使用
print(out.shape)
#torch.Size([1, 3, 14, 14])###### inner weight $ bias #########
#直接调用
print(layer.weight)
# Parameter containing:
# tensor([[[[-0.1249, -0.3302, -0.1774],
# [-0.1542, 0.0873, 0.0282],
# [-0.0006, -0.1798, -0.1030]]],
#
#
# [[[ 0.1932, 0.3240, 0.1747],
# [-0.2188, -0.1775, -0.0652],
# [-0.1455, -0.1220, 0.0629]]],
#
#
# [[[ 0.2596, 0.3017, 0.2028],
# [-0.2629, -0.0715, 0.3267],
# [ 0.3174, -0.1441, -0.1714]]]], requires_grad=True)print(layer.weight.shape)
# torch.Size([3, 1, 3, 3])print(layer.bias.shape)
# torch.Size([3])
向上/向下采样
最大采样,选取最大的(图-12):
代码演示:
x=out
print(x.shape)
#torch.Size([1, 3, 14, 14])layer=nn.MaxPool2d(2,stride=2) #最大池化,2*2的滑动窗口,步长为2
out=layer(x) #推荐使用
print(out.shape)
#torch.Size([1, 3, 7, 7])
平均采样,选择平均值(图-13):
代码演示:
x=out
print(x.shape)
#torch.Size([1, 3, 14, 14])out=F.avg_pool2d(x,2,stride=2) #平均池化,2*2的滑动窗口,步长为2
print(out.shape)
#torch.Size([1, 3, 7, 7])
上采样,选取最邻近的(图-14):
代码演示:
x=out
print(out.shape)
# torch.Size([1, 3, 7, 7])
out=F.interpolate(x,scale_factor=2,mode='nearest')# 为放大倍数
print(out.shape)
# torch.Size([1, 3, 14, 14])
out=F.interpolate(x,scale_factor=3,mode='nearest')
print(out.shape)
# torch.Size([1, 3, 21, 21])
扩展到卷积层:
1、输入是一个32*32的灰度图像[1, 32, 32],使用一个3*3的特征矩阵进行卷积,分别从6个角度进行卷积,步长为1,会得到一个[6,1,28,28]的图像
2、上采样-》[6,1,14,14]
3、卷积-》[16,1,10,10]
4、上采样-》[16,1,5,5]
5、全连接
6、全连接
7、高斯分布
ReLU
代码演示:
#两种方式,一种是nn.ReLU,另一种是F.relu
x=out
print(x.shape)
#torch.Size([1, 3, 7, 7])layer=nn.ReLU(inplace=True)
out=layer(x)
print(out.shape)
#torch.Size([1, 3, 7, 7])#与上面三行等价
out=F.relu(x)
print(out.shape)
#torch.Size([1, 3, 7, 7])#relu激活函数并不改变size大小
相关文章:
深度学习pytorch——卷积神经网络(持续更新)
计算机如何解析图片? 在计算机的眼中,一张灰度图片,就是许多个数字组成的二维矩阵,每个数字就是此点的像素值(图-1)。在存储时,像素值通常位于[0, 255]区间,在深度学习中࿰…...
【edge浏览器无法登录某些网站,以及迅雷插件无法生效的解决办法】
edge浏览器无法登录某些网站,以及迅雷插件无法生效的解决办法 edge浏览器无法登录某些网站,但chrome浏览器可以登录浏览器插件无法使用,比如迅雷如果重装插件重装浏览器重装迅雷后仍然出现问题 edge浏览器无法登录某些网站,但chro…...
OpenHarmony无人机MAVSDK开源库适配方案分享
MAVSDK 是 PX4 开源团队贡献的基于 MavLink 通信协议的用于无人机应用开发的 SDK,支持多种语言如 C/C、python、Java 等。通常用于无人机间、地面站与通信设备的消息传输。 MAVLink 是一种非常轻量级的消息传递协议,用于与无人机(以及机载无…...
模型训练----parser.add_argument添加配置参数
现在需要配置参数来达到修改训练的方式,我现在需要新建一个参数来开关wandb的使用。 首先就是在def parse_option():函数里添加上你要使用的变量名 parser.add_argument("--open_wandb",type bool,defaultFalse,helpopen wandb) 到config文件里增加你的…...
数字未来:探索 Web3 的革命性潜力
在当今数字化的时代,Web3作为互联网的新兴范式正逐渐崭露头角,引发了广泛的关注和探讨。本文将深入探索数字未来中Web3所蕴含的革命性潜力,探讨其对社会、经济和技术的深远影响。 1. Web3:数字世界的下一个阶段 Web3是一个正在崛…...
群晖NAS使用Docker部署大语言模型Llama 2结合内网穿透实现公网访问本地GPT聊天服务
文章目录 1. 拉取相关的Docker镜像2. 运行Ollama 镜像3. 运行Chatbot Ollama镜像4. 本地访问5. 群晖安装Cpolar6. 配置公网地址7. 公网访问8. 固定公网地址 随着ChatGPT 和open Sora 的热度剧增,大语言模型时代,开启了AI新篇章,大语言模型的应用非常广泛,包括聊天机…...
[选型必备基础信息] 存储器
存储芯片根据断电后是否保留存储的信息可分为易失性存储芯片(RAM)和非易失性存储芯片(ROM)。 简单说,存储类IC分为 ROM和RAM ROM:EEPROM / Flash / eMMC RAM:SRAM/SDRAM/DDR2/DDR3/DDR4/DDR5…...
C++——C++11线程库
目录 一,线程库简介 二,线程库简单使用 2.1 传函数指针 编辑 2.2 传lamdba表达式 2.3 简单综合运用 2.4 线程函数参数 三,线程安全问题 3.1 为什么会有这个问题? 3.2 锁 3.2.1 互斥锁 3.2.2 递归锁 3.3 原子操作 3…...
机器学习 | 线性判别分析(Linear Discriminant Analysis)
1 机器学习中的建模 1.1 描述性建模 以方便的形式给出数据的主要特征,实质上是对数据的概括,以便在大量的或有噪声的数据中仍能观察到重要特征。重在认识数据的主要概貌,理解数据的重要特征。 Task:聚类分析,数据降…...
TypeScript-数组、函数类型
1.数组类型 1.1类型 方括号 let arry:number[][5,2,0,1,3,1,4] 1.2 数组泛型 let arry2:Array<number>[5,2,0,1,3,1,4] 1.3接口类型 interface makeArryRule{[index:number]:number }let arry3:makeArryRule[5,2,0,1,3,1,4] 1.4伪数组 说明: argument…...
Python深度学习034:cuda的环境如何配置
文章目录 1.安装nvidia cuda驱动CMD中看一下cuda版本:下载并安装cuda驱动2.创建虚拟环境并安装pytorch的torch_cuda3.测试附录1.安装nvidia cuda驱动 CMD中看一下cuda版本: 注意: 红框的cuda版本,是你的显卡能装的最高的cuda版本,所以可以选择低于它的版本。比如我的是11…...
【论文笔记】Text2QR
论文:Text2QR: Harmonizing Aesthetic Customization and Scanning Robustness for Text-Guided QR Code Generation Abstract 二维码通常包含很多信息但看起来并不美观。stable diffusion的出现让平衡扫描鲁棒性和美观变为可能。 为了保证美观二维码的稳定生成&a…...
【ReadPapers】A Survey of Large Language Models
LLM-Survey的llm能力和评估部分内容学习笔记——思维导图 思维导图 参考资料 A Survey of Large Language Models论文的github仓库...
站群CMS系统
站群CMS系统是一种用于批量建立和管理网站的内容管理系统,它能够帮助用户快速创建大量的网站,并实现对这些网站的集中管理。以下是三个在使用广泛的站群CMS系统,它们各具特色,可以满足不同用户的需求。 1. Z-BlogPHP Z-BlogPHP是…...
landsat8数据产品说明
1、下载数据用户手册 手册下载网址,搜索landsat science关键词,并点击到官网下载。 2、用户手册目录 3、landsat8数据产品说明 具体说明在手册的第四章,4.1.4数据产品章节,具体描述如下: 英文意思: L8 的…...
Golang 内存管理和垃圾回收底层原理(二)
一、这篇文章我们来聊聊Golang内存管理和垃圾回收,主要注重基本底层原理讲解,进一步实战待后续文章 垃圾回收,无论是Java 还是 Golang,基本的逻辑都是基于 标记-清理 的, 标记是指标记可能需要回收的对象,…...
OpenHarmony:全流程讲解如何编写ADC平台驱动以及应用程序
ADC(Analog to Digital Converter),即模拟-数字转换器,可将模拟信号转换成对应的数字信号,便于存储与计算等操作。除电源线和地线之外,ADC只需要1根线与被测量的设备进行连接。 一、案例简介 该程序是基于…...
计算机学生求职简历的一些想法
面试真的是一件非常难的事情,因为在短短的半小时到一个小时,来判断一个同学行不行,其实是很不全面的。作为一个求职的同学应该怎么办呢?求职的同学可以提前做一些准备,其中比较重要的要数简历的编写。 简历的作用 简…...
网工内推 | 售前专场,需熟悉云计算技术,上市公司,提成高
01 神州数码 招聘岗位:售前工程师 职责描述: 1.负责所在区域华为IT产品线(服务器、存储、云、虚拟化)的售前技术支持工作,包括客户交流、方案编写、配置报价、投标支持、测试等; 2.与厂商相关人员建立和保…...
excel匹配替换脱敏身份证等数据
假如excel sheet1中有脱敏的身份证号码和姓名,如: sheet2中有未脱敏的数据数据 做法如下: 1、在sheet2的C列用公式 LEFT(A2,6)&REPT("*",8)&RIGHT(A2,4) 做出脱敏数据,用来与sheet1的脱敏数据匹配 2、在sheet…...
[技术笔记] Flash选型之基础知识芯片分类
1、按照接口分类 分为 Serial串口Flash 和 Parallel并口Flash; 市场大量使用Serial Flash;价格便宜;已满足系统对数据读写速度的要求; Serial Flash已经可以代表 NOR Flash; 小知识: 1)在…...
Jenkins常用插件安装及全局配置
Jenkins常用插件安装及全局配置 前言 Jenkins是一个流行的持续集成工具,通过安装适用的插件,可以扩展Jenkins的功能,并与其他工具和系统集成。本文将介绍一些常用的Jenkins插件以及安装和配置的步骤。通过安装和配置这些常用插件…...
C++初学者:如何优雅地写程序
我喜欢C语言的功能强大,简洁,我也喜欢C#的语法简单,清晰,写起来又方便好用。 一、为什么不用C语言写程序。 C语言用来做题目,考试研究是很方便的,但是用来写程序做软件,你就会发现,…...
图论- 最小生成树
一、最小生成树-prim算法 1.1 最小生成树概念 一幅图可以有很多不同的生成树,比如下面这幅图,红色的边就组成了两棵不同的生成树: 对于加权图,每条边都有权重(用最小生成树算法的现实场景中,图的边权重…...
LeetCode刷题记(一):1~30题
1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以…...
芒果YOLOv5改进89:卷积SPConv篇,即插即用,去除特征图中的冗余,FLOPs 和参数急剧下降,提升小目标检测
芒果专栏 基于 SPConv 的改进结构,改进源码教程 | 详情如下🥇 👉1. SPConv 结构、👉2. CfSPConv 结构 💡本博客 改进源代码改进 适用于 YOLOv5 按步骤操作运行改进后的代码即可 即插即用 结构。博客 包括改进所需的 核心结构代码 文件 YOLOv5改进专栏完整目录链接:…...
Linux:详解TCP报头类型
文章目录 温习序号的意义序号和确认序号报文的类型 TCP报头类型详解ACK: 确认号是否有效SYN: 请求建立连接; 我们把携带SYN标识的称为同步报文段FIN: 通知对方, 本端要关闭了PSH: 提示接收端应用程序立刻从TCP缓冲区把数据读走RST: 对方要求重新建立连接; 我们把携带RST标识的称…...
【Leetcode】top 100 二分查找
35 搜索插入位置 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。 基础写法!!!牢记…...
Redis高级面试题-2024
说说你对Redis的理解 Redis是一个基于Key-Value存储结构的开源内存数据库,也是一种NoSQL数据库。 它支持多种数据类型,包括String、Map、Set、ZSet和List,以满足不同应用场景的需求。 Redis以内存存储和优化的数据结构为基础,提…...
HarmonyOS 应用开发之FA模型与Stage模型应用组件
应用配置文件概述(FA模型) 每个应用项目必须在项目的代码目录下加入配置文件,这些配置文件会向编译工具、操作系统和应用市场提供描述应用的基本信息。 应用配置文件需申明以下内容: 应用的软件Bundle名称,应用的开发…...
交互式网站制作/东莞企业网站设计公司
了解生产中内部使用的API的性能是一项艰巨的任务。实际上,大多数团队还没有监控API。随着市场的变化,越来越多的团队将API监控作为Ops团队和QA团队的优先事项,因此每个版本都经过了适当的测试,并设置了一个监控器确保在生产环境中…...
怎样推广自己的店铺啊/网站seo优化心得
1、这两个方法来自不同的类分别是Thread和Object2、最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。3、wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以…...
wordpress媒体库路径/长沙百度地图
首先声明本人正在21世纪的风口浪尖---学生物的,属于第一次从github上搬运项目,而且第一次就搬运了这么大的项目,所以其中碰到了些只有咱们这种小白可能会遇到的坑。这个faster-rcnn的版本来自于:ruotianluo/pytorch-faster-rcnn…...
南昌网站建设讯息/2021百度热搜年度榜
为了评估模型拟合的好坏,通常用损失函数(觉得严格来说相当于下面的目标函数)来度量拟合的程度。损失函数极小化,意味着拟合程度最好,对应的模型参数即为最优参数。 每一个算法都有一个目标函数(objective f…...
虚拟机网站建设/单页网站seo如何优化
死信队列 DLX(Dead-Letter-Exchange),可以称为死信交换器。当消息在一个队列中变成死信(dead message)之后,它能被重新发送到另一个交换器中,这个交换器就是DLX,绑定DLX的队列就称为…...
武汉网站推广¥做下拉去118cr/宣传软文是什么意思
“我可能干了个假的数据分析师!”经常有同学发出这种感慨,然后到处发《数据分析师是干什么的》《数据分析师、数据工程师、数据运营、数据挖掘工程师、商业数据分析师、我随便写个什么分析师之间到底有什么区别》一类的帖子。之所以会这样,是…...