PyTorch的卷积和池化

16969bd261584bfcbe198e40a98f2b99.gif

659c8d58a66d4d5182544fee21524d4d.png

卷积计算 

324eb12d248140bbbec2c8dbcfce7026.png

  1. input 表示输入的图像
  2. filter 表示卷积核, 也叫做滤波器
  3. input 经过 filter 的得到输出为最右侧的图像,该图叫做特征图

 0f7eb9b0578449789ab666dd7e434070.png

卷积的计算是将卷积核放入左上角,在局部区域间做点积,然后将卷积核在Input上面依次从左向右,从上到下平移。左上角的点积操作:32b4754544024e34810dd427327bcce9.png

得到最终的特征图为:

53af8fff45454bd4a4c6354fc58e20cd.png

f78ebb15eafe471c9e370e4e14f962ca.png

Padding 

通过上面的卷积计算过程,我们发现最终的特征图比原始图像小很多,如果想要保持经过卷积后的图像大小不变, 可以在原图周围添加 padding 来实现

c73b68f955dc49a090018b0a4aa3df8e.png

Stride 

按照步长为1来移动卷积核,得到上面的特征图,如果按照步长为2的话,特征图就变成了2*2的特征图了。 

6f1f18db0ebc4632afae26970df4ffd7.png

多通道卷积计算

实际中的图像都是多个通道组成的,即多个Input图前后贴在一起。

697b2416b6ef4295aa757774c1a36929.png

  1. 当输入有多个通道(Channel), 例如 RGB 三个通道, 此时要求卷积核需要拥有相同的通道数数。
  2. 每个卷积核通道与对应的输入图像的各个通道进行卷积。
  3. 将每个通道的卷积结果按位相加得到最终的特征图。

多卷积核卷积计算 

上面我们只使用一个卷积核进行特征提取,实际对图像进行特征提取时,我们需要使用多个卷积核进行特征提取; 这个多个卷积核可以理解为从不同到的视角、不同的角度对图像特征进行提取。

2cbe55c459024499b9f1d77d320bc9cc.png

特征图大小 

输出特征图的大小与三个参数有关:

  1. size: 卷积核/过滤器大小,一般会选择为奇数,比如有 1*1, 3*3, 5*5*
  2. Padding: 零填充的方式
  3. Stride: 步长

计算方法:

  1. 输入图像大小: W x W
  2. 卷积核大小: F x F
  3. Stride: S
  4. Padding: P
  5. 输出图像大小: N x N

 d429570e755b4d5bb5470ff40ed04ee2.png

  1. 例如,(5 - 3 + 2) / 1 + 1 = 5, 即得到的特征图大小为: 5 x 5

60d3a31c753040038d25392fb2ae91b9.png

PyTorch 对卷积层的使用 

import torch
import torch.nn as nn
import matplotlib.pyplot as plt# 显示图像
def show(img):# 输入形状: (Height, Width, Channel)plt.imshow(img)plt.axis('off')plt.show()# 单个多通道卷积核
def test01():# 读取图像, 形状: (1024, 720, 3)img = plt.imread('QQ.png')show(img)# 构建卷积层conv = nn.Conv2d(in_channels=3, out_channels=1, kernel_size=3, stride=1, padding=1)# 输入形状: (Channel, Height, Width)img = torch.tensor(img).permute(2, 0, 1)new_img = conv(img)new_img = new_img.permute(1, 2, 0)show(new_img.detach().numpy())if __name__ == '__main__':test01()

输出的单卷积特征图:

c76839aae4644219a5aebbdbf544aa73.png

0a760d86999143dab70b20dfe556dfd9.png

多卷积特征图: 

test01 函数使用一个多通道卷积核进行特征提取,test02 函数使用 3 个多通道卷积核进行特征提取: 

def test02():# 读取图像, 形状:img = plt.imread('QQ.png')conv = nn.Conv2d(in_channels=3, out_channels=3, kernel_size=3, stride=1, padding=1)# 输入形状: (Channel, Height, Width)img = torch.tensor(img).permute(2, 0, 1)new_img = conv(img)new_img = new_img.permute(1, 2, 0)# 打印三个特征图show(new_img[:, :, 0].detach().numpy())show(new_img[:, :, 1].detach().numpy())show(new_img[:, :, 2].detach().numpy())

 

这些就是卷积层的使用,下一节我们去了解池化层~ 

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

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

相关文章

免费证件照一键换底色

最近星期天在家搞了一个小工具,在这里分享下! 废话不多说看看效果: 效果还不错,需要的可以联系我!!!!!!!!! 别的网上可都是一次五块钱这种。太贵了。。!!

【Dash】开始学习dash

安装Dash 网上很多安装dash的教程,不再赘述 开始Dash 一个dash页面的基本写法 # dash 的基本写法 import dash from dash import html,dcc,callback,Input,Output# 创建一个 dash 应用 app dash.Dash()# 定义布局,定义一个输入框和一个输出框 app.l…

VS项目Debug下生成的EXE在生产机器上运行

使用Visual Studio开发应用程序时,为了临时在非开发机上看一下效果,就直接把Debug下的文件全部拷贝到该机器上,直接双击exe运行。双击之后,没有直接打开应用程序,而是弹出了一个Error弹框。  赶快在网上搜了一遍&…

MFC窗口更新与重绘

窗口更新与重绘 窗口或控件更新其外观的情况通常包括以下几种: 窗口大小变化: 当用户调整窗口大小时,窗口的客户区大小会改变,需要重新绘制窗口内容以适应新的大小。 窗口重叠或暴露: 当窗口被其他窗口遮挡部分或完…

「 安全设计 」68家国内外科技巨头和安全巨头参与了CISA发起的安全设计承诺,包含MFA、默认密码、CVE、VDP等七大承诺目标

