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实现斐波那契递归函数的方法
Sep 08 Python
跟老齐学Python之有容乃大的list(3)
Sep 15 Python
Python中Collections模块的Counter容器类使用教程
May 31 Python
python 查找字符串是否存在实例详解
Jan 20 Python
Python3的介绍、安装和命令行的认识(推荐)
Oct 20 Python
Python实现字符型图片验证码识别完整过程详解
May 10 Python
python登录WeChat 实现自动回复实例详解
May 28 Python
网易有道2017内推编程题 洗牌(python)
Jun 19 Python
Python OpenCV 使用滑动条来调整函数参数的方法
Jul 08 Python
Django ForeignKey与数据库的FOREIGN KEY约束详解
May 20 Python
解决pytorch多GPU训练保存的模型,在单GPU环境下加载出错问题
Jun 23 Python
Python借助with语句实现代码段只执行有限次
Mar 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
PHP 截取字符串 分别适合GB2312和UTF8编码情况
2009/02/12 PHP
PHP SESSION机制的理解与实例
2019/03/22 PHP
从零开始学习jQuery (十一) 实战表单验证与自动完成提示插件
2011/02/23 Javascript
整理一些JavaScript的IE和火狐的兼容性注意事项
2011/03/17 Javascript
jquery提取元素里的纯文本不包含span等里的内容
2013/09/30 Javascript
js日期、星座的级联显示代码
2014/01/23 Javascript
JS自调用匿名函数具体实现
2014/02/11 Javascript
jQuery图片前后对比插件beforeAfter用法示例【附demo源码下载】
2016/09/20 Javascript
Bootstrap表单简单实现代码
2017/03/06 Javascript
jQuery实现鼠标点击处心形漂浮的炫酷效果示例
2018/04/12 jQuery
深入浅析Vue全局组件与局部组件的区别
2018/06/15 Javascript
JS使用百度地图API自动获取地址和经纬度操作示例
2019/04/16 Javascript
Jquery实现获取子元素的方法分析
2019/08/24 jQuery
微信小程序关键字变色实现代码实例
2019/12/13 Javascript
Nodejs实现微信分账的示例代码
2021/01/19 NodeJs
[02:20]DOTA2亚洲邀请赛 EHOME战队出场宣传片
2015/02/07 DOTA
[52:52]完美世界DOTA2联赛PWL S3 LBZS vs access 第一场 12.10
2020/12/13 DOTA
Python中遇到的小问题及解决方法汇总
2017/01/11 Python
利用python实现命令行有道词典的方法示例
2017/01/31 Python
python中urllib.unquote乱码的原因与解决方法
2017/04/24 Python
python2.7读取文件夹下所有文件名称及内容的方法
2018/02/24 Python
Python在groupby分组后提取指定位置记录方法
2018/04/20 Python
Python3获取电脑IP、主机名、Mac地址的方法示例
2019/04/11 Python
tensorflow的ckpt及pb模型持久化方式及转化详解
2020/02/12 Python
torchxrayvision包安装过程(附pytorch1.6cpu版安装)
2020/08/26 Python
一款纯css3实现的非常实用的鼠标悬停特效演示
2014/11/05 HTML / CSS
UNIX命令速查表
2012/03/10 面试题
财务会计应届生求职信
2013/11/24 职场文书
上班看电影检讨书
2014/02/12 职场文书
私营公司诉讼代理委托书范本
2014/09/13 职场文书
教师群众路线心得体会
2014/11/04 职场文书
失职检讨书大全
2015/01/26 职场文书
导游词之开封禹王台风景区
2019/12/02 职场文书
pytorch 如何使用batch训练lstm网络
2021/05/28 Python
写一个Python脚本下载哔哩哔哩舞蹈区的所有视频
2021/05/31 Python
vue实现滑动解锁功能
2022/03/03 Vue.js