Pytorch--Convolution Layers

news2025/1/31 20:59:56

文章目录

    • 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.coloradmin.cn/o/1815553.html

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

相关文章

如何用Vue3构建一个交互式音乐播放器

本文由ScriptEcho平台提供技术支持 项目地址:传送门 Vue.js 开发音乐播放器卡片 应用场景 这款音乐播放器卡片旨在为音乐应用程序提供一个现代而交互式的用户界面。它包含诸如歌曲信息、播放进度条和控制按钮等关键功能。 基本功能 **歌曲信息显示&#xff1a…

Xinstall:解决App安装跳转难题,让你的用户流畅体验不再受阻

在互联网流量红利逐渐衰退的今天,App推广和运营面临着前所未有的挑战。如何确保在多变的互联网环境下,迅速搭建起能时刻满足用户需求的运营体系,已经成为众多企业急待解决的问题。今天,我们就来探讨一下如何通过Xinstall的安装跳转…

软件工程期末复习题

目录 选择 判断 选择 下列说法中正确的是 ( B )。 A、20 世纪50 年代提出了软件工程的概念摇 B、20 世纪60 年代提出了软件工程的概念 C、20 世纪70 年代出现了客户端/ 服务器技术 D、20 世纪80 年代软件工程学科达到成熟 软件危机的主要原因是 ( D )。 A、软件工具落后…

电子画册制作与传统画册相比,有哪些优势?

在当今数字化时代,电子画册作为一种新兴的媒体形式,其制作与传统画册相比具有显著的优势。以下是对这些优势的详细探讨。 首先,电子画册的制作过程通常更加便捷和经济。相较于传统画册需要经历的繁琐的印刷过程,电子画册的制作大多…

RocketMQ教程(八):RocketMQ的集群搭建

集群架构 RocketMQ 的各个组件都可以搭建成集群部署,Broker 还可以搭建成主从架构,下面介绍的主要是 Broker 集群。 数据复制策略 复制策略是Broker的Master与Slave间的数据同步方式。分为同步复制与异步复制: 同步复制 消息写入master后,master会等待slave同步数据成…

【C++】——继承(详解)

一 继承的定义和概念 1.1 继承的定义 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保 持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类,被继承的称为基类…

wordpress主题开发

科普一:wordpress 是一套用 php 这个语言写的CMS后台管理系统,即我们大家的 wordpress 网站后台是一样的,能体现我们网站外观不同的地方就在于wordpress主题(即皮肤),而这个主题的基本构成是 htmlcssjavasc…

使用Python爬取temu商品与评论信息

【🏠作者主页】:吴秋霖 【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Python与爬虫领域研究与开发工作! 【&…

javaWeb项目-ssm+vue网上租车系统功能介绍

本项目源码:java-基于ssmvue的网上租车系统源码说明文档资料资源-CSDN文库 项目关键技术 开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架:ssm、Springboot 前端:Vue、ElementUI 关键技术:springboot、…

系统运维联盟 5 月会议召开,围绕“进展、规划与合作”展开讨论

2024 年 5 月 28 日,龙蜥社区系统运维联盟(SOMA,以下简称“运维联盟”)月度会议于线上召开,12 家运维联盟单位、 20 位代表出席,缺席 1 家。本次会议由龙蜥社区运营委员会副主席、运维联盟秘书处负责人金美…

openh264 编码器源码分析:AnalyzePictureComplexity 函数

介绍 文件位置: openh264/codec/processing/src/complexityanalysis/ComplexityAnalysis.cpp 功能: 作为CWelsPreProcess类中一个方法,用来分析当前图像与参考图像之间的复杂度关系,以便编码策略。 原型: void CWels…

为什么要学习Flink系统管理及优化课程?

Flink系统是一种流式处理框架,能够高效地处理大规模数据流。然而,要确保Flink系统的正常运行,就需要进行系统管理和优化。系统管理是指对Flink集群的监控、调度和维护,而系统优化则是指通过调整参数和优化算法,提高Fli…

Class-Aware Self-Distillation for Remote SensingImage Scene Classification

这篇文章提出了一种新的蒸馏方式,由于遥感场景图像具有类间相似性和类内多样性的特点,这篇文章试图解决这个问题。通过三个共享权重的分支,同时输入三张图片,其中两张类别相同的图片,一张类别不同但地物特征相似的图片…

Go变量作用域精讲及代码实战

1. 变量的作用域概述 在编程中,变量的作用域(Scope)定义了变量在程序中的可见性和生命周期。理解变量的作用域对于编写健壮且可维护的代码至关重要。Go语言(简称Go)提供了几种不同的作用域类型,使得开发者可…

腾讯云SSL证书获取及Nginx配置教程

前言 很多人应该都有属于自己网站,刚开始基本是只能用http进行访问,无法使用https安全访问,但是随着网络安全意识的不断提高,越来越多的网站开始使用HTTPS协议来保护用户的数据安全,SSL证书是实现HTTPS协议的关键组件,本文将讲解如何在腾讯云上获取SSL证书,并配置到Ngi…

为什么要做数字化转型?数字化转型对企业的意义?

本人研究企业数字化转型9年多,为企业软件选型、数字化提供咨询服务!目前重点研究低代码数字化转型玩法,力争为各行各业探索出一条最具性价比的数字化方式。 【织信低代码】数字化系统一体化的定制开发工具。 什么是数字化转型,为什…

【教程】从0开始搭建大语言模型:实现Attention机制

从0开始搭建大语言模型 从0开始搭建大语言模型:实现Attention机制建模长序列存在的问题使用attention机制获得数据间的依赖Self-attention介绍带有可训练权重的self-attention1.生成Q,K,V变量2.计算attention score3.attention weight的获得4…

《网络反不正当竞争规定》9月1日实施,这两类欺诈被重点关注

近日,国家市场监督管理总局公布《网络反不正当竞争暂行规定》 ,自2024年9月1日起施行。《网络反不正当竞争暂行规定》是为预防和制止网络不正当竞争行为,维护公平竞争的市场秩序,鼓励创新,保护经营者和消费者的合法权益…

【Unity】Inspector排版扩展学习初探

一、简单的Unity Inspector扩展 [SerializeField] [SerializeField] 作用:让private属性也可以显示在面板上 [Range(x , y)] [Range(x , y)] 作用: 让参数从输入框变为范围滑条 [Header(" 标题 ")] [Header(" 标题 ")]作用&am…

基于YOLOv8的行人检测项目的实现

YOLOv8简介 YOLOv8是YOLO系列的最新版本,在继承YOLOv7的基础上进行了进一步改进。YOLOv8在网络结构、损失函数和训练策略上都有显著的提升,使其在目标检测任务中表现更加出色。各位只需要记住,做目标检测,无脑选V8就完了。YOLOv8…