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如何使用AIML搭建聊天机器人
Jan 27 Python
python下载文件记录黑名单的实现代码
Oct 24 Python
Python数据结构与算法之使用队列解决小猫钓鱼问题
Dec 14 Python
Python 使用PIL numpy 实现拼接图片的示例
May 08 Python
Python 生成 -1~1 之间的随机数矩阵方法
Aug 04 Python
python安装twisted的问题解析
Aug 21 Python
Python爬虫beautifulsoup4常用的解析方法总结
Feb 25 Python
对python3 Serial 串口助手的接收读取数据方法详解
Jun 12 Python
python图像处理模块Pillow的学习详解
Oct 09 Python
python和js交互调用的方法
Jun 23 Python
Python调用SMTP服务自动发送Email的实现步骤
Feb 07 Python
2021年pycharm的最新安装教程及基本使用图文详解
Apr 03 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实现微信公众平台账号自定义菜单类
2014/12/02 PHP
PHP实现WebService的简单示例和实现步骤
2015/03/27 PHP
win7系统配置php+Apache+mysql环境的方法
2015/08/21 PHP
制作特殊字的脚本
2006/06/26 Javascript
JS宝典学习笔记(下)
2007/01/10 Javascript
Javascript 八进制转义字符(8进制)
2011/04/08 Javascript
简单的jquery拖拽排序效果实现代码
2011/09/20 Javascript
纯javascript实现自动发送邮件
2015/10/21 Javascript
javascript实现下拉提示选择框
2015/12/29 Javascript
JS把内容动态插入到DIV的实现方法
2016/07/19 Javascript
Vue.js 和 MVVM 的注意事项
2016/11/07 Javascript
简单的渐变轮播插件
2017/01/12 Javascript
js自定义弹框插件的封装
2020/08/24 Javascript
js Element Traversal规范中的元素遍历方法
2018/04/19 Javascript
Nodejs核心模块之net和http的使用详解
2019/04/02 NodeJs
微信小程序开发之左右分栏效果的实例代码
2019/05/20 Javascript
vue源码nextTick使用及原理解析
2019/08/13 Javascript
Vue实现点击按钮复制文本内容的例子
2019/11/09 Javascript
vue全局使用axios的操作
2020/09/08 Javascript
python计算书页码的统计数字问题实例
2014/09/26 Python
python+matplotlib实现鼠标移动三角形高亮及索引显示
2018/01/15 Python
Python实现两个list求交集,并集,差集的方法示例
2018/08/02 Python
Django中数据库的数据关系:一对一,一对多,多对多
2018/10/21 Python
解决Mac下首次安装pycharm无project interpreter的问题
2018/10/29 Python
PyTorch的深度学习入门教程之构建神经网络
2019/06/27 Python
python中的函数递归和迭代原理解析
2019/11/14 Python
Pandas 解决dataframe的一列进行向下顺移问题
2019/12/27 Python
TensorFlow打印输出tensor的值
2020/04/19 Python
Python 内存管理机制全面分析
2021/01/16 Python
美国一家著名的手表在线折扣网站:Discount Watch Store
2020/02/24 全球购物
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
2014/07/27 面试题
语文教学感言
2014/02/06 职场文书
奉献演讲稿范文
2014/05/21 职场文书
股东合作协议书
2014/09/12 职场文书
导游词创作书写原则以及开场白技巧怎么学?
2019/09/25 职场文书
图解排序算法之希尔排序Java实现
2021/06/26 Java/Android