当前位置:网站首页>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_inputsinput: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
边栏推荐
猜你喜欢

【科研-学习-pytorch】5-boardcasting、合并分割

JSON基础,传递JSON数据,介绍jackson、gson、fastjson、json-lib四种主流框架!

Early departure, learning source half a year, finally got the ants Offer to share the interview process

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
Sencha Touch页面跳转创建返回上一级按钮的设计思路

Sencha Touch页面跳转创建返回上一级按钮的设计思路
图像超分辨率重建概述

桌面内容整理,用时高效

vscode 中新建文件自动显示作者,日期等配置

阿里云服务器买完不知道如何使用(新手入门教程)
随机推荐
逐片元-兰伯特光照模型
2021 icpc 上海 H. Life is a Game
【学习-目标检测】目标检测之——YOLO v3
笔记&代码 | 统计学——基于R(第四版) 第十一章 时间序列预测
mysql 批量修改表及字段字符集
pycharm开启鼠标滚动调节字体大小
架构组学习总结
最优化问题——线性规划模型
Unity3D小白学习日记(02):U3D如何连接SQL SERVER数据库(亲测可行!)
三角果计数
求区间(L, R)小于k的数有多少个
Sencha Touch页面跳转创建返回上一级按钮的设计思路
MySQL5.7设置MySQL/MariaDB 数据库默认编码为utf8mb4
统一身份管理平台IAM单点登录流程及第三方接口设计方案
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
【Full arrangement】
在Ubuntu/Linux环境下使用MySQL:解决com.mysql.jdbc.PacketTooBigException: Packet for query is too large的问题
非线性规划——0-1问题、指派问题例子
动态style定义背景渐变
ScreenSpace-ShadowMap(屏幕空间的阴影映射技术)