图解pytorch padding方法 ReflectionPad2d

本文详细介绍了PyTorch中的nn.ReflectionPad2d模块,它使用输入边界值的反射来填充输入张量。通过示例展示了不同padding参数如何影响输出,并强调了padding大小必须小于输入尺寸。此外,还提供了代码示例来直观展示反射填充的工作原理。
摘要由CSDN通过智能技术生成

torch.nn.ReflectionPad2d(padding)这个函数简单来说就是:利用输入边界的反射来填充输入张量。

官方文档里给了该padding的输入输出如下所示:

CLASS torch.nn.ReflectionPad2d(padding: Union[T, Tuple[T, T, T, T]])
  • Input: ( N , C , H i n , W i n ) (N, C, H_{in}, W_{in}) (N,C,Hin,Win)

  • Output: ( N , C , H o u t , W o u t ) (N, C, H_{out}, W_{out}) (N,C,Hout,Wout)where

    KaTeX parse error: Expected '}', got '_' at position 33: …+ \text{padding_̲top} + \text{pa…

    KaTeX parse error: Expected '}', got '_' at position 33: …+ \text{padding_̲left} + \text{p…

官方文档比较简单,我们先直接看代码:

import torch
import torch.nn as nn

m = nn.ReflectionPad2d(1)
input = torch.arange(9, dtype=torch.float).reshape(1, 1, 3, 3)
input
-------
tensor([[[[0., 1., 2.],
          [3., 4., 5.],
          [6., 7., 8.]]]])
----------------------------
m(input)
-----
tensor([[[[4., 3., 4., 5., 4.],
          [1., 0., 1., 2., 1.],
          [4., 3., 4., 5., 4.],
          [7., 6., 7., 8., 7.],
          [4., 3., 4., 5., 4.]]]])
------------------------------
n = nn.ReflectionPad2d(2)
n(input)
-------
tensor([[[[8., 7., 6., 7., 8., 7., 6.],
          [5., 4., 3., 4., 5., 4., 3.],
          [2., 1., 0., 1., 2., 1., 0.],
          [5., 4., 3., 4., 5., 4., 3.],
          [8., 7., 6., 7., 8., 7., 6.],
          [5., 4., 3., 4., 5., 4., 3.],
          [2., 1., 0., 1., 2., 1., 0.]]]])
-------------------------------
m = nn.ReflectionPad2d((1, 1, 2, 0))
m(input)
-----
tensor([[[[8., 7., 6., 7., 8., 7., 6.],
          [5., 4., 3., 4., 5., 4., 3.],
          [2., 1., 0., 1., 2., 1., 0.],
          [5., 4., 3., 4., 5., 4., 3.],
          [8., 7., 6., 7., 8., 7., 6.],
          [5., 4., 3., 4., 5., 4., 3.],
          [2., 1., 0., 1., 2., 1., 0.]]]])
1. 填充一个整数

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

从上面的例子看,填充的值就是对应边界旁边的值按填充参数反射过去,即反射填充。

填充顺序是左-右-上-下,

nn.ReflectionPad2d((1, 1, 2, 0))中,这几个数字表示左右上下分别要填充的层数。我们画图表示更清楚,如下:

在这里插入图片描述

几幅图已经比较清楚的表达了该padding方法的过程。

Note: padding的大小要小于输入的大小

Reference:

几幅图已经比较清楚的表达了该padding方法的过程。

Note: padding的大小要小于输入的大小

Reference:

PyTorch: REFLECTIONPAD2D

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烤粽子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值