# Tensorflow 1.x 和 Pytorch 中 Conv2d Padding的区别

Tensorflow 和 Pytorch 中 Conv2d Padding的区别

[En]

It can be in three forms: integer, binary, and string.

3. 字符串(str)。字符串模式可选参数为 validsamevalid模式表示不充填， same模式表示输入与输出的形状大小保持一致(&#x4F46;&#x662F;&#x4EC5;&#x4EC5;&#x9002;&#x7528;&#x4E8E;stride=1&#x7684;&#x60C5;&#x51B5;&#xFF01;&#xFF01;&#xFF01;)

[En]

The final output shape calculation formula is as follows:

H o u t = ⌊ H i n + 2 × padding [ 0 ] − dilation [ 0 ] × ( kernel_size [ 0 ] − 1 ) − 1 stride [ 0 ] + 1 ⌋ H_{out} = \left\lfloor\frac{H_{in} + 2 \times \text{padding}[0] – \text{dilation}[0] \times (\text{kernel_size}[0] – 1) – 1}{\text{stride}[0]} + 1\right\rfloor H o u t ​=⌊stride [0 ]H i n ​+2 ×padding [0 ]−dilation [0 ]×(kernel_size [0 ]−1 )−1 ​+1 ⌋

W o u t = ⌊ W i n + 2 × padding [ 1 ] − dilation [ 1 ] × ( kernel_size [ 1 ] − 1 ) − 1 stride [ 1 ] + 1 ⌋ W_{out} = \left\lfloor\frac{W_{in} + 2 \times \text{padding}[1] – \text{dilation}[1] \times (\text{kernel_size}[1] – 1) – 1}{\text{stride}[1]} + 1\right\rfloor W o u t ​=⌊stride [1 ]W i n ​+2 ×padding [1 ]−dilation [1 ]×(kernel_size [1 ]−1 )−1 ​+1 ⌋

1. 字符串。 字符串是可选 SAMEVALIDSAME模式下，根据以下公式计算各方向的padding:

P a d H = m a x ( f i l t e r H − ( I n H % s t r i d e H ) , 0 ) Pad_{H} = max(filter_H – (In_H \space \% \space stride_H),0)P a d H ​=m a x (f i l t e r H ​−(I n H ​%s t r i d e H ​),0 )

P a d W = m a x ( f i l t e r W − ( I n W % s t r i d e W ) , 0 ) Pad_{W} = max(filter_W – (In_W \space \% \space stride_W),0)P a d W ​=m a x (f i l t e r W ​−(I n W ​%s t r i d e W ​),0 )

P a d t o p = ⌊ P a d H 2 ⌋ Pad_{top} =\left\lfloor \frac{Pad_{H}}{2} \right\rfloor P a d t o p ​=⌊2 P a d H ​​⌋

P a d b o t t o m = P a d H − P a d t o p Pad_{bottom} = Pad_{H} – Pad_{top}P a d b o t t o m ​=P a d H ​−P a d t o p ​

P a d l e f t = ⌊ P a d W 2 ⌋ Pad_{left} = \left\lfloor \frac{Pad_{W}}{2} \right\rfloor P a d l e f t ​=⌊2 P a d W ​​⌋

P a d r i g h t = P a d W − P a d l e f t Pad_{right} = Pad_{W} – Pad_{left}P a d r i g h t ​=P a d W ​−P a d l e f t ​

O u t H = I n H s t r i d e Out_{H} = \frac{In_{H}}{stride}O u t H ​=s t r i d e I n H ​​

O u t W = I n W s t r i d e Out_{W} = \frac{In_{W}}{stride}O u t W ​=s t r i d e I n W ​​

VALID模式下，与pytorch一样，直接不padding 。当输入形状不能整除卷积核大小，滑动窗口滑到最右边发现无法满足卷积条件时，多出来的那部分直接会被舍弃掉，输出的形状为：
O u t H = I n H − f i l t e r H + 1 s t r i d e H Out_{H} = \frac{In_H – filter_H + 1}{stride_{H}}O u t H ​=s t r i d e H ​I n H ​−f i l t e r H ​+1 ​

O u t W = I n W − f i l t e r W + 1 s t r i d e W Out_{W} = \frac{In_W – filter_W + 1}{stride_{W}}O u t W ​=s t r i d e W ​I n W ​−f i l t e r W ​+1 ​

O u t H = I n H + pad t o p + pad b o t t o m − dilation H × ( filter H − 1 ) − 1 stride H Out_{H} = \frac{In_{H} + \text{pad}{top}+\text{pad}{bottom} – \text{dilation}{H} \times (\text{filter}{H}- 1) – 1}{\text{stride}_{H}}O u t H ​=stride H ​I n H ​+pad t o p ​+pad b o t t o m ​−dilation H ​×(filter H ​−1 )−1 ​

O u t W = I n W + pad r i g h t + pad l e f t − dilation W × ( filter W − 1 ) − 1 stride W Out_{W} = \frac{In_{W} + \text{pad}{right}+\text{pad}{left} – \text{dilation}{W} \times (\text{filter}{W}- 1) – 1}{\text{stride}_{W}}O u t W ​=stride W ​I n W ​+pad r i g h t ​+pad l e f t ​−dilation W ​×(filter W ​−1 )−1 ​

&#x6CE8;&#x610F;: Tensorflow 和 Pytorch 中Conv2D 对输出的形状大小的小数部分处理不一样。Pytorch中都是做 &#x622A;&#x65AD;&#x5904;&#x7406; ，或者说 &#x5411;&#x4E0B;&#x53D6;&#x6574; ，例如 输出若为 117.5 则直接取 117；而Tensorflow中对小数的处理采用的则是 &#x5411;&#x4E0A;&#x53D6;&#x6574; ，输出若为117.5，则取128

https://www.tensorflow.org/api_docs/python/tf/nn/conv2d

https://pytorch.org/docs/stable/generated/torch.nn.Conv2d.html

Original: https://blog.csdn.net/daimashiren/article/details/123708688
Author: daimashiren
Title: Tensorflow 1.x 和 Pytorch 中 Conv2d Padding的区别

(0)

### 大家都在看

• #### 数仓大宽表

个人建议是：宽表可以从很多的表中结合数据，但是鉴于宽表自身的缺陷， 不建议过”宽”，在无法提前做测试的情况下，尽量只使用”小宽表”，…

人工智能 2023年7月17日
0112
• #### 使用NWPU VHR-10数据集训练Faster R-CNN模型

一、所需文件下载链接 二、基础环境配置 三、训练及测试过程 使用Faster R-CNN算法在NWPU VHR-10数据集上实现目标检测。使用Faster R-CNN算法在VOC2…

人工智能 2023年7月9日
0143
• #### python如何安装keras和tensorflow

目录 一. 通过pip install kears 安装 keras 二. 安装tensorflow * 1.报错 No module named ‘tensorflo…

人工智能 2023年5月26日
0197
• #### PyTorch是什么？它有什么特点

人工智能 2024年1月3日
0149
• #### 【PyTorch教程】pytorch入门系列 ——土堆教程的目录及索引

抵扣说明： 1.余额是钱包充值的虚拟货币，按照1:1的比例进行支付金额的抵扣。2.余额无法直接购买下载，可以购买VIP、付费专栏及课程。 Original: https://blo…

人工智能 2023年7月20日
0165
• #### 网络安全笔记-网络设备专场（路由器、交换机、防火墙）

路由器 简单介绍： 路由器是什么 路由器（Router）是连接两个或多个网络的硬件设备，在网络间起网关的作用，可以称之为网关设备。是读取每一个数据包中的地址然后决定如何传送的专用智…

人工智能 2023年5月30日
0228
• #### Kaggle房价预测 项目学习笔记

人工智能 2023年6月18日
0208
• #### Seaborn绘制箱型图

公众号：尤而小屋作者：Peter编辑：Peter 大家好，我是Peter~ 本文介绍的是如何使用 seaborn 的 boxplot 方法来绘制箱型图，先看看部分图形的绘制效果： …

人工智能 2023年7月14日
0204
• #### 【机器学习】：Xgboost和GBDT的不同与比较

【与传统GBDT相比，XGBoost有何不同】 基函数不同。GBDT只用CART树，XGBoost除了CART，也支持线性函数。 目标不同。具体体现在结点分裂策略与正则化。GBDT…

人工智能 2023年6月6日
0215
• #### Logistic 回归的决策边界

决策边界的重要性/意义在使用数据集训练机器学习模型之后，我们通常需要可视化特征空间中数据点的类。散点图上的决策边界就是出于这个目的。而散点图更是包含着属于不同类别的数据点（用颜色或…

人工智能 2023年6月17日
0163
• #### TensorFlow实现多输入源多输出

; TensorFlow实现多输入多输出模型 有时我们的输入数据不只一个，会存在多个输入源，多个输出源，对于这种情况我们使用 Sequential显然是不行的，因为 Sequent…

人工智能 2023年5月24日
0215
• #### KBQA_多轮对话——模型源码解析（一）Pickle模块功能详解

KBQA_多轮对话——模型源码解析（一）Pickle模块功能详解 pickle — Python 对象序列化的基本功能 * 1、pickle基本概念 2、pickle …

人工智能 2023年5月30日
0211
• #### opencv 场景文字识别

opencv 场景文字识别 文章目录 opencv 场景文字识别 前言 * 目标 API – 场景文字检测：cv::dnn::TextDetectionModel 场景…

人工智能 2023年7月20日
0110
• #### 论文浅尝 | 记忆推理：最近邻知识图谱嵌入

笔记整理：孙硕硕，东南大学硕士，研究方向为根因溯源。Citation: Zhang N, Xie X, Chen X, et al. Reasoning Through Memor…

人工智能 2023年6月1日
0144
• #### 【数据库系统原理】实体-联系模型

实体-联系模型 文章目录 实体-联系模型 * 一、实体和实体集 – (1)实体的基本概念 (2)实体集的基本概念 二、联系 – (1)联系的基本概念 (2)…

人工智能 2023年6月5日
0181
• #### c++ 文字识别_AI算法测试——语音识别（ASR）模型评估指标探索

如上图所示，在将语音转换为文本时，我们通过微信发送了一个语音。语音识别引擎首先将语音分成帧(切成几个小片段)，然后使用声学模型将每一帧的声学特征识别为“状态”。将多个状态组合成音素…

人工智能 2023年5月27日
0112