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装饰器(decorator)定义与用法详解
Feb 09 Python
详解分布式任务队列Celery使用说明
Nov 29 Python
python 2.7 检测一个网页是否能正常访问的方法
Dec 26 Python
Python中查看变量的类型内存地址所占字节的大小
Jun 26 Python
Python在OpenCV里实现极坐标变换功能
Sep 02 Python
python实现输入任意一个大写字母生成金字塔的示例
Oct 27 Python
python使用opencv在Windows下调用摄像头实现解析
Nov 26 Python
Python操作多维数组输出和矩阵运算示例
Nov 28 Python
如何快速理解python的垃圾回收机制
Sep 01 Python
利用Python将多张图片合成视频的实现
Nov 23 Python
python人工智能human learn绘图可创建机器学习模型
Nov 23 Python
python实现学员管理系统(面向对象版)
Jun 05 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 adodb连接mssql解决乱码问题
2009/06/12 PHP
Yii实现自动加载类地图的方法
2015/04/01 PHP
php 调用ffmpeg获取视频信息的简单实现
2017/04/03 PHP
javascript 当前日期加(天、周、月、年)
2009/08/09 Javascript
使用js完成节点的增删改复制等的操作
2014/01/02 Javascript
js function定义函数的几种不错方法
2014/02/27 Javascript
字段太多jquey快速清空表单内容方法
2014/08/21 Javascript
使用CoffeeScrip优美方式编写javascript代码
2015/10/28 Javascript
ajax在兼容模式下失效的快速解决方法
2016/03/22 Javascript
ES6新特性之函数的扩展实例详解
2017/04/01 Javascript
详解vue更改头像功能实现
2019/04/28 Javascript
js实现简单分页导航栏效果
2019/06/28 Javascript
vue中监听返回键问题
2019/08/28 Javascript
koa2的中间件功能及应用示例
2020/03/05 Javascript
koa2 数据api中间件设计模型的实现方法
2020/07/13 Javascript
Vue 按照创建时间和当前时间显示操作(刚刚,几小时前,几天前)
2020/09/10 Javascript
[02:39]DOTA2英雄基础教程 天怒法师
2013/11/29 DOTA
Python正则抓取新闻标题和链接的方法示例
2017/04/24 Python
Python实现PS滤镜的旋转模糊功能示例
2018/01/20 Python
python验证码识别实例代码
2018/02/03 Python
python smtplib模块实现发送邮件带附件sendmail
2018/05/22 Python
终端命令查看TensorFlow版本号及路径的方法
2018/06/13 Python
python 高效去重复 支持GB级别大文件的示例代码
2018/11/08 Python
Python 获取主机ip与hostname的方法
2018/12/17 Python
python3实现mysql导出excel的方法
2019/07/31 Python
获取Pytorch中间某一层权重或者特征的例子
2019/08/17 Python
基于Python组装jmx并调用JMeter实现压力测试
2020/11/03 Python
手把手教你配置JupyterLab 环境的实现
2021/02/02 Python
css3.0 图形构成实例练习一
2013/03/19 HTML / CSS
加拿大城市本地限时优惠:Buytopia.ca
2018/09/19 全球购物
财务与信息服务专业推荐信
2013/11/28 职场文书
小学开学寄语
2014/01/19 职场文书
中学生英语演讲稿
2014/04/26 职场文书
2014年财务科工作总结
2014/11/11 职场文书
社区环境卫生倡议书
2015/04/29 职场文书
Python绘制散乱的点构成的图的方法
2022/04/21 Python