nn网络层-卷积层

news2024/11/15 10:27:43

一、1d/2d/3d Convolution

  • 卷积运算:卷积核在输入信号(图像)上滑动,相应位置上进行乘加
  • 卷积核:又称为滤波器,过滤器,可认为是某种模式,某种特征。
  • 卷积过程类似于用一个模版去图像上寻找与它相似的区域,与卷积核模式越相似,激活值越高,从而实现特征提取

在这里插入图片描述
AlexNet卷积核可视化,发现卷积核学习到的是边缘,条纹,色彩这一些细节模式

在这里插入图片描述
卷积维度:一般情况下,卷积核在几个维度上滑动,就是几维卷积

在这里插入图片描述
在这里插入图片描述

二、nn.Conv2d

nn.Conv2d是PyTorch中用于进行二维卷积操作的类。它可以对多个二维信号(如图像)进行二维卷积操作。

nn.Conv2d的主要参数如下:

  • in_channels:输入通道数,即输入信号的深度(或通道数)。
  • out_channels:输出通道数,即卷积核的个数,也可以理解为卷积操作后得到的特征图的深度。
  • kernel_size:卷积核的尺寸,可以是一个整数或一个元组,表示卷积核的高度和宽度。
  • stride:步长,表示卷积核在输入信号上滑动的步长,默认为1。
  • padding:填充个数,可以是一个整数或一个元组,表示在输入信号的周围填充的行数和列数,默认为0。
  • dilation:空洞卷积的大小,表示卷积核中的元素之间的间隔,默认为1。
  • groups:分组卷积设置,用于将输入和输出通道分组,默认为1,表示不分组。
  • bias:是否使用偏置项,默认为True。
  • padding_mode:填充模式,用于指定填充的方式,默认为’zeros’,表示用0进行填充。
    下面是nn.Conv2d的典型使用示例:
import torch
import torch.nn as nn
# 创建一个输入张量
input_tensor = torch.randn(1, 3, 32, 32)  # 输入通道数为3,大小为32x32的图像
# 创建一个卷积层
conv_layer = nn.Conv2d(in_channels=3, out_channels=64, kernel_size=3, stride=1, padding=1)
# 对输入张量进行卷积操作
output = conv_layer(input_tensor)

在上述示例中,我们首先创建了一个大小为1x3x32x32的输入张量,表示一个通道数为3、大小为32x32的图像。然后,我们创建了一个卷积层conv_layer,其中输入通道数为3,输出通道数为64,卷积核尺寸为3x3,步长为1,填充个数为1。最后,我们将输入张量传入卷积层进行卷积操作,得到输出张量output

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

尺寸计算

完整版的二维卷积尺寸计算公式如下:
在这里插入图片描述

输出尺寸 = floor((输入尺寸 + 2 * 填充个数 - 卷积核尺寸) / 步长) + 1

其中,

  • 输出尺寸是指卷积操作后得到的特征图的尺寸。
  • 输入尺寸是指输入信号(如图像)的尺寸。
  • 填充个数是指在输入信号的周围填充的行数和列数。
  • 卷积核尺寸是指卷积核的高度和宽度。
  • 步长是指卷积核在输入信号上滑动的步长。

这个公式可以用来计算卷积操作后得到的特征图的尺寸。

简化版:
在这里插入图片描述

简化版的二维卷积尺寸计算公式是在完整版的基础上进行了简化,假设填充个数为0,步长为1,即没有填充且卷积核每次滑动一个像素。这样,简化版的尺寸计算公式可以简化为:
输出尺寸 = 输入尺寸 - 卷积核尺寸 + 1

这个简化版的公式适用于常见的卷积操作情况,但在实际应用中,可能会根据具体需求进行填充和步长的设置,因此完整版的尺寸计算公式更加通用。

卷积维度:

一般情况下,卷积核在几个维度上滑动,就是几维卷积
在这里插入图片描述
在这里插入图片描述

三、转置卷积

转置卷积又称为反卷积(Deconvolution)和部分跨越卷积(Fractionally-strided Convolution) ,用于对图像进行上采样(UpSample)

为什么称为转置卷积?
假设图像尺寸为4 * 4,卷积核为3 * 3,padding=0,stride=1

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


nn.ConvTranspose2d

nn.ConvTranspose2d是PyTorch中用于实现转置卷积的函数。它可以用来进行上采样操作,将输入特征图的尺寸增大。

该函数的主要参数如下:

  • in_channels:输入通道数,指定输入特征图的通道数。
  • out_channels:输出通道数,指定输出特征图的通道数。
  • kernel_size:卷积核尺寸,指定卷积核的大小。
  • stride:步长,指定卷积核在输入特征图上滑动的步长。
  • padding:填充个数,指定在输入特征图周围添加的填充像素数。
  • output_padding:输出填充个数,指定在输出特征图周围添加的填充像素数。
  • groups:分组卷积设置,指定将输入通道和输出通道分成几组进行卷积操作。
  • bias:是否使用偏置项。
  • dilation:空洞卷积大小,指定卷积核中的元素之间的间距。
  • padding_mode:填充模式,指定填充的方式,常用的有’zeros’和’reflection’。

