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

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

torch.nn.functional.pad(input, pad, mode,value )
Args:"""input:四维或者五维的tensor Variabepad:不同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参数"""

(2).代码演示(举个四维Tensor填充的例子)

1.获取一个shape=(2,1,3,2)的随机数矩阵

import torch
import torch.nn.functional as F
original_values = torch.randn([2,1, 3, 2])
print("original_values: ",original_values,"\n")
print("original_values的shape: ",original_values.shape)

显示结果:

original_values:  tensor([[[[ 0.8182, -1.2295],[ 0.1985,  1.2261],[-2.1763, -0.5790]]],[[[ 0.4204,  1.5903],[ 1.6354, -2.7076],[ 0.6119,  1.4595]]]])
original_values的shape:  torch.Size([2, 1, 3, 2])

2.进行左填充,pad=(1,0,0,0,0,0),在第四个维度填充

padding_values = F.pad(original_values, pad=(1,0,0,0,0,0), mode="constant",value=0)
print("padding_values: ",padding_values,"\n")
print("padding_values的shape: ",padding_values.shape)

显示结果1(mode=“constant”):

在mode="constant"的padding_values:  tensor([[[[ 0.0000,  0.8182, -1.2295],[ 0.0000,  0.1985,  1.2261],[ 0.0000, -2.1763, -0.5790]]],[[[ 0.0000,  0.4204,  1.5903],[ 0.0000,  1.6354, -2.7076],[ 0.0000,  0.6119,  1.4595]]]])
padding_values的shape:  torch.Size([2, 1, 3, 3])

显示结果二2(mode=“reflect”):

在mode="reflect"的padding_values:  tensor([[[[-1.2295,  0.8182, -1.2295],[ 1.2261,  0.1985,  1.2261],[-0.5790, -2.1763, -0.5790]]],[[[ 1.5903,  0.4204,  1.5903],[-2.7076,  1.6354, -2.7076],[ 1.4595,  0.6119,  1.4595]]]])
padding_values的shape:  torch.Size([2, 1, 3, 3])

显示结果三(mode=“replicate”):

在mode="replicate"的padding_values:  tensor([[[[ 0.8182,  0.8182, -1.2295],[ 0.1985,  0.1985,  1.2261],[-2.1763, -2.1763, -0.5790]]],[[[ 0.4204,  0.4204,  1.5903],[ 1.6354,  1.6354, -2.7076],[ 0.6119,  0.6119,  1.4595]]]])
padding_values的shape:  torch.Size([2, 1, 3, 3])

3.进行左填充,pad=(2,0,0,0,0,0),在第四个维度填充

padding_values = F.pad(original_values, pad=(2,0,0,0,0,0), mode="constant",value=0)
print("padding_values: ",padding_values,"\n")
print("padding_values的shape: ",padding_values.shape)

显示结果(mode=“constant”):

padding_values:  tensor([[[[ 0.0000,  0.0000,  0.8182, -1.2295],[ 0.0000,  0.0000,  0.1985,  1.2261],[ 0.0000,  0.0000, -2.1763, -0.5790]]],[[[ 0.0000,  0.0000,  0.4204,  1.5903],[ 0.0000,  0.0000,  1.6354, -2.7076],[ 0.0000,  0.0000,  0.6119,  1.4595]]]])
padding_values的shape:  torch.Size([2, 1, 3, 4])

4.进行右填充,pad=(0,1,0,0,0,0),在第四个维度填充

padding_values = F.pad(original_values, pad=(0,1,0,0,0,0), mode="constant",value=0)
print("padding_values: ",padding_values)
print("padding_values的shape: ",padding_values.shape)

显示结果(mode=“constant”):

padding_values:  tensor([[[[ 0.8182, -1.2295,  0.0000],[ 0.1985,  1.2261,  0.0000],[-2.1763, -0.5790,  0.0000]]],[[[ 0.4204,  1.5903,  0.0000],[ 1.6354, -2.7076,  0.0000],[ 0.6119,  1.4595,  0.0000]]]])
padding_values的shape:  torch.Size([2, 1, 3, 3])

5.进行上填充,pad=(0,0,1,0,0,0),在第三个维度填充

padding_values = F.pad(original_values, pad=(0,0,1,0,0,0), mode="constant",value=0)
print("padding_values: ",padding_values)
print("padding_values的shape: ",padding_values.shape)

显示结果(mode=“constant”):

padding_values:  tensor([[[[ 0.0000,  0.0000],[ 0.8182, -1.2295],[ 0.1985,  1.2261],[-2.1763, -0.5790]]],[[[ 0.0000,  0.0000],[ 0.4204,  1.5903],[ 1.6354, -2.7076],[ 0.6119,  1.4595]]]])
padding_values的shape:  torch.Size([2, 1, 4, 2])

6.进行下填充,pad=(0,0,0,1,0,0),在第三个维度填充

padding_values = F.pad(original_values, pad=(0,0,0,1,0,0), mode="constant",value=0)
print("padding_values: ",padding_values)
print("padding_values的shape: ",padding_values.shape)

显示结果(mode=“constant”):

padding_values:  tensor([[[[ 0.8182, -1.2295],[ 0.1985,  1.2261],[-2.1763, -0.5790],[ 0.0000,  0.0000]]],[[[ 0.4204,  1.5903],[ 1.6354, -2.7076],[ 0.6119,  1.4595],[ 0.0000,  0.0000]]]])
padding_values的shape:  torch.Size([2, 1, 4, 2])

7.进行前填充,此时pad=(0,0,0,0,1,0),在第二个维度上填充

padding_values = F.pad(original_values, pad=(0,0,0,0,1,0), mode="constant",value=0)
print("padding_values: ",padding_values)
print("padding_values的shape: ",padding_values.shape)

