【PyTorch】Pytorch中torch.nn.Conv1d函数详解

1. 函数定义

torch.nn.Conv1d 是 PyTorch 中用于一维卷积操作的类。定义如下:
官方文档:https://pytorch.ac.cn/docs/stable/generated/torch.nn.Conv1d.html#torch.nn.Conv1d

torch.nn.Conv1d(in_channels, out_channels, kernel_size, stride=1,padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros',device=None, dtype=None
)

2. 计算原理

对由多个输入平面组成的输入信号应用一维卷积。在最简单的情况下,输入大小为 ( N , C in , L ) ( N, C_{\text{in}}, L ) (N,Cin,L)且输出大小为 ( N , C out , L out ) (N, C_{\text{out}}, L_{\text{out}}) (N,Cout,Lout) 的层的输出值可以精确地描述为:

out ( N i , C out j ) = bias ( C out j ) + ∑ k = 0 C in − 1 weight ( C out j , k ) ⋆ input ( N i , k ) \text{out}(N_i, C_{\text{out}_j}) = \text{bias}(C_{\text{out}_j}) + \sum_{k=0}^{C_{\text{in}} - 1} \text{weight}(C_{\text{out}_j}, k) \star \text{input}(N_i, k) out(Ni,Coutj)=bias(Coutj)+k=0Cin1weight(Coutj,k)input(Ni,k)

其中:
   C out j C_{\text{out}_j} Coutj: 表示输出通道(output channel)的索引 j j j,它对应的是卷积操作中的第 j j j个通道输出。
   ⋆ ⋆ : 表示卷积
   N N N:表示批次大小
   C C C:表示通道数量
   L L L:表示信号序列的长度

总结:

卷积层的输出是通过对输入张量与卷积核进行卷积计算,得到每个输出通道上的特征图。每个输出通道 C out j C_{\text{out}_j} Coutj对应一个卷积核,它与输入的每个通道进行卷积,并将这些结果加权求和后加上偏置,最终形成输出张量的每个值。

3. 参数说明

in_channels: 输入信号的通道数。

out_channels: 输出信号的通道数。

kernel_size: 卷积核的大小,可以是单个整数或整数元组。

stride: 步幅,控制卷积核在输入上移动的步长,默认为 1。

padding: 填充,控制应用于输入的填充量。它可以是字符串{‘valid’, ‘same’},也可以是元组,表示在两侧应用的隐式填充量。

dilation: 空洞卷积的膨胀系数,默认为 1。

groups: 控制输入和输出之间的连接方式,默认为 1,意味着每个输入通道都与每个输出通道相连。in_channels 和 out_channels 都必须能被 groups 整除

bias: 是否使用偏置项,默认为 True。

padding_mode: 填充模式,支持zeros’、‘reflect’、‘replicate’ 或 ‘circular’。默认值:‘zeros’

在这里插入图片描述

4. 关于groups参数详解:

在卷积神经网络中,groups 参数控制输入通道和输出通道之间的连接方式。它在分组卷积(Grouped Convolution)中尤为重要。以下是具体的解释:

1. 当 groups=1 时:
   说明: 所有输入通道与所有输出通道进行卷积。也就是说,每个输入通道都与每个输出通道对应的卷积核进行卷积操作。这是标准的卷积操作,其中每个输入通道与所有输出通道之间都有连接。
   举例: 如果 in_channels=4 和 out_channels=6,并且 groups=1,则每个输入通道都会与卷积核中的每个输出通道进行卷积操作,最终得到一个包含 6 个输出通道的输出

2. 当 groups=2 时:
   说明: 卷积操作被分成两个组,每个组独立地处理一部分输入通道并产生一部分输出通道。具体来说,每个组的输入通道数量是 in_channels / groups,输出通道数量是 out_channels / groups。
   举例: 如果 in_channels=4 和 out_channels=6,并且 groups=2,那么就会有两个卷积层,每个卷积层分别处理两个输入通道并生成三个输出通道。这两个卷积操作的结果会被拼接起来,最终得到 6 个输出通道。

   第一个卷积层:输入通道 1 和 2,输出通道 1, 2, 3
   第二个卷积层:输入通道 3 和 4,输出通道 4, 5, 6
   输出:包含 6 个通道的输出

