TensorFlow tf.nn.max_pool实现池化操作方式


Posted in Python onJanuary 04, 2020

max pooling是CNN当中的最大值池化操作,其实用法和卷积很类似

有些地方可以从卷积去参考【TensorFlow】 tf.nn.conv2d实现卷积的方式

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

参数是四个,和卷积很类似:

第一个参数value:需要池化的输入,一般池化层接在卷积层后面,所以输入通常是feature map,依然是[batch, height, width, channels]这样的shape

第二个参数ksize:池化窗口的大小,取一个四维向量,一般是[1, height, width, 1],因为我们不想在batch和channels上做池化,所以这两个维度设为了1

第三个参数strides:和卷积类似,窗口在每一个维度上滑动的步长,一般也是[1, stride,stride, 1]

第四个参数padding:和卷积类似,可以取'VALID' 或者'SAME'

返回一个Tensor,类型不变,shape仍然是[batch, height, width, channels]这种形式

示例源码:

假设有这样一张图,双通道

第一个通道:

TensorFlow tf.nn.max_pool实现池化操作方式

第二个通道:

TensorFlow tf.nn.max_pool实现池化操作方式

用程序去做最大值池化:

import tensorflow as tf
 
a=tf.constant([
  [[1.0,2.0,3.0,4.0],
  [5.0,6.0,7.0,8.0],
  [8.0,7.0,6.0,5.0],
  [4.0,3.0,2.0,1.0]],
  [[4.0,3.0,2.0,1.0],
   [8.0,7.0,6.0,5.0],
   [1.0,2.0,3.0,4.0],
   [5.0,6.0,7.0,8.0]]
 ])
 
a=tf.reshape(a,[1,4,4,2])
 
pooling=tf.nn.max_pool(a,[1,2,2,1],[1,1,1,1],padding='VALID')
with tf.Session() as sess:
 print("image:")
 image=sess.run(a)
 print (image)
 print("reslut:")
 result=sess.run(pooling)
 print (result)

这里步长为1,窗口大小2×2,输出结果:

image:
[[[[ 1. 2.]
 [ 3. 4.]
 [ 5. 6.]
 [ 7. 8.]]
 
 [[ 8. 7.]
 [ 6. 5.]
 [ 4. 3.]
 [ 2. 1.]]
 
 [[ 4. 3.]
 [ 2. 1.]
 [ 8. 7.]
 [ 6. 5.]]
 
 [[ 1. 2.]
 [ 3. 4.]
 [ 5. 6.]
 [ 7. 8.]]]]
reslut:
[[[[ 8. 7.]
 [ 6. 6.]
 [ 7. 8.]]
 
 [[ 8. 7.]
 [ 8. 7.]
 [ 8. 7.]]
 
 [[ 4. 4.]
 [ 8. 7.]
 [ 8. 8.]]]]

池化后的图就是:

TensorFlow tf.nn.max_pool实现池化操作方式

证明了程序的结果是正确的。

我们还可以改变步长

pooling=tf.nn.max_pool(a,[1,2,2,1],[1,2,2,1],padding='VALID')

最后的result就变成:

reslut:
[[[[ 8. 7.]
 [ 7. 8.]]
 
 [[ 4. 4.]
 [ 8. 8.]]]]

以上这篇TensorFlow tf.nn.max_pool实现池化操作方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实例之wxpython中Frame使用方法
Jun 09 Python
Django中实现点击图片链接强制直接下载的方法
May 14 Python
Python按行读取文件的简单实现方法
Jun 22 Python
django上传图片并生成缩略图方法示例
Dec 11 Python
Python读取Word(.docx)正文信息的方法
Mar 15 Python
python tools实现视频的每一帧提取并保存
Mar 20 Python
Python爬虫库BeautifulSoup获取对象(标签)名,属性,内容,注释
Jan 25 Python
python matplotlib 绘图 和 dpi对应关系详解
Mar 14 Python
Python sklearn中的.fit与.predict的用法说明
Jun 28 Python
Python3爬虫发送请求的知识点实例
Jul 30 Python
python反扒机制的5种解决方法
Feb 06 Python
python库sklearn常用操作
Aug 23 Python
TensorFlow tf.nn.conv2d实现卷积的方式
Jan 03 #Python
Python调用钉钉自定义机器人的实现
Jan 03 #Python
pytorch中的上采样以及各种反操作,求逆操作详解
Jan 03 #Python
pytorch 获取tensor维度信息示例
Jan 03 #Python
pytorch中torch.max和Tensor.view函数用法详解
Jan 03 #Python
pytorch逐元素比较tensor大小实例
Jan 03 #Python
pytorch 改变tensor尺寸的实现
Jan 03 #Python
You might like
当海贼王变成JOJO风
2020/03/02 日漫
在线竞拍系统的PHP实现框架(一)
2006/10/09 PHP
php中3des加密代码(完全与.net中的兼容)
2012/08/02 PHP
PHP 读取大文件的X行到Y行内容的实现代码
2013/06/24 PHP
PHP CURL获取返回值的方法
2014/05/04 PHP
递归实现php数组转xml的代码分享
2015/05/14 PHP
PHP实现通过正则表达式替换回调的内容标签
2015/06/15 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
2017/09/22 PHP
tp5.1 框架数据库高级查询技巧实例总结
2020/05/25 PHP
Jquery获取复选框被选中值的简单方法
2013/07/04 Javascript
JS闭包用法实例分析
2017/03/27 Javascript
JavaScript之事件委托实例(附原生js和jQuery代码)
2017/07/22 jQuery
js实现鼠标拖拽多选功能示例
2017/08/01 Javascript
jquery学习笔记之无new构建详解
2017/12/07 jQuery
基于node下的http小爬虫的示例代码
2018/01/11 Javascript
详解Vue+axios+Node+express实现文件上传(用户头像上传)
2018/08/10 Javascript
小程序实现长按保存图片的方法
2019/12/31 Javascript
[00:44]2016完美“圣”典 风云人物:Mikasa宣传片
2016/12/07 DOTA
[44:40]Serenity vs Pain 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python+selenium实现163邮箱自动登陆的方法
2017/12/31 Python
Python之inspect模块实现获取加载模块路径的方法
2018/10/16 Python
在python中实现调用可执行文件.exe的3种方法
2019/07/07 Python
python简单实现矩阵的乘,加,转置和逆运算示例
2019/07/10 Python
Python使用lambda表达式对字典排序操作示例
2019/07/25 Python
python manage.py runserver流程解析
2019/11/08 Python
Python如何测试stdout输出
2020/08/10 Python
Python之多进程与多线程的使用
2021/02/23 Python
7款设计巧妙的css3飘带状3D立体效果的导航菜单和表单窗口
2013/02/04 HTML / CSS
什么造成了Java里面的异常
2016/04/24 面试题
社团成立邀请函
2014/01/08 职场文书
保安队长职务说明书
2014/02/23 职场文书
道路交通安全实施方案
2014/03/12 职场文书
出国英文推荐信
2014/05/10 职场文书
工作疏忽、懈怠的检讨书
2014/09/11 职场文书
“四风”问题的主要表现和危害思想汇报
2014/09/19 职场文书
食品质检员岗位职责
2015/04/08 职场文书