当前位置: 首页 > news >正文

【Python】nn.nn.CircularPad1、2、3d函数和nn.ConstantPad1、2、3d函数详解和示例

前言

在深度学习中,尤其是在处理图像、音频或其他多维数据时,数据填充(Padding)是一个常见的操作。填充不仅可以保持数据的空间维度,还能在卷积操作中避免信息丢失。PyTorch提供了多种填充方式,其中nn.CircularPadXd和nn.ConstantPadXd是两种常用的填充方法。本文将详细介绍nn.CircularPad1d、nn.CircularPad2d、nn.CircularPad3d以及nn.ConstantPad1d、nn.ConstantPad2d、nn.ConstantPad3d的函数原型、用法示例,并总结它们的特点。

  • 前言
  • 函数原型
    • nn.CircularPadXd
    • nn.ConstantPadXd
    • 示例
      • nn.CircularPad1、2、3d 示例
      • nn.ConstantPad1、2、3d 示例
  • 小结

函数原型

nn.CircularPadXd

nn.CircularPadXd(其中X可以是1、2或3)类用于使用循环填充(circular padding)方式填充输入张量(tensor)的边界。循环填充意味着在填充时使用输入张量边界的值来填充另一端。

nn.CircularPad1d(padding): 一维数据的循环填充。
nn.CircularPad2d(padding): 二维数据的循环填充,常用于图像。
nn.CircularPad3d(padding): 三维数据的循环填充,适用于视频帧或体积数据。
padding参数可以是一个整数或元组(tuple),表示在每个维度上的填充大小。

nn.ConstantPadXd

nn.ConstantPadXd(其中X可以是1、2或3)类用于使用常数填充(constant padding)方式填充输入张量的边界。

nn.ConstantPad1d(padding, value): 一维数据的常数填充。
nn.ConstantPad2d(padding, value): 二维数据的常数填充,常用于图像。
nn.ConstantPad3d(padding, value): 三维数据的常数填充,适用于视频帧或体积数据。
padding参数同上,value参数指定了填充的常数值。

示例

nn.CircularPad1、2、3d 示例

import torch
import torch.nn as nn# 示例:nn.CircularPad2d
input = torch.arange(9, dtype=torch.float).reshape(1, 1, 3, 3)
print("Input:")
print(input)pad = nn.CircularPad2d(1)
output = pad(input)
print("Output with CircularPad2d:")
print(output)# 使用不同的填充大小
pad = nn.CircularPad2d((1, 2, 0, 1))
output = pad(input)
print("Output with different padding:")
print(output)

在这里插入图片描述

nn.ConstantPad1、2、3d 示例

import torch
import torch.nn as nn
# 示例:nn.ConstantPad2d
input = torch.arange(9, dtype=torch.float).reshape(1, 1, 3, 3)
print("Input:")
print(input)pad = nn.ConstantPad2d((1, 2, 0, 1), value=10.0)
output = pad(input)
print("Output with ConstantPad2d:")
print(output)
print("***********************************")
# 三维数据示例
input_3d = torch.randn(1, 1, 2, 3, 4)
pad_3d = nn.ConstantPad3d((1, 2, 0, 1, 2, 3), value=5.0)
output_3d = pad_3d(input_3d)
print("Output with ConstantPad3d:")
print(output_3d)

在这里插入图片描述

小结

nn.CircularPadXd:使用循环填充方式,通过在张量边界值之间循环来填充数据。这对于需要保持数据连续性的场景特别有用。
nn.ConstantPadXd:使用指定的常数值来填充张量的边界。这种填充方式简单直接,适用于不需要特殊边界处理的场景。

无论是循环填充还是常数填充,都是深度学习中常用的数据预处理技术,它们能够帮助我们更好地控制数据的维度和边界条件,从而优化模型的训练效果。

http://www.lryc.cn/news/419290.html

相关文章:

  • LearnOpenGL——混合、面剔除
  • 视频网站为何热衷于SCDN
  • Redis与DataBase保持数据一致性
  • 解决 MacOS 连接公司 VPN 成功但是不能网络的问题
  • 【Kubernetes】k8s集群之Pod容器资源限制和三种探针
  • 从古代驿站体系看软件安全管控@安全历史04
  • 8.8 哈希表简单 1 Two Sum 141 Linked List Cycle
  • 动态规划之——背包DP(完结篇)
  • Advanced IP Scanner - 网络扫描工具介绍
  • 数据库事务的四大特性ACID
  • ELK架构介绍
  • Vscode下ESP32工程函数定义无法跳转
  • liquibase.exception.LockException: Could not acquire change log lock.
  • 【多线程-从零开始-捌】阻塞队列,消费者生产者模型
  • 数据结构——栈(Stack)
  • 修改pom.xml为阿里云仓库并且让他生效
  • step13:qml/qt程序打包
  • 招聘求职小程序
  • 10分钟学会docker安装与使用
  • vue3、uniapp-vue3模块自动导入
  • Ubantu设置国内镜像(阿里云、华为云)
  • Redis远程字典服务器(3)——常用数据结构和单线程模型
  • [Qt][按钮类控件]详细讲解
  • 数据结构(5.5_2)——并查集
  • Java Web —— 第四天(Maven)
  • 2024年电脑录屏软件推荐:捕捉屏幕,记录生活,分享精彩
  • oracle 增删改查字段
  • 给不规则的shapeGeometry贴图
  • 网络层IP协议报头字段的认识
  • Linux部署MySQL8.0