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中使用socket发送HTTP请求数据接收不完整问题解决方法
Feb 04 Python
一个基于flask的web应用诞生 使用模板引擎和表单插件(2)
Apr 11 Python
Python多进程池 multiprocessing Pool用法示例
Sep 07 Python
python实现贪吃蛇小游戏
Mar 21 Python
详解python做UI界面的方法
Feb 27 Python
Python跳出多重循环的方法示例
Jul 03 Python
Python任务调度利器之APScheduler详解
Apr 02 Python
Python 中如何写注释
Aug 28 Python
Python datetime 如何处理时区信息
Sep 02 Python
Anaconda详细安装步骤图文教程
Nov 12 Python
python开发制作好看的时钟效果
May 02 Python
Python测试框架pytest高阶用法全面详解
Jun 01 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 allow_url_include的应用和解释
2010/04/22 PHP
PHPnow安装服务[apache_pn]失败的问题的解决方法
2010/09/10 PHP
深入php define()函数以及defined()函数的用法详解
2013/06/05 PHP
Yii实现多按钮保存与提交的方法
2014/12/03 PHP
thinkphp备份数据库的方法分享
2015/01/04 PHP
php使用parse_url和parse_str解析URL
2015/02/22 PHP
在Mac OS下搭建LNMP开发环境的步骤详解
2017/03/10 PHP
JS数组的赋值介绍
2014/03/10 Javascript
JSON.stringify转换JSON时日期时间不准确的解决方法
2014/08/08 Javascript
在Node.js中使用Javascript Generators详解
2016/05/05 Javascript
基于jquery插件编写countdown计时器
2016/06/12 Javascript
NodeJS实现图片上传代码(Express)
2017/06/30 NodeJs
jQuery EasyUI开发技巧总结
2017/09/26 jQuery
微信小程序websocket实现聊天功能
2020/03/30 Javascript
小程序tab页无法传递参数的方法
2018/08/03 Javascript
微信小程序如何调用json数据接口并解析
2019/06/29 Javascript
[02:19]DOTA选手解说齐贺岁
2018/02/11 DOTA
linux下安装easy_install的方法
2013/02/10 Python
使用django-suit为django 1.7 admin后台添加模板
2014/11/18 Python
Python连接MySQL并使用fetchall()方法过滤特殊字符
2016/03/13 Python
python实现彩色图转换成灰度图
2019/01/15 Python
python爬虫简单的添加代理进行访问的实现代码
2019/04/04 Python
Python Django框架url反向解析实现动态生成对应的url链接示例
2019/10/18 Python
Django REST framework 单元测试实例解析
2019/11/07 Python
pytorch数据预处理错误的解决
2020/02/20 Python
详解如何修改python中字典的键和值
2020/09/29 Python
Python+logging输出到屏幕将log日志写入文件
2020/11/11 Python
碧欧泉法国官网:Biotherm法国
2019/10/23 全球购物
Linux管理员面试经常问道的相关命令
2013/04/29 面试题
教师的实习鉴定
2013/12/15 职场文书
社区食品安全实施方案
2014/03/28 职场文书
银行优秀员工事迹材料
2014/05/29 职场文书
快递员岗位职责
2014/09/12 职场文书
拾金不昧表扬稿大全
2015/05/05 职场文书
Keras在mnist上的CNN实践,并且自定义loss函数曲线图操作
2021/05/25 Python
Java数组详细介绍及相关工具类
2022/04/14 Java/Android