Pytorch--Convolution Layers

文章目录

    • 1.nn.Conv1d
    • 2.torch.nn.Conv2d()
    • 3.torch.nn.ConvTranspose1d()
    • 3.torch.nn.ConvTranspose2d()


1.nn.Conv1d

torch.nn.Conv1d() 是 PyTorch 中用于定义一维卷积层的类。一维卷积层常用于处理时间序列数据或具有一维结构的数据。
在这里插入图片描述

构造函数 torch.nn.Conv1d() 的语法如下:

torch.nn.Conv1d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True)
"""
参数说明:
in_channels:输入的通道数,即输入的特征图的深度。
out_channels:输出的通道数,即卷积核的数量,也是输出的特征图的深度。
kernel_size:卷积核的大小,可以是一个整数或一个元组/列表。
stride:卷积核的步幅大小,默认为 1。
padding:在输入的两侧添加填充的大小,默认为 0。
dilation:卷积核元素之间的间距,默认为 1。
groups:将输入和输出连接的组数,默认为 1。
bias:是否在卷积中使用偏置,默认为 True。
"""

一维卷积层的输入形状为 (batch_size, in_channels, input_length),其中 batch_size 是批次大小,input_length 是输入序列的长度。输出形状为 (batch_size, out_channels, output_length),其中 output_length 是输出序列的长度,由输入序列长度、卷积核大小、填充和步幅等参数决定。

import torch
import torch.nn as nn

# 创建一个一维卷积层
conv_layer = nn.Conv1d(in_channels=3, out_channels=10, kernel_size=3, stride=1, padding=1)

# 输入数据
input_data = torch.randn(32, 3, 100)  # 输入数据形状为 (batch_size, in_channels, input_length)

# 前向传播
output = conv_layer(input_data)

print("输出形状:", output.shape)  # 输出形状为 (32, 10, 100)

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

2.torch.nn.Conv2d()

torch.nn.Conv2d() 是 PyTorch 中用于定义二维卷积层的类。二维卷积层在处理图像数据或具有二维结构的数据时非常常用。
在这里插入图片描述

torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True)
"""
参数说明:
in_channels:输入的通道数,即输入特征图的深度。
out_channels:输出的通道数,即卷积核的数量,也是输出特征图的深度。
kernel_size:卷积核的大小,可以是一个整数或一个元组/列表。
stride:卷积核的步幅大小,默认为 1。
padding:在输入的两侧添加填充的大小,默认为 0。
dilation:卷积核元素之间的间距,默认为 1。
groups:将输入和输出连接的组数,默认为 1。
bias:是否在卷积中使用偏置项,默认为 True。
"""

二维卷积层的输入形状为 (batch_size, in_channels, height, width),其中 batch_size 是批次大小,height 和 width 分别是输入图像的高度和宽度。输出形状为 (batch_size, out_channels, output_height, output_width),其中 output_height 和 output_width 是输出特征图的高度和宽度,取决于输入图像的大小、卷积核大小、填充和步幅等参数。

import torch
import torch.nn as nn

# 创建一个二维卷积层
conv_layer = nn.Conv2d(in_channels=3, out_channels=10, kernel_size=3, stride=1, padding=1)

# 输入数据
input_data = torch.randn(32, 3, 64, 64)  # 输入数据形状为 (batch_size, in_channels, height, width)

# 前向传播
output = conv_layer(input_data)

print("输出形状:", output.shape)  # 输出形状为 (32, 10, 64, 64)

输出形状: torch.Size([32, 10, 64, 64])

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

3.torch.nn.ConvTranspose1d()

一维转置卷积层可以用于将特征图的尺寸扩大,通常用于上采样操作。转置卷积的计算方式与普通卷积相反,可以将较小的特征图映射到较大的输出特征图。因此,转置卷积层通常用于生成更高分辨率的特征图。

torch.nn.ConvTranspose1d(in_channels, out_channels, kernel_size, stride=1, padding=0, output_padding=0, groups=1, bias=True, dilation=1)
"""
参数说明:

in_channels:输入的通道数。
out_channels:输出的通道数。
kernel_size:卷积核的大小。
stride:步幅大小,默认为 1。
padding:输入的零填充大小,默认为 0。
output_padding:输出的零填充大小,默认为 0。
groups:输入和输出的通道之间的连接数,默认为 1。
bias:是否使用偏置参数,默认为 True。
dilation:卷积核的扩张大小,默认为 1。
"""
import torch.nn as nn

