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

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

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

相关文章

vector迭代器失效

1.迭代器失效的根本原因 迭代器就是指针,迭代器失效就是指针失效。 指针失效的有两种情况: 1)野指针 2)访问越界 2.举例阐述 这段代码已经报错了,我给大家调试一下。可以发现:vector的容量变大了&…

C语言之main函数的返回值(在linux中执行shell脚本并且获取返回值)

一:函数为什么要返回值 (1)函数 在设计的时候是设计了参数和返回值,参数是函数的输入,返回值是函数的输出 (2)因为函数需要对外输出数据(实际上是函数运行的一些结果值)…

springbot 界面美观的超市收银管理系统。

springbot 界面美观的超市收银管理系统。 功能:登录,用户管理,权限菜单管理,首页订单,收入,用户统计, 收银台,销售账单,库存管理,商品分类,供应…

30 岁的程序员,要有 “归零“ 心态

大家好,我是码农先森。 古话说的 “三十而立”,正是担重之时,却大部分人在职场中都处于不上不下的尴尬境地。已经没有刚毕业时那股子冲劲,被生活和工作磨平了棱角。 在技术思想方面,似乎已经触及到了天花板&#xff…

嵌入式系统中判断大小端的方法与实现

第一:大小端基本分析 程序判断计算机是大端的还是小端的,判断的思路是确定一个多字节的值(下面使用的是4字节的整数),将其写入内存(即赋值给一个变量),然后用指针取其首地址所对应的字节(即低地址的一个字节),判断该字…

shell循环以及实验

循环是一种重复执行的代码结构,只要满足循环的条件,会一直执行这个代码 循环条件:在一定范围之内,按照指定次数来执行循环。 循环体:在指定的次数内,执行的命令序列,只要条件满足,…

C#知识|模块化分层学习笔记

哈喽,你好,我是雷工! 01 基本分层 典型的两层结构:由UI层 数据访问层 实体类构成。 其中实体类不算一层,本质是一个数据载体。 02 模块化分层 模块概念:在.NET平台中,模块主要是指类库项目。…

Mac下载了docker,在终端使用docker命令时用不了

问题:在mac使用docker的时候,拉取docker镜像失败 原因:docker是需要用app使用的 ,所以在使用的时候必须打开这个桌面端软件才可以在终端上使用docker命令!!!

Spring系统学习 -Spring IOC 的XML管理Bean之P命名空间、实现引入MySQL外部链接属性文件

P命名空间 在Spring框架中&#xff0c;P命名空间是一种用于简化XML配置文件中属性注入的方式。通过引入P命名空间&#xff0c;可以使用更简洁的语法来设置bean的属性值&#xff0c;而无需显式地使用<property>子元素。这使得XML配置文件更加简洁和易于阅读。 要在Sprin…

shell条件测试和if语句

“C:\Users\Jessica\Desktop\6.12.assets\image-20240612094159578.png”# shell条件测试和if语句 一、条件测试 1、$? 返回码 判断命令或者脚本是否执行成功&#xff08;最近的一条&#xff09; 0 true 为真就是成功 成立 非0 false 失败或者异常 2、test命令 可以进行…

「OC」UI练习(二)——照片墙

「OC」UI练习——照片墙 文章目录 「OC」UI练习——照片墙UITapGestureRecognizer介绍照片墙实现 UITapGestureRecognizer介绍 UITapGestureRecognizer是UIKit框架中的一个手势识别器类&#xff0c;用于检测用户在视图上的轻击手势。它是UIGestureRecognizer的一个子类&#x…

ROS2读源码过程中涉及到的核心点梳理解读

流控 watchdog 过滤 如何把writer跟reader匹配 依赖topic&#xff1f;QOS? datashared 如何配置 安全 何时持久化 域隔离&#xff1f; 只有在同一个域内的通信实体才能通信&#xff0c;不同域内的实体间无法进行通信 架构设计细节、扩展性&#xff1f; 代码为什么难读…

源代码防泄密经验分享之安全上网篇

场景描述&#xff1a; 随着信息技术的发展&#xff0c;越来越多的新技术产品进入到政府、军事、科研等涉密单位。这些新技术产品在给工作人员带来便利的同时&#xff0c;也给信息安全保密工作带来了许多新的不容忽视的安全隐患&#xff0c;应引起高度重视。常规的内外网隔离手…

Vue29-自定义指令:函数式

一、定义 内置指令&#xff0c;指令是vue作者定的&#xff0c;背后的操作DOM的逻辑是也是vue作者写的。 自定义指令&#xff0c;指令名自定义&#xff0c;指令背后如何去操作DOM元素&#xff0c;也是自定义。 二、需求1&#xff1a;big指令 2-1、自定义指令directive 1、写法…

美摄科技匿名化处理解决方案,包含模糊、同色、马赛克、效果遮挡等各种形式

信息安全已成为企业发展中不可忽视的重要一环&#xff0c;随着信息安全法规的日益严格和公众对个人隐私保护意识的不断提高&#xff0c;企业如何在保障业务顺畅进行的同时&#xff0c;满足信息安全和隐私保护的要求&#xff0c;成为了亟待解决的问题。美摄科技凭借其强大的技术…

西门子学习笔记13 - mtqq库项目

这是我整合过后的mqtt库的下载地址 https://download.csdn.net/download/qq_61916672/89423266https://download.csdn.net/download/qq_61916672/89423266

如何开发一个直播APP:功能介绍与开发步骤详解

随着移动互联网的迅猛发展&#xff0c;直播APP已经成为人们生活中不可或缺的一部分。无论是娱乐、教育、商业还是其他领域&#xff0c;直播APP都以其独特的实时互动性和广泛的受众群体而备受欢迎。那么&#xff0c;如何开发一个直播APP呢&#xff1f;本文将详细介绍直播APP的功…

virtualbox扩展磁盘

使用virtualbox搭建虚拟机&#xff0c;如果磁盘不够用了&#xff0c;可以通过以下方式扩展。 扩容磁盘 分区扩展 查看磁盘情况 fdisk -l Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors Units sectors of 1 * 512 512 bytes Sector size (logical/phys…

【全开源】餐饮点餐小程序源码(ThinkPHP+FastAdmin+Uniapp)

&#x1f37d;️餐饮点餐小程序&#xff1a;让美食触手可及 一款基于ThinkPHPFastAdminUniapp开发的点餐小程序&#xff0c;支持单人点餐&#xff0c;还满足多人协同点餐(高级授权)&#xff0c;支持多门店管理&#xff0c;并提供先吃后付和先付后吃两种支付方式。​ &#x1…

[项目推荐]EmoLLM-心理健康大模型

EmoLLM 是一系列能够支持理解用户-支持用户-帮助用户心理健康辅导链路的开源心理健康大模型&#xff0c;由LLM指令微调而来。它旨在全面理解和促进个体、群体乃至整个社会的心理健康状态。 项目介绍 GitHub&#xff1a;https://github.com/SmartFlowAI/EmoLLM 【EmoLLM项目提供…