显示结果(mode=“constant”):

padding_values:  tensor([[[[ 0.0000,  0.0000],[ 0.0000,  0.0000],[ 0.0000,  0.0000]],[[ 0.8182, -1.2295],[ 0.1985,  1.2261],[-2.1763, -0.5790]]],[[[ 0.0000,  0.0000],[ 0.0000,  0.0000],[ 0.0000,  0.0000]],[[ 0.4204,  1.5903],[ 1.6354, -2.7076],[ 0.6119,  1.4595]]]])
padding_values的shape:  torch.Size([2, 2, 3, 2])

8.进行后填充,此时pad=(0,0,0,0,1,0),在第二个维度上填充

padding_values = F.pad(original_values, pad=(0,0,0,0,0,1), mode="constant",value=0)
print("padding_values: ",padding_values)
print("padding_values的shape: ",padding_values.shape)

显示结果(mode=“constant”):

padding_values:  tensor([[[[ 0.8182, -1.2295],[ 0.1985,  1.2261],[-2.1763, -0.5790]],[[ 0.0000,  0.0000],[ 0.0000,  0.0000],[ 0.0000,  0.0000]]],[[[ 0.4204,  1.5903],[ 1.6354, -2.7076],[ 0.6119,  1.4595]],[[ 0.0000,  0.0000],[ 0.0000,  0.0000],[ 0.0000,  0.0000]]]])
padding_values的shape:  torch.Size([2, 2, 3, 2])

Pytorch之torch.nn.functional.pad函数详解相关推荐

  1. 【pytorch】torch.nn.functional.pad的使用

    torch.nn.functional.pad 是对Tensor做padding,输入的参数必须的torch的Tensor 一般地,习惯上会做如下声明 import torch.nn.function ...

  2. 剖析 | torch.nn.functional.softmax维度详解

    写代码,看代码都要心中有数,输入是什么,输出是什么,结果是如何计算出来的. 一维数据: # -*- coding: utf-8 -*- import torch import numpy as np ...

  3. pytorch笔记:torch.nn.functional.pad

    1 torch.nn.functional.pad函数 torch.nn.functional.pad是pytorch内置的tensor扩充函数,便于对数据集图像或中间层特征进行维度扩充 torch. ...

  4. torch.nn.functional.pad

    作用 用来对一个tensor进行填充.最典型的就是图片了,原来是2*2的,现在想要变成3*3的,那么就需要填充,此时有很多选择,例如是在原来的右上进行填充还是左下?又或者是左上?等等. 这个函数就可以 ...

  5. torch.nn.functional.pad(input, pad, mode=‘constant‘, value=0)

    torch.nn.functional.pad(input, pad, mode='constant', value=0) 填充Tensor. 填充大小: 填充input的某些维度的填充大小从最后一个 ...

  6. mindspore.ops.Pad如何像torch.nn.functional.pad一样可以填充负维度

    torch.nn.functional.pad[x,[-1,-1,-1,-1,]]可以填充负维度,而mindspore.ops.Pad 却不能填充负维度. 但是在官网中写的torch.nn.funct ...

  7. torch.nn.functional.interpolate函数

    torch.nn.functional.interpolate实现插值和上采样 torch.nn.functional.interpolate(input, size=None, scale_fact ...

  8. pytorch中的nn.LSTM模块参数详解

    直接去官网查看相关信息挺好的,但是为什么有的时候进不去 官网:https://pytorch.org/docs/stable/nn.html#torch.nn.LSTM 使用示例,在使用中解释参数 单 ...

  9. torch.nn.functional.unfold 用法解读

    torch.nn.Unfold(kernel_size, dilation=1, padding=0, stride=1) 参数 kernel_size,滑动窗口的大小 dilation,和空洞卷积中 ...

最新文章

  1. JS中for循环里面的闭包问题的原因及解决办法
  2. C# WinForm 弹出模式窗口操作滚动条
  3. 干货 | 你还在群发吗?高效查出哪些微信好友删除了你
  4. 从零开始带你一步一步使用 YOLOv3 测试自己的数据
  5. java 序列化异常_关于spring:Java序列化异常消息
  6. 通过BitmapFactory.Options解决activity之间传递图片出现内存溢出(OOM)问题
  7. ajax修改属性后如何遍历,Ajax遍历jSon后对每一条数据进行相应的修改和删除(代码分享)...
  8. UVa 10900 - So you want to be a 2n-aire?(期望DP)
  9. 数据结构 以数组的形式存储数据(c语言 干货满满)
  10. 华为路由与交换 eSight基本概述学习笔记
  11. 一个关于var函数计算方差 / 标准差的问题
  12. 交易所交易规则和费用计算
  13. Excel 行列转换的最简方法
  14. QQ空间内容批量删除脚本
  15. HIVE 系列 (4) hive 内部表和外部表HQL查询统计
  16. esp8266_deauther将html压缩成字节码
  17. Oracle R12采购接收流程 PR PO RCV AP Payment
  18. Android中使用微信H5支付时支付结果刷新问题
  19. HBase--JavaAPI的操作,创建表修改表,增删改查数据
  20. 行人检测/人体检测综述

热门文章

  1. 什么是人工智能,揭穿许多关于人工智能和机器学习的各种误区
  2. 释放数据生产力,数据治理要“即时”
  3. 城市园林景观设计一般按什么收费标准?
  4. 计算机配置怎么复制,怎么设置别人无法使用U盘复制你的电脑文件 防止拷贝操作方法...
  5. java弹球游戏代码_Java实现简单的弹球游戏
  6. Android 车载应用开发与分析 - CarLauncher
  7. biome-BGC模型小白求助
  8. Android中常用的adb指令
  9. 河南分销小程序开发|三级分销玩法介绍
  10. ubuntu base文件系统移植