当前位置:网站首页>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
边栏推荐
猜你喜欢
笔记&代码 | 统计学——基于R(第四版) 第四章随机变量的概率分布
【 StoneDB Class 】 introductory lesson 3: StoneDB installation of compilation
sql一些小建议
IIS发布程序,出现:请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理解决方案
Several ways to implement inheritance in js
"Replay" interview BAMT came back to sort out 398 high-frequency interview questions to help you get a high salary offer
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
年初离职,学习半年源码,终于拿到了蚂蚁 Offer,分享面试过程
在Ubuntu/Linux环境下使用MySQL:修改数据库sql_mode,可解决“this is incompatible with sql_mode=only_full_group_by”问题
STM32H750VBT6 Keil5 error :flash download failed cortex-M7
随机推荐
Risk Control Modeling IV: Logistic Regression Scorecard Development
JS data types
最优化问题——线性规划模型
理财产品募集期和开放期有什么区别?
【科研-学习-pytorch】6-数值计算
年初离职,学习半年源码,终于拿到了蚂蚁 Offer,分享面试过程
杭电多校8 补题
一名双非程序媛面试蚂蚁、美团、携程等大厂拿 offer 分享面试过程
NodeJs连接mysql数据库
线程与线程池
Discourse 的关闭主题(Close Topic )和重新开放主题
2021江苏省赛
千分位数字
整流七 - 三相PWM整流器—公式推导篇
一道dp的三次优化(时间+空间)
微信企业号开发之开启回调模式
2021 icpc 上海 H. Life is a Game
透明度混合-Blend
pycharm更改默认项目地址的方法
Several ways to implement inheritance in js