卷积操作的不同类型

news2025/8/6 20:39:32

文章目录

  • 1. 一维卷积
  • 2. 二维卷积
  • 3. 三维卷积
  • 4. 扩张卷积
  • 5. 空洞卷积
  • 6. 分组卷积

  一般而言,一维卷积用于文本数据;二维卷积用于图像数据,对宽度和高度都进行卷积;三维卷积用于视频及3D图像处理领域,对立方体的三个面进行卷积。

1. 一维卷积

  对一个词向量做一维卷积

上图输入词向量的维度为 8,卷积核的维度为 5,输出长度为 8−5+1=4。PyTorc使用torch.nn.Conv1d(in_channels, out_channels, kernel_size, stride, padding, dilation, groups, bias=True)实现一维卷积操作。

import torch
import torch.nn as nn

a = torch.randn(1,16,8)  # input:(样本数, 通道数, 词向量维度)
conv = nn.Conv1d(16, 1, 5)  # Conv1d:(in_channels, out_channels, kernel_size)
c = conv(a)

print('a:', a.size())  # torch.Size([1, 16, 8])
print('c:', c.size())  # torch.Size([1, 1, 4])

2. 二维卷积

  二维卷积是最常见、用途最广泛的卷积。下图展示了二维卷积操作示意图

图中输入为 RGB 三通道的图片,图片大小为6*6。卷积核大小为3*3,卷积核数量为1。输出特征图大小为4*4,输出特征图数量为1。PyTorc使用torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride, padding, dilation, groups, bias=True)

import torch
import torch.nn as nn

a = torch.Tensor([[[[1,2,3,4],
                [5,6,7,8],
                [9,10,11,12],
                [13,14,15,16]]],
               [[[1,2,3,4],
                [5,6,7,8],
                [9,10,11,12],
                [13,14,15,16]]]])
print('a:',a.size())  # torch.Size([2, 1, 4, 4])

conv = nn.Conv2d(1,6,2)  # Conv2d:(in_channels, out_channels, kernel_size)
c = conv(a)
print('c:',c.size())  # torch.Size([2, 6, 3, 3])

3. 三维卷积

  三维卷积示意图如下,一个3*3*3的卷积核在立方体上进行卷积,得到输出。

在二维卷积中,作用在不同通道上的卷积核参数是不同的。而在三维卷积中,则共用一个 3D 的卷积核,3D 卷积核的参数在整个图像上权重共享。三维卷积核比二维卷积核多了一个depth维度。这个深度可能是视频上的连续帧,也可能是立体图像中的不同切片。PyTorc使用torch.nn.Conv3d(in_channels, out_channels, kernel_size, stride, padding, dilation, groups, bias=True)

import torch
import torch.nn as nn

input = torch.randn(32, 3, 10, 224, 224)  # input:(N, C, D, H, W)

# 每一维度相同参数配置
conv1 = nn.Conv3d(3, 64, kernel_size=3, stride=2, padding=1)
output = conv1(net_input)
print(output.shape)  # shape:[32, 64, 5, 112, 112]

# 每一维度不同参数配置
conv2 = nn.Conv3d(3, 64, (2, 3, 3), stride=(1, 2, 2), padding=(0, 1, 1))
net_output = conv2(net_input)
print(net_output.shape) # shape:[32, 64, 9, 112, 112]

4. 扩张卷积

5. 空洞卷积

6. 分组卷积

【参考】

  1. 神经网络之多维卷积的那些事 (一维、二维、三维);
  2. 3D 卷积神经网络详解;
  3. [pytorch][基础模块] torch.nn.Conv3D 使用样例与说明;
  4. 官方文档:TORCH.NN;

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

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

相关文章

CS5269TypeC转HDMI2.0+VGA带PD100W快充拓展坞方案芯片完整设计资料(原理图+PCB文件)

CS5269TypeC转HDMI2.0VGA带PD100W快充方案芯片原理图: 用于US Type-C或DP1.4连接到HDMI2.0转换器。CS5269集成了DP1.4HDMI2.0的输出端和VGA输出接口。另外,两个CC控制器包括CC通信,以实现DP Alt模式和功率传输功能,一个用于上游类…

SD-WAN NFV uCPE VNF

NFV(network function virtulization) NFV(network function virtulization,网络功能虚拟化)是指一种操作框架,目的是为了将部署在COTS硬件上的、在虚拟基础架构中的VNF软件设备编排和自动化起来,然后进行…

精耕丨“银发族”与“熬夜党”都在养生,大健康品牌怎样精耕消费者需求?

“被疫情偷走的这三年”里,健康成为所有人不得不面对的生活命题。 丁香医生《2022国民健康洞察报告》显示,2021年人们平均存在4.8个健康困扰,算得上“人均亚健康”,其中情绪、身材、皮肤焦虑位列TOP3。 人们对稳住健康的追求也一…

5G无线技术基础自学系列 | 物理共享信道分配

素材来源:《5G无线网络优化实践》 一边学习一边整理内容,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 在LTE协议中,DCI的位置和对应…

第一章《初学者问题大集合》第8节:Java程序初步释疑

当成功运行了第一个Java程序,很多读者都对之前的各项操作以及所写的这行代码有一些不清楚的地方,本节就来解答一下这些问题。其实,初学者的大部分疑问都集中体现在图1-41中。 图1-41 源文件名与类名称 1.类是个什么东西? 前文曾经让各位读者在写代码之前先创建一个“类”…

