转载请注明出处:http://www.cnblogs.com/willnote/p/6746668.html

图示说明

  • 用一个3x3的网格在一个28x28的图像上做切片并移动

  • 移动到边缘上的时候,如果不超出边缘,3x3的中心就到不了边界

  • 因此得到的内容就会缺乏边界的一圈像素点,只能得到26x26的结果

  • 而可以越过边界的情况下,就可以让3x3的中心到达边界的像素点

  • 超出部分的矩阵补零

代码说明

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

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

  • filter矩阵 F×F,卷积核

  • stride值 S,步长

  • 输出宽高为 new_height、new_width

在Tensorflow中对padding定义了两种取值:VALID、SAME。下面分别就这两种定义进行解释说明。

VALID

new_height = new_width = (W – F + 1) / S  #结果向上取整
  • 含义:new_height为输出矩阵的高度
  • 说明:VALID方式不会在原有输入矩阵的基础上添加新的值,输出矩阵的大小直接按照公式计算即可

SAME

new_height = new_width = W / S    #结果向上取整
  • 含义:new_height为输出矩阵的高度
  • 说明:对W/S的结果向上取整得到W"包含"多少个S
pad_needed_height = (new_height – 1)  × S + F - W
  • 含义:pad_needed_height为输入矩阵需要补充的高度
  • 说明:因为new_height是向上取整的结果,所以先-1得到W可以完全包裹住S的块数,之后乘以S得到这些块数的像素点总和,再加上filer的F并减去W,即得到在高度上需要对W补充多少个像素点才能满足new_height的需求
pad_top = pad_needed_height / 2    #结果取整
  • 含义:pad_top为输入矩阵上方需要添加的高度
  • 说明:将上一步得到的pad_needed_height除以2作为矩阵上方需要扩充0的像素点数
pad_bottom = pad_needed_height - pad_top
  • 含义:pad_bottom为输入矩阵下方需要添加的高度
  • 说明: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/python/ops/nn_ops.py中关于padding的源码部分

参考

  1. Tensorflow中卷积的padding操作
  2. TensorFlow 深度学习笔记 卷积神经网络
  3. Tensorflow官方API padding说明

Tensorflow中的padding操作的更多相关文章

  1. 记录:TensorFlow 中的 padding 方式

    TensorFlow 中卷积操作和池化操作中都有一个参数 padding,其可选值有 ['VALID', 'SAME']. 在 TensorFlow 文档中只是给出了输出张量的维度计算方式,但是并没有 ...

  2. Tensorflow中Tensor对象的常用方法(持续更新)

    Tensor是Tensorflow中重要的对象.下面是Tensor的常用方法,后面还会写一篇随笔记录Variable的用法. 1. 生成一个(常)Tensor对象 >>>A = tf ...

  3. 第十四节,TensorFlow中的反卷积,反池化操作以及gradients的使用

    反卷积是指,通过测量输出和已知输入重构未知输入的过程.在神经网络中,反卷积过程并不具备学习的能力,仅仅是用于可视化一个已经训练好的卷积神经网络,没有学习训练的过程.反卷积有着许多特别的应用,一般可以用 ...

  4. 【TensorFlow】一文弄懂CNN中的padding参数

    在深度学习的图像识别领域中,我们经常使用卷积神经网络CNN来对图像进行特征提取,当我们使用TensorFlow搭建自己的CNN时,一般会使用TensorFlow中的卷积函数和池化函数来对图像进行卷积和 ...

  5. 基于TensorFlow理解CNN中的padding参数

    1 TensorFlow中用到padding的地方 在TensorFlow中用到padding的地方主要有tf.nn.conv2d(),tf.nn.max_pool(),tf.nn.avg_pool( ...

  6. Tensorflow中卷积的padding方式

    根据tensorflow中的Conv2D函数,先定义几个基本符号: 输入矩阵W*W,这里只考虑输入宽高相等的情况,如果不相等,推导方法一样 filter矩阵F*F,卷积核 stride值S,步长 输出 ...

  7. python/numpy/tensorflow中,对矩阵行列操作,下标是怎么回事儿?

    Python中的list/tuple,numpy中的ndarrray与tensorflow中的tensor. 用python中list/tuple理解,仅仅是从内存角度理解一个序列数据,而非数学中标量 ...

  8. 第二十二节,TensorFlow中的图片分类模型库slim的使用、数据集处理

    Google在TensorFlow1.0,之后推出了一个叫slim的库,TF-slim是TensorFlow的一个新的轻量级的高级API接口.这个模块是在16年新推出的,其主要目的是来做所谓的“代码瘦 ...

  9. 第十八节,TensorFlow中使用批量归一化(BN)

    在深度学习章节里,已经介绍了批量归一化的概念,详情请点击这里:第九节,改善深层神经网络:超参数调试.正则化以优化(下) 神经网络在进行训练时,主要是用来学习数据的分布规律,如果数据的训练部分和测试部分 ...

随机推荐

  1. Android开发艺术1之Activity的生命周期

    作为<Android开发艺术探索>这本书的第一篇博客,我就多说几句.本系列博客旨在对书中相关内容进行解读,简化,提供一个入门到提高的流程.不敢说书评,也不能说教程,只希望对有些人有帮助就好 ...

  2. QQ_MultiTalkServer

    package test_teacher;import java.net.*;import java.io.*;public class MultiTalkServer{    public stat ...

  3. JavaScript变量相关问题

    本文重在探讨JavaScript变量包含的两种不同数据类型的值--基本类型值和引用类型值的区别.在此外稍微带过ECMAScript和JavaScript的关系. 题为JavaScript变量,但更具体 ...

  4. 由if-else,switch代替方案引起的思考

    关键词:条件判断,多态,策略模式,哈希表,字典map 笔者在用python实现事件驱动后,发现python是没有提供switch语句,python官方推荐多用字典来代替switch来实现,这让我就觉得 ...

  5. ios 苹果手机硬件摘要

    IPhone4 * 2010年发布. * A4单核处理器. * 3.5英寸Retina显示屏(视网膜屏幕),960x640像素分辨率. * 后置摄像头500万像素. * 前置摄像头30万像素. IPh ...

  6. php面向对象(一)---2017-04-17

    重点:定义类与实例化类:访问修饰符:构造函数 一.面向对象 面向对于与面向过程的主要区别在于:前者包含类和对象的概念 二.类和对象   1.类是由众多对象抽象(归纳总结)出来的东西  代表所有对象的特 ...

  7. [编织消息框架][消息服务]jmx

    JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序.设备.系统等植入管理功能的框架,使用的是RMI技术. 比较经典的应用jdk bin目录下 jcons ...

  8. websocket技术分享

    开发环境: spring3+tomcat7+spring-websocket4 运行环境: windows.Linux 一.背景: 产品将要发布的消息或其他需要让客户提前知道的消息,在客户端和服务端建 ...

  9. CF Educational Codeforces Round 10 D. Nested Segments 离散化+树状数组

    题目链接:http://codeforces.com/problemset/problem/652/D 大意:给若干个线段,保证线段端点不重合,问每个线段内部包含了多少个线段. 方法是对所有线段的端点 ...

  10. Linux 系统管理06--磁盘管理

    Linux系统管理06——磁盘管理 一.磁盘结构 1.硬盘的物理结构 盘片:硬盘有多个盘片,每个盘片2面 磁头:每面一个磁头 2.硬盘的数据结构 扇区:盘片被分为多个扇形区域,每个扇形区存放512字节 ...