torch.nn.functional.pad()
1、torch.nn.functional.pad()
-
torch.nn.functional.pad是PyTorch内置的矩阵填充函数
-
官方地址:torch.nn.functional.pad(input, pad, mode=‘constant’, value=None) → Tensor
-
torch.nn.functional.pad( input , pad , mode = ‘constant’ , value = None )
input:需要进行填充的Tensor数据
pad:进行pad的元组(注意这里版本变了以后建议用列表类型),元组中元素个数小于等于input维度的2倍。如:input是2维的,则pad可以最多有4个元素;input是5维的,pad可以最多有10个元素。pad类型: 1.四维Tensor:传入四元素tuple(pad_l, pad_r, pad_t, pad_b), 指的是(左填充,右填充,上填充,下填充),其数值代表填充次数 2.六维Tensor:传入六元素tuple(pleft, pright, ptop, pbottom, pfront, pback), 指的是(左填充,右填充,上填充,下填充,前填充,后填充),其数值代表填充次数
mode:‘constant’, ‘reflect’, ‘replicate’ 或 ‘circular’,默认 ‘constant’。
value:填充的填充值,在"contant"模式下默认填充0,mode=“reflect” or "replicate"时没有 value参数。 -
代码示例
代码例子点这里(这个人的例子做得很棒,可以看看是怎么进行填充的)
2、Expected a value of type ‘float’ for argument ‘value’ but instead foundtype
运行代码的时候可能出现value的问题,根据官方文档看到这里应该是float类型,改成float类型即可(如我们value=0,改成value=0.0)。
也可能出现List而不是Tuple的问题(如我们的pad=(1, 0, 0, 0),改成pad=[1, 0, 0, 0]即可)。
为啥会有这两个问题的出现?
其实我在做实验时copy了网上的代码,没有去细看pad函数和pytorch,以至于这俩问题都出现了。
那别人怎么会把错误代码上传?
我猜测被我copy同学那会的pad函数是Tuple的pad和int的value,现在pytorch版本更新了,因此这个函数也随之发生改变了。(我的pytorch版本:1.10.0)
综上有:被我copy代码的同学年纪应该比我大哈哈哈哈!!!