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

打印 上一主题 下一主题

主题 1738|帖子 1738|积分 5214

前言

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

  
函数原型

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 示例

  1. import torch
  2. import torch.nn as nn
  3. # 示例:nn.CircularPad2d
  4. input = torch.arange(9, dtype=torch.float).reshape(1, 1, 3, 3)
  5. print("Input:")
  6. print(input)
  7. pad = nn.CircularPad2d(1)
  8. output = pad(input)
  9. print("Output with CircularPad2d:")
  10. print(output)
  11. # 使用不同的填充大小
  12. pad = nn.CircularPad2d((1, 2, 0, 1))
  13. output = pad(input)
  14. print("Output with different padding:")
  15. print(output)
复制代码

nn.ConstantPad1、2、3d 示例

  1. import torch
  2. import torch.nn as nn
  3. # 示例:nn.ConstantPad2d
  4. input = torch.arange(9, dtype=torch.float).reshape(1, 1, 3, 3)
  5. print("Input:")
  6. print(input)
  7. pad = nn.ConstantPad2d((1, 2, 0, 1), value=10.0)
  8. output = pad(input)
  9. print("Output with ConstantPad2d:")
  10. print(output)
  11. print("***********************************")
  12. # 三维数据示例
  13. input_3d = torch.randn(1, 1, 2, 3, 4)
  14. pad_3d = nn.ConstantPad3d((1, 2, 0, 1, 2, 3), value=5.0)
  15. output_3d = pad_3d(input_3d)
  16. print("Output with ConstantPad3d:")
  17. print(output_3d)
复制代码

小结

nn.CircularPadXd:利用循环添补方式,通过在张量边界值之间循环来添补数据。这对于需要保持数据连续性的场景特殊有用。
nn.ConstantPadXd:利用指定的常数值来添补张量的边界。这种添补方式简单直接,适用于不需要特殊边界处置惩罚的场景。
无论是循环添补还是常数添补,都是深度学习中常用的数据预处置惩罚技术,它们能够帮助我们更好地控制数据的维度和边界条件,从而优化模型的训练结果。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

惊落一身雪

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表