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爬虫之神器正则表达式
Nov 06 Python
Python遍历目录并批量更换文件名和目录名的方法
Sep 19 Python
一个基于flask的web应用诞生 使用模板引擎和表单插件(2)
Apr 11 Python
python中子类调用父类函数的方法示例
Aug 18 Python
python利用ffmpeg进行录制屏幕的方法
Jan 10 Python
Python使用reportlab模块生成PDF格式的文档
Mar 11 Python
Anaconda之conda常用命令介绍(安装、更新、删除)
Oct 06 Python
python中对_init_的理解及实例解析
Oct 11 Python
Django模板标签{% for %}循环,获取制定条数据实例
May 14 Python
Python爬取YY评级分数并保存数据实现过程解析
Jun 01 Python
Python求区间正整数内所有素数之和的方法实例
Oct 13 Python
python爬虫scrapy基于CrawlSpider类的全站数据爬取示例解析
Feb 20 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和ACCESS写聊天室(八)
2006/10/09 PHP
php入门学习知识点八 PHP中for循环基本应用之九九乘法口绝表
2011/07/14 PHP
php提示undefined index的几种解决方法
2012/05/21 PHP
Yii的Srbac插件用法详解
2016/07/14 PHP
基于prototype的validation.js发布2.3.4新版本,让你彻底脱离表单验证的烦恼
2006/12/06 Javascript
JS函数验证总结(方便js客户端输入验证)
2010/10/29 Javascript
JavaScript lastIndexOf方法入门实例(计算指定字符在字符串中最后一次出现的位置)
2014/10/17 Javascript
js实现发送验证码后的倒计时功能
2015/05/28 Javascript
jquery衣服颜色选取插件效果代码分享
2015/08/28 Javascript
js获取及判断键盘按键的方法
2015/12/01 Javascript
jQuery解析与处理服务器端返回xml格式数据的方法详解
2016/07/04 Javascript
ES6深入理解之“let”能替代”var“吗?
2017/06/28 Javascript
javascript cookie的基本操作(添加和删除)
2017/07/24 Javascript
webpack 样式加载的实现原理
2018/06/12 Javascript
[55:39]DOTA2-DPC中国联赛 正赛 VG vs LBZS BO3 第二场 1月19日
2021/03/11 DOTA
讲解Python中for循环下的索引变量的作用域
2015/04/15 Python
Python使用struct处理二进制的实例详解
2017/09/11 Python
Python生成器以及应用实例解析
2018/02/08 Python
python如何为创建大量实例节省内存
2018/03/20 Python
基于Python Numpy的数组array和矩阵matrix详解
2018/04/04 Python
介绍一款python类型检查工具pyright(推荐)
2019/07/03 Python
python3 线性回归验证方法
2019/07/09 Python
python cumsum函数的具体使用
2019/07/29 Python
TensorFlow tf.nn.softmax_cross_entropy_with_logits的用法
2020/04/19 Python
移动端HTML5 input常见问题(小结)
2020/09/28 HTML / CSS
墨西哥购物网站:Elektra
2020/01/21 全球购物
班长岗位职责
2013/11/10 职场文书
市场营销专科应届生求职信
2013/11/24 职场文书
会计助理岗位职责
2014/02/17 职场文书
体育专业大学生职业生涯规划范文:打造自己的运动帝国
2014/09/12 职场文书
作弊检讨书
2015/01/27 职场文书
产品质量保证书范本
2015/02/27 职场文书
中国梦宣传标语口号
2015/12/26 职场文书
php中pcntl_fork详解
2021/04/01 PHP
golang json数组拼接的实例
2021/04/28 Golang
Win10鼠标轨迹怎么开 Win10显示鼠标轨迹方法
2022/04/06 数码科技