# 定义一维转置卷积层
conv_transpose = nn.ConvTranspose1d(in_channels=3, out_channels=5, kernel_size=3, stride=2, padding=1)

# 创建随机输入数据
input = torch.randn(1, 3, 10)  # 输入大小为 (batch_size, in_channels, input_length)

# 应用转置卷积层
output = conv_transpose(input)

print("Output shape:", output.shape)
Output shape: torch.Size([1, 5, 19])

3.torch.nn.ConvTranspose2d()

torch.nn.ConvTranspose2d 是 PyTorch 中用于定义二维转置卷积层的类。二维转置卷积层也称为反卷积层或上采样层,用于将输入特征图的尺寸扩大。

torch.nn.ConvTranspose2d(in_channels, out_channels, kernel_size, stride=1, padding=0, output_padding=0, groups=1, bias=True, dilation=1)
"""
参数说明:

in_channels:输入的通道数。对于输入的二维特征图,通道数就是特征图的深度。
out_channels:输出的通道数。表示转置卷积层中卷积核的数量,也是输出特征图的深度。
kernel_size:卷积核的大小。可以是一个整数,表示正方形卷积核的边长,或者是一个元组 (h, w),表示卷积核的高度和宽度。
stride:步幅大小。可以是一个整数,表示在输入特征图上水平和垂直滑动卷积核的步幅,或者是一个元组 (h, w),表示水平和垂直方向的步幅。
padding:输入的零填充大小。控制输入特征图四周添加零填充的数量,默认为 0。
output_padding:输出的零填充大小。控制输出特征图四周添加零填充的数量,默认为 0。
groups:输入和输出的通道之间的连接数。默认为 1,表示每个输入通道都与输出通道相连。
bias:是否使用偏置参数。控制是否在卷积计算中使用偏置,默认为 True。
dilation:卷积核的扩张大小。可以是一个整数,表示卷积核中的元素之间的间隔,或者是一个元组 (h, w),表示水平和垂直方向的扩张大小。
"""
import torch
import torch.nn as nn

# 定义二维转置卷积层
conv_transpose = nn.ConvTranspose2d(in_channels=3, out_channels=5, kernel_size=3, stride=2, padding=1)

# 创建随机输入数据
input = torch.randn(1, 3, 10, 10)  # 输入大小为 (batch_size, in_channels, height, width)

# 应用转置卷积层
output = conv_transpose(input)

print("Output shape:", output.shape)
Output shape: torch.Size([1, 5, 19, 19])

公式

H_out=(H_in−1)×stride[0]2×padding[0]+dilation[0]×(kernel_size[0]1)+
output_padding[0]+1

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【运维自动化-配置平台】如何使用云资源同步功能(腾讯云为例)

云资源同步是通过apikey去单向同步云上的主机资源和云区域信息,目前支持腾讯云和亚马逊云。主要特性 1、蓝鲸配置平台周期性的单向只读同步云主机和vpc(对应蓝鲸云区域)信息,第一次全量,后面增量 2、默认同步到主机池…

kotlin 中的数字

以下均来自官方文档: 一、整数类型 1、kotlin中内置的整数类型,有四种不同大小的类型: 类型存储大小(比特数)最小值最大值Byte8-128127Short16-3276832767Int32-2,147,483,648 (-231)2,147,483,647 (231 - 1)Long64…

图片导入AutoCAD建立草图—CAD图像导入插件

插件介绍 CAD图像导入插件可将PNG,JPG等格式图片导入到AutoCAD软件内建立图像边缘的二维线条模型。插件可以提取图像黑色或白色区域的边界,并可绘制原状边界或平滑边界两种样式。 模型说明 边界提取,黑色或白色边界的提取根据原图类型选择…

c#调用c++dll方法

添加dll文件到debug目录,c#生成的exe的相同目录 就可以直接使用了,放在构造函数里面测试

排序的时间复杂度、空间复杂度和稳定性等的比较

时间复杂度和空间复杂度我们比较熟悉,重点来看一下稳定性。 稳定性是指假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,a[i] a[j] &…

Golang 百题(实战快速掌握语法)_1

