Pytorch之torch.nn.functional.pad超全解释

torch.nn.functional.pad是PyTorch内置的矩阵填充函数

(1).torch.nn.functional.pad函数详细描述如下:

torch.nn.functional.pad(input, pad, mode,value ) 
Args:
	"""
	input:四维或者五维的tensor Variabe
	pad:不同Tensor的填充方式
		1.四维Tensor:传入四元素tuple(pad_l, pad_r, pad_t, pad_b),
		指的是(左填充,右填充,上填充,下填充),其数值代表填充次数
		2.六维Tensor:传入六元素tuple(pleft, pright, ptop, pbottom, pfront, pback),
		指的是(左填充,右填充,上填充,下填充,前填充,后填充),其数值代表填充次数
	mode: ’constant‘, ‘reflect’ or ‘replicate’三种模式,指的是常量,反射,复制三种模式
	value:填充的数值,在"contant"模式下默认填充0,mode="reflect" or "replicate"时没有			
		value参数
		
	"""

使用举例:

import numpy as np
import torch
import torch.nn.functional as F
m=np.asarray([[[1,1],[1,1]]])
m=torch.Tensor(m)
print(m)
print(m.shape)

输出:
tensor([[[1., 1.],
             [1., 1.]]])

torch.Size([1, 2, 2])

可以出m是一个三维向量,下面我们继续:

pad_dims = (
                    2, 2,
                    0, 0,
                    0, 0,

                )
x=F.pad(m,pad_dims,"constant")
print(x)
print(x.shape)

输出:

tensor([[[0., 0., 1., 1., 0., 0.],
             [0., 0., 1., 1., 0., 0.]]])
torch.Size([1, 2, 6])

什么意思?这里在第一个位置增加的2,2表示横向补两行0,大概就是下面的意思。

下面继续:

pad_dims = (
                    0, 0,
                    2, 2,
                    0, 0,

                )
x=F.pad(m,pad_dims,"constant")
print(x)
print(x.shape)

输出:

tensor([[[0., 0.],
             [0., 0.],
             [1., 1.],
             [1., 1.],
             [0., 0.],
             [0., 0.]]])
torch.Size([1, 6, 2])

这样就是纵向补了两行0,但是依然还是一个维度,意思是这样:

继续

pad_dims = (
                    0, 0,
                    0, 0,
                    1, 1,

                )
x=F.pad(m,pad_dims,"constant")
print(x)
print(x.shape)

输出:

相信你已经猜到了

tensor([[[0., 0.],
             [0., 0.]],

            [[1., 1.],
             [1., 1.]],

            [[0., 0.],
             [0., 0.]]])
torch.Size([3, 2, 2])

正是维度上被填了0,这里是1,1.所以补了两个维度的0。画图这样理解

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值