【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.rhkb.cn/news/475917.html

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

相关文章

[大数据]Trino

Trino安装部署-CSDN博客 Central Repository: io/trino/trino-server 下载地址: repo1.maven.org/maven2/io/trino/Central Repository: io/trino/trino-serverhttps://repo1.maven.org/maven2/io/trino/trino-server/ vim /etc/security/limits.conf * soft nofile 131072…

三种复制只有阅读权限的飞书网络文档的方法

大家都知道,飞书是一款功能强大的在线协作工具,可以帮助团队更高效地协作和沟通。越来越多的资料都在使用飞书文档,在使用飞书的过程中,发现很多文档没有复制权限,如果想要摘抄笔记,只能一个字一个字地敲出…

HTML5拖拽API学习 托拽排序和可托拽课程表

文章目录 前言拖拽API核心概念拖拽式使用流程例子注意事项综合例子🌰 可拖拽课程表拖拽排序 前言 前端拖拽功能让网页元素可以通过鼠标或触摸操作移动。HTML5 提供了标准的拖拽API,简化了拖放操作的实现。以下是拖拽API的基本使用指南: 拖拽…

缓冲区的奥秘:解析数据交错的魔法

目录 一、理解缓存区的好处 (一)直观性的理解 (二)缓存区的好处 二、经典案例分析体会 (一)文件读写流(File I/O Buffering) BufferedOutputStream 和 BufferedWriter 可以加快…

解决upload上传之后,再上传没有效果

解决upload上传之后,再上传没有效果 注释:这是第二次上传,两次网络请求都是第一次上传的,这次上传没有网络请求 原因:在我的代码里我限制了上传数量为1,然后上传成功后,上传列表没有清空&#…

【Linux】<共享内存应用>——模拟实现不同进程把hello字符对<共享内存文件对象>的放入和取出操作

前言 大家好吖,欢迎来到 YY 滴Linux系列 ,热烈欢迎! 本章主要内容面向接触过C Linux的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! YY的《C》专栏YY的《C11》专栏YY的…

Sigrity SPEED2000 TDR TDT Simulation模式如何进行时域阻抗仿真分析操作指导-差分信号

Sigrity SPEED2000 TDR TDT Simulation模式如何进行时域阻抗仿真分析操作指导-差分信号 Sigrity SPEED2000 TDR TDT Simulation模式如何进行时域阻抗仿真分析操作指导-单端信号详细介绍了单端信号如何进行TDR仿真分析,下面介绍如何对差分信号进行TDR分析,还是以下图为例进行分…

视频修复技术和实时在线处理

什么是视频修复? 视频修复技术的目标是填补视频中的缺失部分,使视频内容连贯合理。这项技术在对象移除、视频修复和视频补全等领域有着广泛的应用。传统方法通常需要处理整个视频,导致处理速度慢,难以满足实时处理的需求。 技术发…

golang调用webview,webview2,go-webview2

go version go1.20 windows/amd64 先要了解一些第三方库 1、webview/webview 它是一个跨平台的轻量级的webview库,面向的是C/C,使用它可以构建跨平台的GUI。webview就是浏览器内核,在不同操作系统上是不同的库,比如在windows上…

SpringBoot与MongoDB深度整合及应用案例

SpringBoot与MongoDB深度整合及应用案例 在当今快速发展的软件开发领域,NoSQL数据库因其灵活性和可扩展性而变得越来越流行。MongoDB,作为一款领先的NoSQL数据库,以其文档导向的存储模型和强大的查询能力脱颖而出。本文将为您提供一个全方位…

【工控】线扫相机小结 第四篇

背景 这一片主要是对第三篇继续补充。话说上一篇讲到了两种模式的切换&#xff0c;上一篇还遗留了一个Bug&#xff0c;在这一篇里进行订正&#xff01; 代码回顾 /// <summary>/// 其实就是打开触发/// </summary>void SetLineSacanWorkMode(){-----首先设置为帧…

ThingsBoard规则链节点:AWS SNS 节点详解

目录 引言 1. AWS SNS 节点简介 2. 节点配置 2.1 基本配置示例 3. 使用场景 3.1 设备报警 3.2 数据同步 3.3 用户通知 4. 实际项目中的应用 4.1 项目背景 4.2 项目需求 4.3 实现步骤 5. 总结 引言 ThingsBoard 是一个开源的物联网平台&#xff0c;提供了设备管理、…

VMAuthdService服务启动不了~

问题原因&#xff0c;我的VMware Workstation Pro安装在了硬盘上&#xff0c;原先硬盘分配的磁盘是F盘&#xff0c;但是我现在插入电脑显示的是E盘。路径冲突了&#xff0c;所以找不到服务。我更改一下硬盘的磁盘名称就好使啦~ 怎么修改磁盘名称&#xff0c;我想把F盘改成E盘-…

小程序25- iconfont 字体图标的使用

项目中使用到图标&#xff0c;一般由公司设计进行设计&#xff0c;设计好后上传到阿里巴巴矢量图标库 日常开发过程中&#xff0c;也可以通过 iconfont 图标库下载使用自带的图标 补充&#xff1a;使用 iconfont 图标库报错&#xff1a;Failed to load font 操作步骤&#xff…

【操作系统】操作系统的特征

操作系统的七个基本特征 并发性&#xff08;Concurrence&#xff09; 并发性是指操作系统在同一时间间隔内执行和调度多个程序的能力&#xff0c;提高资源利用率和系统效率。尽管多个任务可能在同一时刻看似同时进行&#xff0c;但实际上&#xff0c;CPU在多个任务之间快速切…

C# 数据结构之【树】C#树

以二叉树为例进行演示。二叉树每个节点最多有两个子节点。 1. 新建二叉树节点模型 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace DataStructure {class TreeNode{public int Data { get;…

2024年中国无人机产业研究报告(附产业链图谱)

无人机是指以空气动力为升力来源、无人员搭载的空中飞行器&#xff0c;简称UAV。最初为军事应用而开发&#xff0c;后来被应用于个人消费、地理测绘、影视航拍等越来越多的领域&#xff0c;并在应急救援、通信中继、气象探测等新场景中发挥着重要作用。 近年来&#xff0c;国家…

深入理解Spring(二)

2、Spring应用 2.1、基于xml的Spring应用 2.1.1、SpringBean的配置详解 Spring开发中主要是对Bean的配置,Bean的常用配置一览如下: 1)Bean的基础配置 例如:配置UserDaoImpl由Spring容器负责管理 此时存储到Spring容器(singleObjects单例池)中的Bean的beanName是user…

趋势洞察|AI 能否带动裸金属 K8s 强势崛起?

随着容器技术的不断成熟&#xff0c;不少企业在开展私有化容器平台建设时&#xff0c;首要考虑的问题就是容器的部署环境——是采用虚拟机还是物理机运行容器&#xff1f;在往期“虚拟化 vs. 裸金属*”系列文章中&#xff0c;我们分别对比了容器部署在虚拟化平台和物理机上的架…

Python Matplotlib 数据可视化全面解析:选择它的七大理由与入门简介

Python Matplotlib数据可视化全面解析&#xff1a;选择它的七大理由与入门简介 本文介绍了Matplotlib这一强大而灵活的数据可视化工具&#xff0c;涵盖其基本概念、独特优势以及为何在众多Python绘图库中脱颖而出。Matplotlib具有广泛的社区支持、高度自定义能力、多样的绘图类…