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常用web框架简单性能测试结果分享(包含django、flask、bottle、tornado)
Aug 25 Python
python使用xlrd实现检索excel中某列含有指定字符串记录的方法
May 09 Python
Python 获得13位unix时间戳的方法
Oct 20 Python
SVM基本概念及Python实现代码
Dec 27 Python
解决使用pycharm提交代码时冲突之后文件丢失找回的方法
Aug 05 Python
python爬虫之自动登录与验证码识别
Jun 15 Python
python使用udp实现聊天器功能
Dec 10 Python
PyQt5实现暗黑风格的计时器
Jul 29 Python
解决Djang2.0.1中的reverse导入失败的问题
Aug 16 Python
基于python操作ES实例详解
Nov 16 Python
利用Python实现某OA系统的自动定位功能
May 27 Python
Python答题卡识别并给出分数的实现代码
Jun 22 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与SQL注入攻击[三]
2007/04/17 PHP
PHP多种序列化/反序列化的方法详解
2017/06/23 PHP
关于文本限制字数的js代码
2007/04/02 Javascript
JavaScript入门之事件、cookie、定时等
2011/10/21 Javascript
CSS(js)限制页面显示的文本字符长度
2012/12/27 Javascript
JS往数组中添加项性能分析
2015/02/25 Javascript
JavaScript之Object类型介绍
2015/04/01 Javascript
使用JavaScript刷新网页的方法
2015/06/04 Javascript
javascript日期计算实例分析
2015/06/29 Javascript
JavaScript获得指定对象大小的方法
2015/07/01 Javascript
jquery实现垂直和水平菜单导航栏
2020/08/27 Javascript
JavaScript中cookie工具函数封装的示例代码
2016/10/11 Javascript
d3.js实现简单的网络拓扑图实例代码
2016/11/06 Javascript
微信小程序 页面跳转传递值几种方法详解
2017/01/12 Javascript
手机端转换rem适应
2017/04/01 Javascript
令按钮悬浮在(手机)页面底部的实现方法
2017/05/02 Javascript
基于 webpack2 实现的多入口项目脚手架详解
2017/06/26 Javascript
Angularjs中数据绑定的实例详解
2017/08/25 Javascript
Angular2里获取(input file)上传文件的内容的方法
2017/09/05 Javascript
vue 利用路由守卫判断是否登录的方法
2018/09/29 Javascript
javascript之分片上传,断点续传的实际项目实现详解
2019/09/05 Javascript
node.js 微信开发之定时获取access_token
2020/02/07 Javascript
node.js使用stream模块实现自定义流示例
2020/02/13 Javascript
python list中append()与extend()用法分享
2013/03/24 Python
python实现给微信指定好友定时发送消息
2019/04/29 Python
PyTorch: 梯度下降及反向传播的实例详解
2019/08/20 Python
基于python实现学生信息管理系统
2019/11/22 Python
Python生成并下载文件后端代码实例
2020/08/31 Python
利用纯CSS3实现文字向右循环闪过效果实例(可用于移动端)
2017/06/15 HTML / CSS
CSS3实现图片抽屉式效果的示例代码
2019/11/06 HTML / CSS
经典洗发水广告词
2014/03/13 职场文书
导游词之西江千户苗寨
2019/12/24 职场文书
在CSS中映射鼠标位置并实现通过鼠标移动控制页面元素效果(实例代码)
2021/04/22 HTML / CSS
redis 限制内存使用大小的实现
2021/05/08 Redis
Android开发 使用文件储存的方式保存QQ密码
2022/04/24 Java/Android
使用Mysql计算地址的经纬度距离和实时位置信息
2022/04/29 MySQL