例如,使用nn.ConvTranspose2d可以创建一个转置卷积层的实例:

import torch.nn as nn

# 创建一个转置卷积层的实例
conv_transpose = nn.ConvTranspose2d(in_channels=3, out_channels=64, kernel_size=3, stride=2, padding=1)

这样就创建了一个输入通道数为3,输出通道数为64的转置卷积层,卷积核大小为3x3,步长为2,填充个数为1。

转置卷积

转置卷积是一种用于实现上采样的操作,可以将输入特征图的尺寸增大。在转置卷积中,输出特征图的大小可以通过以下公式计算:

在这里插入图片描述

简化版:

out_size = (in_size - 1) * stride + kernel_size

完整版:

out_size = (in_size - 1) * stride - 2 * padding + dilation * (kernel_size - 1) + output_padding + 1

其中,

  • in_size:输入特征图的尺寸。
  • stride:步长,指定卷积核在输入特征图上滑动的步长。
  • kernel_size:卷积核尺寸,指定卷积核的大小。
  • padding:填充个数,指定在输入特征图周围添加的填充像素数。
  • dilation:空洞卷积大小,指定卷积核中的元素之间的间距。
  • output_padding:输出填充个数,指定在输出特征图周围添加的填充像素数。

这些公式可以用来计算转置卷积操作后输出特征图的尺寸。需要注意的是,由于转置卷积的操作涉及到填充和步长等参数,因此输出特征图的尺寸可能与输入特征图的尺寸不完全一致。

此外,您提到了棋盘效应(Checkerboard Artifacts)。这是在转置卷积中常见的一种伪影现象,可能导致生成的图像出现棋盘状的格子状伪影。为了减少棋盘效应,可以采用一些技巧,例如使用更大的步长、更小的卷积核尺寸、更大的填充等。

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

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

相关文章

OpenAI ChatGPT-4开发笔记2024-01:开发环境

ChatGPT发展一日千里。工具、函数少则数日,多则数月就加入了Deprecated行列不再如预期般工作。元旦闲来无事,用最新的ChatGPT重写一下各种开发场景,全部实测通过。 开发环境: 电脑:两台笔记本:HP和MacBoo…

AI-数学-高中-3.二次函数的根的分布问题的解题方法

原作者学习视频:二次】3二次函数根分布问题(中档)_哔哩哔哩_bilibili 一、伟达定理(根与0比较的二次函数) 示例: 二、画图法: 1.开口方向的确定,有的示例可能存在向上、下两种情况…

顺序栈之共享栈实现——C语言

参考书&#xff1a;数据结构教程 第5版 李葆春 P83 #include <stdio.h> #include <string.h> #include <stdlib.h>#define MaxSize 10/*共享栈*/ typedef struct {char data[MaxSize];int top1,top2,len; }DStack;/*初始化*/ void InitStack(DStack *s){s-…

[蓝桥杯学习] 树状数组的二分

要解决这个问题&#xff0c;插入和删除可以用STL实现&#xff0c;2操作如果用树状数组实现的话&#xff0c;将数的值作为树状数组的下标&#xff0c;即值域。 树状数组有两种操作&#xff0c;一个是更新某点的值&#xff0c;另一个是求区间和。 mid (lr)/2 &#xff0c;求和 …

CTF-PWN-栈溢出-中级ROP-【栈迁移】

文章目录 栈迁移具体流程 VNCTF 2023 traveler libc-2.27检查源码main函数![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/386c35c30f854434ae43667b9473c58a.png)全局变量地址局部变量地址 PIE保护开启PIE关闭PIE 思路exp 栈迁移参考 栈迁移参考 栈迁移 顾名思义…

数模学习day10-聚类模型

说明&#xff0c;本文部分图片和内容源于数学建模交流公众号 目录 K-means聚类算法 K-means聚类的算法流程&#xff1a; 图解 算法流程图 评价 K-means算法 基本原则 算法过程 Spss软件操作 K-means算法的疑惑 系统&#xff08;层次&#xff09;聚类 算法流程 Sp…

LVGL 主题

LVGL 主题 修改样式的一点个人心得 lvgl的样式众多&#xff0c;本人是记不住的&#xff0c;用的时候可以快速查找即可 查看官方例子 查看官方例子可以快速了解组件的基础样式 使用官方的 SquareLineStudio 软件&#xff0c;配置出想要的效果&#xff0c;再生成参考代码 Squ…

linux系统基础知识-基础IO

IO 概念引入位图的概念IO的系统调用函数openwriteread()close简单使用样例&#xff1a; 文件描述符fd默认文件流stdin/stdout/stderr文件描述符的分配规则 重定向的概念输出重定向输入重定向追加重定向dup2()系统调用总结 文件缓冲区深入理解缓冲区的概念输出缓冲区部分代码解释…