整形转字符串类型 实验介绍 本实验将展示三种方法来实现整形类型转字符串类型。 知识点 strconvfmt Itoa 函数 代码实例 Go 语言中 strconv 包的 itoa 函数输入一个 int 类型,返回转换后的字符串。下面是一个例子。 package mainimport ("fmt"&qu…

跟TED演讲学英文:Toward a new understanding of mental illness by Thomas Insel

Toward a new understanding of mental illness Link: https://www.ted.com/talks/thomas_insel_toward_a_new_understanding_of_mental_illness Speaker: Thomas Insel Date: January 2013 文章目录 Toward a new understanding of mental illnessIntroductionVocabularySum…

【C语言】联合(共用体)

目录 一、什么是联合体 二、联合类型的声明 三、联合变量的创建 四、联合的特点 五、联合体大小的计算 六、联合的应用(判断大小端) 七、联合体的优缺点 7.1 优点 7.2 缺点 一、什么是联合体 联合也是一种特殊的自定义类型。由多个不同类型的数…

测长仪的发展历程!

测长仪的发展历程可以大致分为以下几个阶段: 早期发展: 最早的测量工具主要是一些机械式测量工具,如角尺、卡钳等。 16世纪,在火炮制造中已开始使用光滑量规。 1772年和1805年,英国的J.瓦特和H.莫兹利等先后制造出利用…

Win快速删除node_modules

在Windows系统上删除 node_modules 文件夹通常是一个缓慢且耗时的过程。这主要是由于几个关键因素导致的: 主要原因 文件数量多且嵌套深: node_modules 文件夹通常包含成千上万的子文件夹和文件。由于其结构复杂,文件和文件夹往往嵌套得非常…

XXL-JOB分布式任务调度快速入门

文章目录 概念快速启动XXL-JOB调度初始化执行器项目配置执行器新增GLUE模式(Java)的任务新增BEAN模式(类形式)的任务BEAN模式(方法形式)的任务参考来源 概念 XXL-JOB是一个开源的分布式任务调度平台,它是一个轻量级、…

使用B树实现员工(人事)管理系统

1. 前言 使用B树来表示人事管理系统,其中每个节点代表一个人员,树的根节点为董事长,每个节点可以有多个子节点,表示下属。每一层代表一个等级分布。 addPerson: 添加人员功能通过查找指定上司节点,然后将新的人员作…

程序员/码农创业有多少种可能?

程序员创业,无疑是当下科技浪潮中的一股强大力量。凭借扎实的技术功底和敏锐的市场洞察力,在创业道路上展现出了无限的活力和创造力。那么,程序员创业究竟有哪些事情可以做呢?可以从技术产品的研发入手。 可以利用自己的专业知识…

分析GIS在疾病传播模型和公共卫生决策中的作用

在这个全球化日益加深的时代,疾病的跨国界传播成为全球公共卫生面临的重大挑战。地理信息科学(GIS)作为一门集成了空间数据采集、处理、分析及可视化的技术体系,在公共健康领域展现出其不可替代的价值。本文旨在深入探讨GIS如何助…

电动两轮车——电源方案

随着城镇化的发展人们的活动半径不断变宽,短交通出行方式仍能覆盖主要的范围。从主要国家核心地区的出行数据看平均通勤半径不高于15km,摩托车、电动两轮车等两轮出行方式能更好匹配日常短交通出行需求。 应用框图 通常,电动两轮车由三部分…

3D gaussian-splatting项目环境配置记录

1.前景 项目论文:https://arxiv.org/abs/2308.04079 GitHub项目下载地址:https://github.com/graphdeco-inria/gaussian-splatting git clone时里面的子模块小项目会git不到,需要单独github下来,放入相应文件夹。 sibr_viewer…

C# WinForm —— 33 ContextMenuStrip介绍

1. 简介 右键某个控件/窗体时,弹出来的菜单,比如VS中右键窗体,弹出来的这个菜单: 和MenuStrip类似,ContextMenuStrip主菜单下面可以有子菜单,子菜单下面可以有下一级子菜单 2. 属性 和MenuStrip一样 …

第6章 应用层

考纲内容 (一)网络应用模型 客户/服务器模型;P2P模型 (二)域名系统(DNS) 层次域名空间;域名服务器;域名解析过程 (三)文件传输协议(FTP) …

升级和维护老旧LabVIEW程序

在升级老旧LabVIEW程序至64位环境时,需要解决兼容性、性能和稳定性等问题。本文从软件升级、硬件兼容性、程序优化、故障修复等多个角度详细分析。具体包括64位迁移注意事项、修复页面跳转崩溃、解决关闭程序后残留进程的问题,确保程序在新环境中的平稳运…

[Java基本语法] 从0到1带你精通Java基本语法

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏:🍕 Collection与数据结构 (92平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 🧀线程与…