torch.nn.functional.pad(Expected a value of type ‘float‘ for argument ‘value‘ but instead foundtype)

骑猪看日落 2024-04-03 07:32 152阅读 0赞

torch.nn.functional.pad()

  • 1、torch.nn.functional.pad()
  • 2、Expected a value of type ‘float’ for argument ‘value’ but instead foundtype

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个元素。

    1. pad类型:
    2. 1.四维Tensor:传入四元素tuple(pad_l, pad_r, pad_t, pad_b),
    3. 指的是(左填充,右填充,上填充,下填充),其数值代表填充次数
    4. 2.六维Tensor:传入六元素tuple(pleft, pright, ptop, pbottom, pfront, pback),
    5. 指的是(左填充,右填充,上填充,下填充,前填充,后填充),其数值代表填充次数

    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代码的同学年纪应该比我大哈哈哈哈!!!

发表评论

表情:
评论列表 (有 0 条评论,152人围观)

还没有评论,来说两句吧...

相关阅读