基于ssm的儿童影楼拍摄管理系统的设计与实现+vue论文

基于SSM的儿童影楼拍摄管理系统的设计与实现 摘 要 当下&#xff0c;正处于信息化的时代&#xff0c;许多行业顺应时代的变化&#xff0c;结合使用计算机技术向数字化、信息化建设迈进。以前相关行业对于商品信息的管理和控制&#xff0c;采用人工登记的方式保存相关数据&…

实时云渲染是什么?它的应用方向有哪些?

实时云渲染有三个关键词&#xff0c;"实时"、"云"和"渲染"&#xff0c;它们分别表示&#xff1a;同步、云服务器计算和图像生成过程&#xff0c;简单来说就是使用第三方平台快速完成渲染任务&#xff0c;它有两个实用方向&#xff1a; 一、实时渲…

4.4 媒资管理模块 - 分布式任务处理介绍、视频处理技术方案

媒资管理模块 - 视频处理 文章目录 媒资管理模块 - 视频处理一、视频转码1.1 视频转码介绍1.2 FFmpeg 基本使用1.2.1 下载安装配置1.2.2 转码测试 1.3 工具类1.3.1 VideoUtil1.3.2 Mp4VideoUtil1.3.3 测试工具类 二、分布式任务处理2.1 分布式任务调度2.2 XXL-JOB 配置执行器 中…

Master01节点免密钥登录其他节点

1、执行命令 ssh-keygen -t rsa&#xff0c;一直敲回车 2、for i in k8s-master01 k8s-node01 k8s-node02;do ssh-copy-id -i .ssh/id_rsa.pub $i;done 输入yes和对应节点密码

PostGIS教程学习十九:基于索引的聚簇

PostGIS教程学习十九&#xff1a;基于索引的聚簇 数据库只能以从磁盘获取信息的速度检索信息。小型数据库将完全位于于RAM缓存&#xff08;内存&#xff09;&#xff0c;并摆脱物理磁盘访问速度慢的限制。但是对于大型数据库&#xff0c;对物理磁盘的访问将限制数据库的信息检…

在VS Code中安装Copilot与安装其他扩展的方法一样,只需简单几步

GitHub Copilot是由OpenAI和GitHub开发的人工智能工具。它的目的是通过自动完成代码来帮助开发人员使用集成开发环境&#xff08;IDE&#xff09;&#xff0c;如Visual Studio Code。它目前仅作为技术预览版提供&#xff0c;因此只有在候补名单上被认可的用户才能访问它。对于用…

纯血鸿蒙「扩圈」100天,酝酿已久的突围

坦白讲&#xff0c;去年参加华为开发者大会看到HarmonyOS NEXT&#xff08;仅运行鸿蒙原生应用&#xff0c;所以也称作「纯血鸿蒙」&#xff09;的时候&#xff0c;小雷也没料想到鸿蒙原生应用生态的发展速度会如此之快。 9月25日&#xff0c;华为正式对外宣布启动HarmonyOS NE…

PTA✨C语言 就不告诉你

7-7 就不告诉你 分数 15 全屏浏览题目 切换布局 作者 CHEN, Yue 单位 浙江大学 做作业的时候&#xff0c;邻座的小盆友问你&#xff1a;“五乘以七等于多少&#xff1f;”你应该不失礼貌地围笑着告诉他&#xff1a;“五十三。”本题就要求你&#xff0c;对任何一对给定的正…

2024年美国大学生数学建模思路 - 复盘:人力资源安排的最优化模型

文章目录 0 赛题思路1 描述2 问题概括3 建模过程3.1 边界说明3.2 符号约定3.3 分析3.4 模型建立3.5 模型求解 4 模型评价与推广5 实现代码 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 描述 …

[前车之鉴] SpringBoot原生使用Hikari数据连接池升级到动态多数据源的深坑解决方案 RocketMQ吞掉异常问题排查

文章目录 背景说明蒙蔽双眼口说无凭修补引发的新问题解决配置问题 本地监控佐证万法归元 背景说明 当前业务场景我们使用原生SpringBoot整合Hikari数据源连接池提供服务&#xff0c;但是近期业务迭代需要使用动态多数据源&#xff0c;很自然想到dynamic-source&#xff0c;结果…

Python教程37:使用turtle画一个戴帽子的皮卡丘

---------------turtle源码集合--------------- Python教程36&#xff1a;海龟画图turtle写春联 Python源码35&#xff1a;海龟画图turtle画中国结 Python源码31&#xff1a;海龟画图turtle画七道彩虹 Python源码30&#xff1a;海龟画图turtle画紫色的小熊 Python源码29&a…

linux 系统安全及应用

一、账号安全基本措施 1.系统账号清理 1.将用户设置为无法登录 /sbin/nologin shell——/sbin/nologin却比较特殊&#xff0c;所谓“无法登陆”指的仅是这个用户无法使用bash或其他shell来登陆系统而已&#xff0c;并不是说这个账号就无法使用系统资源。举例来说&#xff0c;…