Tensorflow中卷积的padding操作

上海站 | 高性能计算之GPU CUDA培训

4月13-15日 Tensorflow中卷积的padding操作_第1张图片三天密集式学习  快速带你晋级 阅读全文 >


正文共975字,2张图,预计阅读时间3分钟。


之前一直对tensorflow的padding一知半解,直到查阅了tensorflow/core/kernels/ops_util.cc中的Get2dOutputSizeVerbose函数,才恍然大悟,下面是具体的介绍:


实际上tensorflow官方API里有介绍!!


根据tensorflow中的conv2d函数,我们先定义几个基本符号


1、输入矩阵 W×W,这里只考虑输入宽高相等的情况,如果不相等,推导方法一样,不多解释。

2、filter矩阵 F×F,卷积核

3、stride值 S,步长

4、输出宽高为 new_height、new_width


当然还有其他的一些具体的参数,这里就不再说明了。


我们知道,padding的方式在tensorflow里分两种,一种是VALID,一种是SAME,下面分别介绍这两种方式的实际操作方法。


如果padding=‘VALID’

new_height = new_width = (W – F + 1) / S (结果向上取整)


也就是说,conv2d的VALID方式不会在原有输入的基础上添加新的像素(假定我们的输入是图片数据,因为只有图片才有像素),输出矩阵的大小直接按照公式计算即可。


2、如果padding=‘SAME’

new_height = new_width = W / S (结果向上取整)


在高度上需要pad的像素数为:


pad_needed_height = (new_height – 1)  × S + F - W


根据上式,输入矩阵上方添加的像素数为


pad_top = pad_needed_height / 2  (结果取整)


下方添加的像素数为


pad_down = pad_needed_height - pad_top


以此类推,在宽度上需要pad的像素数和左右分别添加的像素数为


pad_needed_width = (new_width – 1)  × S + F - W

pad_left = pad_needed_width  / 2 (结果取整)

pad_right = pad_needed_width – pad_left


至此,关于tensorflow的卷积padding操作介绍完毕,下面是关于此操作的源码(Get2dOutputSizeVerbose函数的部分节选),我也不会用MarkDown,索性直接截图了,以供参考。


Tensorflow中卷积的padding操作_第2张图片


原文链接:https://www.jianshu.com/p/05c4f1621c7e


查阅更为简洁方便的分类文章以及最新的课程、产品信息,请移步至全新呈现的“LeadAI学院官网”:

www.leadai.org


请关注人工智能LeadAI公众号,查看更多专业文章

Tensorflow中卷积的padding操作_第3张图片

大家都在看

640.png?

LSTM模型在问答系统中的应用

基于TensorFlow的神经网络解决用户流失概览问题

最全常见算法工程师面试题目整理(一)

最全常见算法工程师面试题目整理(二)

TensorFlow从1到2 | 第三章 深度学习革命的开端:卷积神经网络

装饰器 | Python高级编程

今天不如来复习下Python基础

你可能感兴趣的:(Tensorflow中卷积的padding操作)