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 相关文章推荐
pymongo实现多结果进行多列排序的方法
May 16 Python
Windows下Python使用Pandas模块操作Excel文件的教程
May 31 Python
Python实现的计数排序算法示例
Nov 29 Python
python3.6+django2.0开发一套学员管理系统
Mar 03 Python
详解pyqt5 动画在QThread线程中无法运行问题
May 05 Python
对python读取CT医学图像的实例详解
Jan 24 Python
Python面向对象程序设计构造函数和析构函数用法分析
Apr 12 Python
python加载自定义词典实例
Dec 06 Python
pytorch实现onehot编码转为普通label标签
Jan 02 Python
Python 生成VOC格式的标签实例
Mar 10 Python
Django REST Framework 分页(Pagination)详解
Nov 30 Python
Python实现socket库网络通信套接字
Jun 04 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实现查看邮件是否已被阅读的方法
2013/12/03 PHP
免费手机号码归属地API查询接口和PHP使用实例分享
2014/04/10 PHP
getimagesize获取图片尺寸实例
2014/11/15 PHP
Laravel 5.1 on SAE环境开发教程【附项目demo源码】
2016/10/09 PHP
thinkPHP实现基于ajax的评论回复功能
2018/06/22 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
2019/11/23 PHP
JS无限树状列表实现代码
2011/01/11 Javascript
js限制textarea每行输入字符串长度的代码
2012/10/31 Javascript
jQuery操作Select选择的Text和Value(获取/设置/添加/删除)
2013/03/06 Javascript
jquery如何根据值设置默认的选中项
2014/03/17 Javascript
JavaScript简单获取页面图片原始尺寸的方法
2016/06/21 Javascript
原生js实现ajax方法(超简单)
2016/09/20 Javascript
基于ES6作用域和解构赋值详解
2017/11/03 Javascript
JavaScript基础之静态方法和实例方法分析
2018/12/26 Javascript
Vue CLI 2.x搭建vue(目录最全分析)
2019/02/27 Javascript
浅谈Layui的eleTree树式选择器使用方法
2019/09/25 Javascript
js前端对于大量数据的展示方式及处理方法
2020/12/02 Javascript
[01:05:59]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
python算法学习之基数排序实例
2013/12/18 Python
Python实现拼接多张图片的方法
2014/12/01 Python
python dict.get()和dict['key']的区别详解
2016/06/30 Python
Python tkinter事件高级用法实例
2018/01/31 Python
python3个性签名设计实现代码
2018/06/19 Python
详解pytorch 0.4.0迁移指南
2019/06/16 Python
从多个tfrecord文件中无限读取文件的例子
2020/02/17 Python
Python作用域与名字空间原理详解
2020/03/21 Python
python 实现压缩和解压缩的示例
2020/09/22 Python
Django中使用Celery的方法步骤
2020/12/07 Python
职业生涯规划书基本格式
2014/01/06 职场文书
十佳护士先进事迹
2014/05/08 职场文书
教师正风肃纪剖析材料
2014/10/20 职场文书
2015年小学语文工作总结
2015/05/25 职场文书
工作表现证明
2015/06/15 职场文书
单位领导婚礼致辞
2015/07/28 职场文书
人民调解协议书
2016/03/21 职场文书
Python字符串格式化方式
2022/04/07 Python