美国网络安全和基础设施安全局(CISA,CyberSecurity & Infrastructure Security Agency)于2024年5月开始呼吁企业是时候将网络安全融入到技术产品的设计和制造中了,并发起了安全设计承诺行动,该承诺旨在补充和建立现…

一个物业管理服务项目的思考——智慧停车场无人值守呼叫系统到电梯五方对讲再到呼叫中心

目录 起源智慧停车场无人值守呼叫系统然后电梯五方对讲系统又然后物业呼叫中心集控E控中心怎么做 之前介绍过一个关于 点这个链接:门卫、岗亭、值班室、门房、传达室如果距离办公室和机房比较远的情况下怎么实现电话通话,基本上属于物业管理服务的范围。…

强化学习在一致性模型中的应用与实验验证

在人工智能领域,文本到图像的生成任务一直是研究的热点。近年来,扩散模型和一致性模型因其在图像生成中的卓越性能而受到广泛关注。然而,这些模型在生成速度和微调灵活性上存在局限。为了解决这些问题,康奈尔大学的研究团队提出了…

【STM32+HAL+Proteus】系列学习教程---中断(NVIC、EXTI、按键)

实现目标 1、掌握STM32的中断知识 2、学会STM32CubeMX软件关于中断的配置 3、具体目标:1、外部中断检测按键,每按一次计一次数,满5次LED1状态取反。 一、中断概述 1.1、中断定义 CPU执行程序时,由于发生了某种随机的事件(包括…

实验室纳新宣讲会(java后端)

前言 这是陈旧已久的草稿2021-09-16 15:41:38 当时我进入实验室,也是大二了,实验室纳新需要宣讲, 但是当时有疫情,又没宣讲成。 现在2024-5-12 22:00:39,发布到[个人]专栏中。 实验室纳新宣讲会(java后…

基于GD32的简易数字示波器(4)- 软件

这期记录的是项目实战,做一个简易的数字示波器。 教程来源于嘉立创,帖子主要做学习记录,方便以后查看。 本期主要介绍GD32的keil5环境和串口下载。详细教程可观看下方链接。 软件-第1讲-工程模板新建_哔哩哔哩_bilibili 2.1 开发环境搭建 …

logback日志持久化

1、问题描述 使用logback持久化记录日志。 2、我的代码 logback是Springboot框架里自带的&#xff0c;所以只要引入“spring-boot-starter”就行了。无需额外引入logback依赖。 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns&…

2005-2022年各省居民人均可支配收入数据(含城镇居民人均可支配收入、农村居民人均可支配收入)(无缺失)

2005-2022年各省居民人均可支配收入数据&#xff08;含城镇居民人均可支配收入、农村居民人均可支配收入&#xff09;&#xff08;无缺失&#xff09; 1、时间&#xff1a;2005-2022年 2、来源&#xff1a;国家统计局、统计年鉴 3、指标&#xff1a;全体居民人均可支配收入、…

探索大型语言模型(LLM)的世界

​ 引言 大型语言模型&#xff08;LLM&#xff09;作为人工智能领域的前沿技术&#xff0c;正在重塑我们与机器的交流方式&#xff0c;在医疗、金融、技术等多个行业领域中发挥着重要作用。本文将从技术角度深入分析LLM的工作原理&#xff0c;探讨其在不同领域的应用&#xff0…

开源软件托管平台gogs操作注意事项

文章目录 一、基本说明二、gogs私有化部署三、设置仓库git链接自动生成参数四、关闭新用户注册入口 私有化部署gogs托管平台&#xff0c;即把gogs安装在我们自己的电脑或者云服务器上。 一、基本说明 系统环境&#xff1a;ubuntu 20.4docker安装 二、gogs私有化部署 前期准…

Ansible常用变量【上】

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 在Ansible中会用到很多的变量&#xff0c;Ansible常用变量包括以下几种&#xff1a; 1. 自定义变量——在playbook中用户自定义…

springboot整合rabbitmq的不同工作模式理解

前提是已经安装并启动了rabbitmq&#xff0c;并且项目已经引入rabbitmq&#xff0c;完成了配置。 不同模式所需参数不同&#xff0c;生产者可以根据参数不同使用重载的convertAndSend方法。而消费者均是直接监听某个队列。 不同的交换机是实现不同工作模式的关键组件.每种交换…

权限及权限操作

1.命令行解释器 Linux将命令行解释器称为外壳程序shell 命令行解释器的作用就是将用户输入的指令转换为操作系统能够直接执行的指令。同时将操作系统的反馈转换为用户能看懂的反馈&#xff0c;解决了用户和操作系统沟通成本的问题。与此同时&#xff0c;命令行解释器还能够拦…

java项目之校园失物招领系统(springboot+vue+mysql)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的校园失物招领系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 校园失物招领系统的主要…

修改mysql locahost或者127.0.0.1弱密码问题

一、登录有问题的数据库 sudo mysql -uroot -pxxx -hkde-offline1 -P13306 二、查询user表 这将显示与 root 用户关联的主机、用户名以及加密后的认证字符串(密码)。请注意,authentication_string 列中存储的是经过哈希加密后的密码,而不是原始密码。 MySQL [mysql…

机器学习(五) ----------决策树算法

目录 1 核心思想 2 决策树算法主要步骤 3 决策树算法的分类 3.1 ID3算法&#xff08;Iterative Dichotomiser 3&#xff09;&#xff1a; 3.1.1 基本步骤 3.1.2 原理 信息增益 3.1.3 注意事项 3.2 C4.5算法&#xff1a; 3.2.1. 信息增益率 计算公式 3.2.2. 构建决策…