3. 当 groups = in_channels 时:
   说明: 每个输入通道与其对应的卷积核集进行卷积,也就是说,每个输入通道都有一个独立的卷积操作,只与其自身的卷积核进行卷积。此时每个输入通道只会生成一个输出通道。
   举例: 如果 in_channels=4 和 out_channels=4,并且 groups=4,每个输入通道将与其自己的卷积核进行卷积操作,最终得到一个 4 通道的输出:
   输入通道 1 使用自己的卷积核得到输出通道 1
   输入通道 2 使用自己的卷积核得到输出通道 2
   输入通道 3 使用自己的卷积核得到输出通道 3
   输入通道 4 使用自己的卷积核得到输出通道 4

注意:
groups == in_channelsout_channels == K * in_channels(其中 K 是正整数)时,此操作也称为深度卷积
padding='valid' 等同于不填充。 padding='same' 对输入进行填充,以便输出具有与输入相同的形状。但是,此模式不支持除 1 之外的任何步长值。

5. 使用示例

自定义一个只有Conv1d卷积层的网络:

import torch
from torch import nnclass Model(nn.Module):def __init__(self, in_channels, out_channels, kernal_size,*args, **kwargs):super().__init__(*args, **kwargs)self.conv1d = nn.Conv1d(in_channels, out_channels, kernal_size, padding=1)def forward(self, x):out = self.conv1d(x)return out

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

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

相关文章

绿光一字线激光模组:工业制造与科技创新的得力助手

在现代工业制造和科技创新领域,绿光一字线激光模组以其独特的性能和广泛的应用前景,成为了不可或缺的关键设备。这种激光模组能够发射出一条明亮且精确的绿色激光线,具有高精度、高稳定性和长寿命的特点,为各种精密加工和测量需求…

【Linux】【Shell】Shell 基础与变量

Shell 基础 Shell 基础查看可用的 Shell判断当前 Shell 类型 变量环境变量查看环境变量临时环境变量永久环境变量PATH 变量 自定义变量特殊赋值(双引号、单引号、反撇号) 预定义变量bashrc Shell 基础 Shell 是一个用 C 语言编写的程序,相当于是一个翻译&#xff0c…

【SQL50】day 2

目录 1.每位经理的下属员工数量 2.员工的直属部门 3.判断三角形 4.上级经理已离职的公司员工 5.换座位 6.电影评分 7.修复表中的名字 8.患某种疾病的患者 9.删除重复的电子邮箱 1.每位经理的下属员工数量 # Write your MySQL query statement below #e1是经理,…

FIFO和LRU算法实现操作系统中主存管理

FIFO&#xff0c;用数组实现 1和2都是使用nextReplace实现新页面位置的更新 1、不精确时间&#xff1a;用ctime输出运行时间都是0.00秒 #include <iostream> #include <iomanip> #include<ctime>//用于计算时间 using namespace std;// 页访问顺序 int pa…

ssm161基于web的资源共享平台的共享与开发+jsp(论文+源码)_kaic

毕 业 设 计&#xff08;论 文&#xff09; 题目&#xff1a;资源共享平台设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本资源共享平台就是在…

LeetCode 力扣 热题 100道(六)合并两个有序链表(C++)

合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4]示例 2&#xff1a; 输入&#xff1a;l1 [], l2 [] 输出&#xff1a;[]示…

ubuntu显示管理器_显示导航栏

ubuntu文件管理器_显示导航栏 一、原始状态&#xff1a; 二、显示导航栏状态&#xff1a; 三、原始状态--->导航栏状态: 1、打开dconf编辑器&#xff0c;直接在搜索栏搜索 dconf-editor ------如果没有安装&#xff0c;直接按流程安装即可。 2、进入目录&#xff1a;org …

高集成的MCU方案已成电机应用趋势?

【哔哥哔特导读】高集成化的芯片成为当下MCU领域研发和市场布局的重点&#xff0c;但是在实际应用中仍然面临散热等痛点问题&#xff0c;MCU厂商是如何解决和优化这些痛点&#xff1f; 随着全球工业自动化、智能制造和绿色发展的不断推进&#xff0c;中国电机行业正站在新一轮…

购物街项目TabBar的封装

1.TabBar介绍 在购物街项目中 不论页面如何滚动 始终存在一个TabBar固定在该项目的底部 他在该项目中 扮演者选项卡栏的角色 内部存在若干选项 而选项中 固定存在两部分(图片文本) 其中主要涉及到TabBar/TabBarItem这些和业务无关的共享组件(建议存放于components/common中)、…

优化表单交互:在 el-select 组件中嵌入表格显示选项

介绍了一种通过 el-select 插槽实现表格样式数据展示的方案&#xff0c;可更直观地辅助用户选择。支持列配置、行数据绑定及自定义搜索&#xff0c;简洁高效&#xff0c;适用于复杂选择场景。完整代码见GitHub 仓库。 背景 在进行业务开发选择订单时&#xff0c;如果单纯的根…

