转载请注明出处: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. 想系统的学习一下项目管理,推荐PRINCE2

    参加pmp培训,考个pmp证书就足矣应付面试. 个人并不推荐看那些外文原版书籍,我看过一两本,水平与实用性并不是你想象的那么好,除非你是做理论研究,为了发表论文. 另一本就推荐prince2的教材,p ...

  2. 老李推荐:第5章5节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 获取系统服务引用

    老李推荐:第5章5节<MonkeyRunner源码剖析>Monkey原理分析-启动运行: 获取系统服务引用   上一节我们描述了monkey的命令处理入口函数run是如何调用optionP ...

  3. Oracle DBA管理包脚本系列(二)

    该系列脚本结合日常工作,方便DBA做数据管理.迁移.同步等功能,以下为该系列的脚本,按照功能划分不同的包.功能有如下: 1)数据库对象管理(添加.修改.删除.禁用/启用.编译.去重复.闪回.文件读写. ...

  4. 极化SAR图像基础知识(2)

    本篇主要关注物理含义 1.极化 电磁波在传播时,传播的方向和电场.磁场相互垂直,我们把电波的电场方向叫电波的极化.(i.e.依据电场E的方向来定义电磁波的极化). 如果电场矢量端点随时间变化的轨迹是一 ...

  5. sencha touch 总结

    Ext.define("CM.product.MainviewListModel", { extend: "Ext.data.Model", config: { ...

  6. 为部署ASP.NET Core准备:使用Hyper-V安装Ubuntu Server 16.10

    概述 Hyper-V是微软的一款虚拟化产品,和VMWare一样采用的hypervisor技术.它已经被内嵌到Win10系统内,我们只需要进行简单的安装即可.但是前提是要确保你的机器已经启用虚拟化,可以 ...

  7. 为什么不能将客户端的连接请求跳转或转发到本机lo回环接口上?

    一.为什么不能将本机的请求跳转/转发到回环接口上? 如上图一样,服务器对外只开放了一个80端口,但是web服务监听在了lo 接口上8080端口上,现在要实现外网通过访问服务器的80端口,来提供web服 ...

  8. Spring aop切面插入事物回滚

    <!-- tx标签配置 事物--> <tx:advice id="txadvice" transaction-manager="transactionM ...

  9. 关于mysql查询区分大小写

    使用查询语句时,携带collate utf8_bin 在SQL语句中使用collate 使用collate子句,能够为一个比较覆盖任何默认校对规则.collate可以用于多种SQL语句中,比如wher ...

  10. DES/des3 加密程序

    1 #ifndef POLARSSL_DES_H #define POLARSSL_DES_H #define DES_ENCRYPT 1 #define DES_DECRYPT 0 #define ...