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 相关文章推荐
Python3控制路由器——使用requests重启极路由.py
May 11 Python
python中利用队列asyncio.Queue进行通讯详解
Sep 10 Python
对Python 数组的切片操作详解
Jul 02 Python
python 发送和接收ActiveMQ消息的实例
Jan 30 Python
Python模拟百度自动输入搜索功能的实例
Feb 14 Python
python输入多行字符串的方法总结
Jul 02 Python
python删除列表元素的三种方法(remove,pop,del)
Jul 22 Python
python中append实例用法总结
Jul 30 Python
django 控制页面跳转的例子
Aug 06 Python
Python pandas库中的isnull()详解
Dec 26 Python
基于Python实现简单学生管理系统
Jul 24 Python
Python用Jira库来操作Jira
Dec 28 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
php中使用sftp教程
2015/03/30 PHP
Javascript中的Split使用方法与技巧
2007/03/09 Javascript
jquery animate图片模向滑动示例代码
2011/01/26 Javascript
IE6,IE7,IE8下使用Javascript记录光标选中范围(已补全)
2011/08/28 Javascript
字符串的replace方法应用浅析
2011/12/06 Javascript
JQuery触发事件例如click
2013/09/11 Javascript
java、javascript实现附件下载示例
2014/08/14 Javascript
jquery利用命名空间移除绑定事件的方法
2015/03/11 Javascript
JavaScript中iframe实现局部刷新的几种方法汇总
2016/01/06 Javascript
JS图片定时翻滚效果实现方法
2016/06/21 Javascript
JS实现简易刻度时钟示例代码
2017/03/11 Javascript
详解Vue Elementui中的Tag与页面其它元素相互交互的两三事
2018/09/25 Javascript
如何将百度地图包装成Vue的组件的方法步骤
2019/02/12 Javascript
mpvue 页面预加载新增preLoad生命周期的两种方式
2019/10/17 Javascript
python之matplotlib学习绘制动态更新图实例代码
2018/01/23 Python
PyQt5每天必学之日历控件QCalendarWidget
2018/04/19 Python
Python 中的range(),以及列表切片方法
2018/07/02 Python
python获取服务器响应cookie的实例
2018/12/28 Python
python感知机实现代码
2019/01/18 Python
Python中xml和dict格式转换的示例代码
2019/11/07 Python
用python爬取历史天气数据的方法示例
2019/12/30 Python
Python基础之高级变量类型实例详解
2020/01/03 Python
python读取图片的几种方式及图像宽和高的存储顺序
2020/02/11 Python
python 使用递归的方式实现语义图片分割功能
2020/07/16 Python
Python调用高德API实现批量地址转经纬度并写入表格的功能
2021/01/12 Python
WWE美国职业摔角官方商店:WWE Shop
2018/11/15 全球购物
高级Java程序员面试题
2016/06/23 面试题
党委书记岗位职责
2013/11/24 职场文书
应届毕业生通用的自荐书范文
2014/02/07 职场文书
服装设计专业毕业生求职信
2014/04/09 职场文书
环保倡议书怎么写
2014/05/16 职场文书
查摆问题对照检查材料
2014/08/28 职场文书
乡镇党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
致地震灾区的慰问信
2015/03/23 职场文书
2015年秋季小班开学寄语
2015/05/27 职场文书
黄河绝恋观后感
2015/06/08 职场文书