最新Kali安装详细版教程(附安装包,傻瓜式安装教程)

本文主要详细介绍 kali 的安装过程&#xff0c;以及安装完成后的基本设置&#xff0c;比如安装增强工具&#xff0c;安装中文输入法以及更新升级等操作。 文章目录 实验环境准备工作步骤说明安装虚拟机安装 Kali安装增强工具安装中文输入法更新升级 实验环境 VMware &#x…

细说STM32单片机DMA中断收发RTC实时时间并改善其鲁棒性的方法

目录 一、DMA基础知识 1、DMA简介 (1)DMA控制器 (2)DMA流 (3)DMA请求 (4)仲裁器 (5)DMA传输属性 2、源地址和目标地址 3、DMA传输模式 4、传输数据量的大小 5、数据宽度 6、地址指针递增 7、DMA工作模式 8、DMA流的优先级别 9、FIFO或直接模式 10、单次传输或突…

H.265流媒体播放器EasyPlayer.js H5流媒体播放器如何验证视频播放是否走硬解

随着技术的不断进步和5G网络的推广&#xff0c;中国流媒体播放器行业市场规模以及未来发展趋势都将持续保持稳定的增长&#xff0c;并将在未来几年迎来新的发展机遇。流媒体播放器将继续作为连接内容创作者和观众的重要桥梁&#xff0c;推动数字媒体产业的创新和发展。 EasyPla…

仿Mybatis代码生成.获取索引信息

获取索引信息 1.核心思路 通过以下sql语句&#xff0c;例如对于user表 show index from user 执行结果如下: 2.实现 连接数据库后执行sql语句&#xff0c;我们重点关注下图标注的三个熟悉 代码如下: PreparedStatement ps null;ResultSet fieldResult null;List<Fiel…

【AI大模型】大型语言模型LLM基础概览:技术原理、发展历程与未来展望

目录 &#x1f354; 大语言模型 (LLM) 背景 &#x1f354; 语言模型 (Language Model, LM) 2.1 基于规则和统计的语言模型&#xff08;N-gram&#xff09; 2.2 神经网络语言模型 2.3 基于Transformer的预训练语言模型 2.4 大语言模型 &#x1f354; 语言模型的评估指标 …

详解八大排序(一)------(插入排序,选择排序,冒泡排序,希尔排序)

文章目录 前言1.插入排序&#xff08;InsertSort&#xff09;1.1 核心思路1.2 实现代码 2.选择排序&#xff08;SelectSort&#xff09;2.1 核心思路2.2 实现代码 3.冒泡排序&#xff08;BubbleSort&#xff09;3.1 核心思路3.2 实现代码 4.希尔排序&#xff08;ShellSort&…

如何在 Ubuntu 上使用 Docker 部署 LibreOffice Online

简介 LibreOffice Online&#xff08;也称为Collabora Online&#xff09;是一个开源的在线办公套件&#xff0c;它提供了与LibreOffice桌面版相似的功能&#xff0c;但完全在云端运行。这意味着用户可以通过浏览器访问和编辑文档&#xff0c;而无需在本地计算机上安装任何软件…

【人工智能】PyTorch、TensorFlow 和 Keras 全面解析与对比:深度学习框架的终极指南

文章目录 PyTorch 全面解析2.1 PyTorch 的发展历程2.2 PyTorch 的核心特点2.3 PyTorch 的应用场景 TensorFlow 全面解析3.1 TensorFlow 的发展历程3.2 TensorFlow 的核心特点3.3 TensorFlow 的应用场景 Keras 全面解析4.1 Keras 的发展历程4.2 Keras 的核心特点4.3 Keras 的应用…

macOS 无法安装第三方app,启用任何来源的方法

升级新版本 MacOS 后&#xff0c;安装下载的软件时&#xff0c;不能在 ”安全性与隐私” 中找不到 ”任何来源” 选项。 1. 允许展示任何来源 点击 启动器 (Launchpad) – 其他 (Other) – 终端 (Terminal)&#xff1a; 打开终端后&#xff0c;输入以下代码回车&#xff1a; …

Flutter:RotationTransition旋转动画

配置vsync&#xff0c;需要实现一下with SingleTickerProviderStateMixinclass _MyHomePageState extends State<MyHomePage> with SingleTickerProviderStateMixin{// 定义 AnimationController late AnimationController _controller;overridevoid initState() {super…