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使用cookie库操保存cookie详解
Mar 03 Python
python计算对角线有理函数插值的方法
May 07 Python
Python中MySQL数据迁移到MongoDB脚本的方法
Apr 28 Python
Python 逐行分割大txt文件的方法
Oct 10 Python
用不到50行的Python代码构建最小的区块链
Nov 16 Python
Python设计模式之代理模式实例详解
Jan 19 Python
python GUI实现小球满屏乱跑效果
May 09 Python
Python基于OpenCV实现人脸检测并保存
Jul 23 Python
python序列化与数据持久化实例详解
Dec 20 Python
解决pycharm中导入自己写的.py函数出错问题
Feb 12 Python
python如何变换环境
Jul 21 Python
django数据模型中null和blank的区别说明
Sep 02 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生成二维码与识别二维码的方法详解【附源码下载】
2019/03/07 PHP
基于jquery的内容循环滚动小模块(仿新浪微博未登录首页滚动微博显示)
2011/03/28 Javascript
自己实现string的substring方法 人民币小写转大写,数字反转,正则优化
2012/09/02 Javascript
JavaScript高级程序设计(第3版)学习笔记12 js正则表达式
2012/10/11 Javascript
JS关键字变色实现思路及代码
2013/02/21 Javascript
如何将网页表格内容导入excel
2014/02/18 Javascript
js使用split函数按照多个字符对字符串进行分割的方法
2015/03/20 Javascript
js解决movebox移动问题
2016/03/29 Javascript
前端js文件合并的三种方式推荐
2016/05/19 Javascript
AngularJS ng-controller 指令简单实例
2016/08/01 Javascript
利用JQuery直接调用asp.net后台的简单方法
2016/10/27 Javascript
AngularJS Select(选择框)使用详解
2017/01/18 Javascript
微信小程序开发图片拖拽实例详解
2017/05/05 Javascript
vue利用better-scroll实现轮播图与页面滚动详解
2017/10/20 Javascript
解决layui 复选框等内置控件不显示的问题
2018/08/14 Javascript
详解nodejs 开发企业微信第三方应用入门教程
2019/03/12 NodeJs
微信小程序 wx:for 与 wx:for-items 与 wx:key的正确用法
2020/05/19 Javascript
详细分析vue响应式原理
2020/06/22 Javascript
[01:33]DOTA2上海特级锦标赛 LIQUID战队完整宣传片
2016/03/16 DOTA
python处理圆角图片、圆形图片的例子
2014/04/25 Python
Python类的用法实例浅析
2015/05/27 Python
深入理解Python对Json的解析
2017/02/14 Python
快速解决安装python没有scripts文件夹的问题
2018/04/03 Python
Python实现SQL注入检测插件实例代码
2019/02/02 Python
python numpy 反转 reverse示例
2019/12/04 Python
美国保健品专家:Life Extension
2018/05/04 全球购物
俄罗斯童装网上商店:BebaKids
2020/06/06 全球购物
KELLER SPORTS荷兰:在线订购最好的运动产品
2020/10/13 全球购物
施工安全协议书
2013/12/11 职场文书
专项法律服务方案
2014/06/11 职场文书
保密工作目标责任书
2014/07/28 职场文书
教师学习八项规定六项禁令思想汇报
2014/09/27 职场文书
幼儿园园长新年寄语2015
2014/12/08 职场文书
Nginx解决403 forbidden的完整步骤
2021/04/01 Servers
Ajax 的初步实现(使用vscode+node.js+express框架)
2021/06/18 Javascript
Nginx报错104:Connection reset by peer问题的解决及分析
2022/07/23 Servers