day065:IO流、字节流、字节流写数据

目录 一、IO流 1.IO流的目的 2.IO的表示 二、IO流的分类 1.按流向分 2.按数据类型分 三、字节流 1.字节流写数据 2.字节流的注意事项 3.字节流写数据的三种方式 4.字节流写数据的两个问题 (1)字节流写数据如何换行? (…

腾讯云服务器部署vue前端项目(Ubuntu+vue+nginx+nodejs+npm)

一、安装nodejs和npm sudo apt-get nodejs sudo apt-get npm 但是在安装npm后,输入npm --version时,会报错 此时,需要升级nodejs的版本,执行下面的两条命令 wget -qO- https://deb.nodesource.com/setup_16.x | sudo -E bash - …

兄弟兄弟,在git中的使用.gitignore忽略不想要提交的文件,了解一下呗

1. .gitignore的作用 在实际的工程项目中,除了项目本身的代码文件、配置文件外,还有一些文件或目录并不需要纳入版本管理中,如idea工具会在工程根目录生成一个.idea的目录、工程编译后生的target等。因此在提交代码文件的时候需要自动把这些目…

医学图像处理-安装nibabel包命令

医学图像处理-安装nibabel包命令问题与解决方案问题与解决方案 直接使用 pip install nibabel 出现如下报错: 尝试使用conda 命令安装,conda官网查命令: conda install -c conda-forge nibabel conda install -c conda-forge/label/gcc7 ni…

编译 - Make 命令教程 - 学习/实践

1.应用场景 主要用于学习和使用make命令进行软件编译安装。 2.学习/操作 1.文档阅读 Make 命令教程 - 阮一峰的网络日志 Make- GNU Project - Free Software Foundation 2.整理输出 2.1 什么是make命令? Make 是最常用的构建工具,诞生于1977年&#xff…

python正则表达式实战——获取图片

我最近自学了一段时间爬虫,感觉挺有意思的,逛网页的时候,无意间发现了一个壁纸网站,我就萌生了一个想法,看能不能下下来,说干就干。 前言 目标网站:首先我们要知道我们的目标位置。 编程语言…

Java Spring-AOP动态代理-JDK和CGlib实现

Java Spring-AOP CGlib和JDK动态代理实现 编码是为了解决生活中的问题,譬如现在我想用筷子吃饭的时候看手机,那么首先会有两个对象。 现在如果是面向对象编程思想,我们会new一个筷子对象,new一个手机对象,然后先调用…

Linux 命令 —— feh

Linux 命令 —— feh1. 介绍2. 模式-重要!2.1 模式对比3. 参数说明3. 常见使用方式1. 介绍 本教程基于版本 feh 2.23.2. 命令:feh feh是一个基于模式的图像查看器。虽然它也可以由(图形化的)文件管理器启动以查看图像,但它特别针对需要快速…

函数传址,但无法改变xy数据问题

目录 问题 正确代码 两者区别 开启调试 设置监视的变量 逐过程调试 在自定义函数中调试 跳出自定义函数 对正确的代码进行调试 进入自定义函数 跳出自定义函数 为什么说编译器有问题 问题 今天遇到一个很有意思的问题分享一下。他写了一个交换数据的函数&#xf…

看一眼就会的k8s权限管理手把手教学

Kubernetes Kubernetes使用RBAC授权Kubernetes一、API概述1.Role 和 ClusterRole1.RoleBinding和ClusterRoleBinding二、使用步骤(Role及RoleBinding为例)1、创建user用户证书2、创建集群、用户1、创建集群配置文件2、创建基于集群和新用户的上下文3、给…

【java进阶02:抽象类和接口】类与类之间的关系 抽象类与接口的区别

目录 抽象类 接口 抽象类 什么是抽象类 /*类————>对象 :实例化 对象————>类 :抽象抽象类:1、什么是抽象类?类和类之间具有共同特征,将这些共同特征提取出来,形成的就是抽象类类本身是不存在的&…

python 实现MAC泛洪与ARP欺骗

声明:本文章的一切内容仅用于交流与学习 目录 一、Python scapy 二、MAC泛洪 三、ARP欺骗 一、Python scapy scapy提供了构造、发送、接收、分析数据包的功能 scapy的内容很多这里只说明要用到的内容 RandMAC:自动生成一个随机的MAC地址 packet Et…

【SpringBoot】idea创建SpringBoot项目及注解配置相关应用

文章目录SpringBoot:一、简言二、SpringBoot作用三、核心功能四、创建springBoot项目1、新建SpringBoot(maven基础下)2、next---选版本导jar包3、创建后的pom.xml4、SpringBoot启动类六、测试项目1.项目构建:2.数据源注入dao层---…

【爬虫系列】Python爬虫实战--招聘网站的职位信息爬取

一、分析 1. 需求分析 从网上找工作,大家一般都会通过各种招聘网站去检索相关信息,今天利用爬虫采集招聘网站的职位信息,比如岗位名称,岗位要求,薪资,公司名称,公司规模,公司位置&…

状态机总结(简洁)

一、概念 状态机简写为 FSM(Finite State Machine),也称为同步有限状态机,我们一般简称为状态机,之所以说“同步”是因为状态机中所有的状态跳转都是在时钟的作用下进行的,而“有限”则是说状态的个数是有…