当前位置:网站首页>tf.pad()--填充操作
tf.pad()--填充操作
2022-08-09 00:28:00 【胖虎记录学习】
填充(padding),在矩阵的周围补0操作,一般用于进行卷积操作之前,使得每个输入像素都能作为卷积核窗口的中心。
函数形式:
tf.pad( tensor,paddings, mode='CONSTANT',name=None,constant_values = 0 )
参数解释:
tensor:要填充的张量;
padings:代表每一维填充多少,它的维度和tensor的维度一样;
此操作根据您指定的 paddings 来填充一个 tensor,paddings 是一个具有形状 [n, 2] 的整数张量,其中 n 是 tensor 的秩,对于每个输入维度 D,paddings [D, 0] 表示在该维度的 tensor 内容之前要添加多少个值,而 paddings[D, 1] 表示在该维度中的 tensor 内容之后要添加多少值。
输出维度D的大小:
paddings[D, 0] + tensor.dim_size(D) + paddings[D, 1]
参数解释:
mode:可以取三个值,分别是"CONSTANT"、“REFLECT”、“SYMMETRIC”;
mode=“CONSTANT” 填充0;
mode="REFLECT" 映射填充,上下(1维)填充顺序和paddings是相反的,左右(零维)顺序补齐;
mode="SYMMETRIC" 对称填充,上下(1维)填充顺序是和paddings相同的,左右(零维)对称补齐;
name:操作的名称(可选);
constant_values:在 “CONSTANT” 模式下,要使用的标量填充值,必须与 tensor 具有相同类型(可选)。
返回:
该函数返回一个张量,与 tensor 具有相同的类型。
实例:
输入图像format为:N*H*W*C(N:batch数量,H:高,W:宽,C:通道数)
def _fixed_padding(inputs, kernel_size):
pad_total = kernel_size - 1
pad_beg = pad_total // 2
pad_end = pad_total - pad_beg
padded_inputs = tf.pad(inputs, [[0, 0], [pad_beg, pad_end],[pad_beg, pad_end], [0, 0]], mode='CONSTANT')
return padded_inputs
input:4维,2*416*416*1
padding:[[0, 0], [pad_beg, pad_end], [pad_beg, pad_end], [0, 0]],代表在每一个"维度"上填充多少行或多少列,“维度”和输入张量的“维度”一样,这里的“维度”是指比如输入inputs大小是2*416*416*1,就是4维,然后填充顺序也要保证有四维,即大概这种形状:[[ ,],[ ,],[ ,],[ ,]],然后第一行就对应输入inputs中的2(N)这个维度,第二行对应输入inputs中的416(H)这个维度,第三行对应输入inputs中的416(W)这个维度,第四行对应输入inputs中的1(C)这个维度。
假设kernel_size=3,则pad_beg = 1,pad_end = 1,填充顺序为[[0, 0], [1, 2], [2,1], [0, 0]],意义是:在batch=2这个维度,[0,0]表示头和尾填充行或列数为0,即不填充;在416(H)这个维度上,[1,2]表示头和尾分别都要填充,即最上面填充1行,最下面填充2行;在416(W)这个维度上,[2,1]表示头和尾分别都要填充,即最左边填充2列,最右边填充1列;在channel=1这个维度,[0,0]表示头和尾填充行或列数为0,即不填充。经过tf.pad()后,张量大小变为2*419*419*1(N*H*W*C)。
tensorflow卷积中的两种padding方式“SAME”和“VALID”:
padding后矩阵大小的两种计算公式:
padding=‘VALID:’[向上取整]
padding=‘same:’[向上取整]
W:输入图片大小W*W
F:卷积核大小F*F
S:步长stride
P:padding
边栏推荐
- 【学习-目标检测】目标检测之——YOLO v3
- Using MySQL in Ubuntu/Linux environment: Modify the database sql_mode to solve the "this is incompatible with sql_mode=only_full_group_by" problem
- LeetCode每日一题(481. Magical String)
- 牛客小白月赛 37 补题
- 安装wcf框架
- 架构组学习总结
- 【科研-学习-pytorch】2-线性回归
- JSON基础,传递JSON数据,介绍jackson、gson、fastjson、json-lib四种主流框架!
- 棋盘从左上角走到右下角方案数
- 神经网络基本原理
猜你喜欢
随机推荐
牛客练习赛87
什么是阿里云服务器系统盘和数据盘?
wordpress入门基本操作,网站安全防护及常用插件(建站必看教程)
cmd切换硬盘的命令,从C盘切换到D盘怎么操作
图像去雾概述
pycharm更改默认项目地址的方法
Early departure, learning source half a year, finally got the ants Offer to share the interview process
微信企业号开发之接收响应消息
千分位数字
在Ubuntu/Linux环境下使用MySQL:修改数据库sql_mode,可解决“this is incompatible with sql_mode=only_full_group_by”问题
supervisor 安装、配置、常用命令
[GYCTF2020]Ezsqli-1|SQL注入
年初离职,学习半年源码,终于拿到了蚂蚁 Offer,分享面试过程
【学习-目标检测】目标检测之—FPN+Cascade+Libra
【 StoneDB Class 】 introductory lesson 3: StoneDB installation of compilation
【科研-学习-pytorch】5-boardcasting、合并分割
使用jdbc来处理MySQL的utf8mb4字符集(转)
「复盘」面试 BAMT 回来整理 398 道高频面试题,助你拿高薪 offer
统一身份管理平台IAM单点登录流程及第三方接口设计方案
大计算量优化方法总结