tf.nn.max_pool()和tf.nn.avg_pool()是TensorFlow中实现最大池化和平均池化的函数,在卷积神经网络中比较核心的方法。

有些和卷积很相似,可以参考TensorFlow基础篇(七)——tf.nn.conv2d()(附代码详解)

两个函数调用方式相同,下边讲解以tf.nn.max_pool()为例子进行加讲解。


函数格式:

tf.nn.max_pool(value, ksize, strides, padding, name=None)

参数说明:

第一个参数value:需要做池化的输入图像,输入feaure map,因为池化在卷积后边。shape为[batch, in_height, in_width, in_channels]:

batch:训练时一个batch的图片数量
in_height:输入图像的高度
in_width:输入图像的宽度
in_channels:输入feature map的数量
第二个参数ksize:类似于卷积的过滤器,池化窗口的大小,是一个长度为4的一维数组,但是这个数组的第一个和最后一数必须为1,即[1, height, width, 1]。这意味着池化层的过滤器是不可以在batch和channels上做池化。实际应用中,使用最多的过滤器尺寸为[1, 2, 2, 1]或者[1, 3, 3, 1]。

height:过滤器的高度
width:过滤器的宽度
第三个参数strides:不同维度上的步长,是一个长度为4的一维向量,[ 1, strides, strides, 1],第一维和最后一维的数字要求必须是1。因为卷积层的步长只对矩阵的长和宽有效。

第四个参数padding:string类型,是否考虑边界,值为“SAME”和“VALID”,"SAME"是考虑边界,不足的时候用填充周围,"VALID"则不考虑边界。。

返回tensor,shape仍然是[batch, height, width, channels]这种形式。

下边通过例子来说明tf.nn.max_pool()函数的用法:

输入是1张 3*3 大小的feature map,数量是1,过滤器大小是[1, 2, 2, 1],步长是[1,1,1,1],padding值时'VALID',最后得到一个 2*2 的feature map。1张图最后输出就是一个 shape为[1,2,2,1] 的tensor。

#!/usr/bin/env python
# -*- coding:utf-8 -*-import tensorflow as tfvalue = tf.Variable(tf.random_normal([1, 3, 3, 1]))
ksize = [1, 2, 2, 1]pool = tf.nn.max_pool(value, ksize, strides=[1, 1, 1, 1], padding='VALID')with tf.Session() as sess:# 初始化变量op_init = tf.global_variables_initializer()sess.run(op_init)print("value的值为:")print(sess.run(value))print("池化值为:")print(sess.run(pool))

执行过程如下:

运行结果:

TensorFlow基础篇(六)——tf.nn.max_pool()和tf.nn.avg_pool()相关推荐

  1. 【TensorFlow】TensorFlow函数精讲之tf.nn.max_pool()和tf.nn.avg_pool()

    tf.nn.max_pool()和tf.nn.avg_pool()是TensorFlow中实现最大池化和平均池化的函数,在卷积神经网络中比较核心的方法. 有些和卷积很相似,可以参考TensorFlow ...

  2. 深度学习(10)TensorFlow基础操作六: 数学运算

    深度学习(10)TensorFlow基础操作六: 数学运算 1. Operation type 2. + - * / % // 3. tf.math.log & tf.exp 4. log2, ...

  3. Nginx实战基础篇六 通过源码包编译安装部署LNMP搭建Discuz论坛

    Nginx实战基础篇六 通过源码包编译安装部署LNMP搭建Discuz论坛 版权声明: 本文遵循"署名非商业性使用相同方式共享 2.5 中国大陆"协议 您可以自由复制.发行.展览. ...

  4. Vue基础篇六:Vue使用JSX进行动态渲染

    系列文章目录 Vue基础篇一:编写第一个Vue程序 Vue基础篇二:Vue组件的核心概念 Vue基础篇三:Vue的计算属性与侦听器 Vue基础篇四:Vue的生命周期(秒杀案例实战) Vue基础篇五:V ...

  5. TensorFlow基础篇(二)——tf.get_variable()和tf.get_variable_scope()

    1.tf.get_variable() tf.get_variable()用来创建变量时,和tf.Variable()函数的功能基本等价. v = tf.get_variable("v&qu ...

  6. TensorFlow基础篇(一)——tf.train.exponential_decay()

    tf.train.exponential_decay实现指数衰减率.通过这个函数,可以先使用较大的学习率来快速得到一个比较优的解,然后随着迭代的继续逐步减小学习率,使得模型在训练后期更加稳定. tf. ...

  7. Tensorflow[基础篇]——LSTM的理解与实现

    前言 本文参考了tensorflow github里面的实现的lstm的教程代码6_lstm.ipynb.因为这代码即实现了lstm,也实操了tf的内容,可以说是一箭双雕. 源码地址:https:// ...

  8. TensorFlow基础篇(七)——tf.nn.conv2d()

    tf.nn.conv2d是TensorFlow里面实现卷积的函数,是搭建卷积神经网络比较核心的一个方法. 函数格式: tf.nn.conv2d(input, filter, strides, padd ...

  9. TensorFlow基础篇(四)—— tf.nn.relu()

    tf.nn.relu()函数是将大于0的数保持不变,小于0的数置为0,函数如图1所示. ReLU函数是常用的神经网络激活函数之一. 下边为ReLU例子: import tensorflow as tf ...

最新文章

  1. 三星s7android7,三星S7/S7 Edge国行成功吃上牛轧糖 今日升级安卓7.0
  2. 利用Matlab设计滤波器(FDAT)
  3. 如何导入一个项目 myeclipse
  4. Win32程序设计(Windows程序设计机理)
  5. 95-140-112-源码-transform-算子split 和 select
  6. 019.nexus搭建docker镜像仓库/maven仓库
  7. python怎么读写文件-Python 文件I/O
  8. Fetion2008 分析 Part1:准备工作
  9. Android 滑动界面实现---Scroller类别 从源代码和开发文档了解(让你的移动布局)...
  10. hexo theme next7.8 主题美化
  11. 30种EMC标准电路
  12. jclasslib的使用
  13. 用excel将有规律的数据随机打乱
  14. whai is gradient vanishing and exploding ?
  15. 【Vue】13.解决安卓手机上调出软键盘,屏幕背景被压缩的问题
  16. 实验三 面向对象(二)(预习报告)
  17. 万字长文读透 Redis
  18. 《培生小学英语分级阅读80篇 五年级》勘误表
  19. 线性模型是否真的能给出一个很好的解释?
  20. autoCAD 设置 AutoCAD 系统配置

热门文章

  1. 计算几何-Andrew法-凸包
  2. 技术人创业建站简略指南(第一季)
  3. ajax json 渲染 html,jQuery+Ajax+js实现请求json格式数据并渲染到html页面操作示例
  4. mysql触发器delimiter_MySQL的触发器创建之注意事项(有关delimiter)
  5. 博客文件第二部分 Linux Shell高级编程技巧——第一章 深入讨论
  6. Qt linux双屏,qt5 多屏显示
  7. 瑞星2009网络版-服务器端安装和配置
  8. 开源syslog服务器_开源API网关Kong基本介绍和安装验证
  9. 修改GDAL库支持RPC像方改正模型
  10. MUI+Htmlplus开发APP实现页面之间传值