tf.nn.max_pool 理解
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]
这种形式
示例:
假设有这样一张图,双通道:
通道1:
通道2:
可以想象把这两个通道叠在一起,数字 1 后跟的数字是 2,然后是 3 然后是 4…
这样的图片在数组中的表示就是:
[[[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]]]
因为 max_pool
中输入的 value
是 4 维的,因此将这样一个 shape
为 2x2x4
的数组 reshape
为 1x4x4x2
:
[[[[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.]]]]
经过 max_pool
,池化大小为 2x2
,步长为 1
,方式是 Valid
:
pooling = tf.nn.max_pool(a,[1,2,2,1],[1,1,1,1],padding='VALID')
得到池化结果:
[[[[8. 7.][6. 6.][7. 8.]][[8. 7.][8. 7.][8. 7.]][[4. 4.][8. 7.][8. 8.]]]]
因此池化后的图就是:
也可改变 max_pool
中的 步长和池化方法:
pooling = tf.nn.max_pool(a,[1,2,2,1],[1,2,1,1],padding='SAME')
得出结果:
[[[[8. 7.][6. 6.][7. 8.][7. 8.]][[4. 4.][8. 7.][8. 8.][7. 8.]]]]
完整代码:
import tensorflow as tf
import numpy as npa=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,2,1,1],padding='SAME')with tf.Session() as sess: print("image:") image=sess.run(a) print (image) print("reslut:") result=sess.run(pooling) print (result)
Referene:
https://blog.csdn.net/mao_xiao_feng/article/details/53453926
tf.nn.max_pool 理解相关推荐
- tensorflow详解-tf.nn.conv2d(),tf.nn.max_pool()
tf.nn.conv2d() 函数来计算卷积,weights 作为滤波器,[1, 2, 2, 1] 作为 strides.TensorFlow 对每一个 input 维度使用一个单独的 stride ...
- tf.nn.conv2d理解(带通道的卷积图片输出案例)
三篇参考: 1.https://blog.csdn.net/goodshot/article/details/79655915 TF-卷积函数 tf.nn.conv2d 介绍 2.https://bl ...
- 【TensorFlow】TensorFlow函数精讲之tf.nn.max_pool()和tf.nn.avg_pool()
tf.nn.max_pool()和tf.nn.avg_pool()是TensorFlow中实现最大池化和平均池化的函数,在卷积神经网络中比较核心的方法. 有些和卷积很相似,可以参考TensorFlow ...
- TensorFlow基础篇(六)——tf.nn.max_pool()和tf.nn.avg_pool()
tf.nn.max_pool()和tf.nn.avg_pool()是TensorFlow中实现最大池化和平均池化的函数,在卷积神经网络中比较核心的方法. 有些和卷积很相似,可以参考TensorFlow ...
- tf.nn 和tf.layers以及tf.contrib.layers的简单区别(转)
tensorflow不同层的使用(tf.nn 和tf.layers以及tf.contrib.layers)的简单区别(转) 2018年09月02日 18:50:33 holmes_MX 版权声明:原创 ...
- tensorflow学习(一)——有关tensorflow不同层的使用(tf.nn 和tf.layers以及tf.contrib.layers)的简单区别
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/holmes_MX/article/de ...
- tf.nn,tf.layers, tf.contrib模块介绍
一.tf.nn,tf.layers, tf.contrib概述 我们在使用tensorflow时,会发现tf.nn,tf.layers, tf.contrib模块有很多功能是重复的,尤其是卷积操作,在 ...
- 深度学习原理与框架-CNN在文本分类的应用 1.tf.nn.embedding_lookup(根据索引数据从数据中取出数据) 2.saver.restore(加载sess参数)...
1. tf.nn.embedding_lookup(W, X) W的维度为[len(vocabulary_list), 128], X的维度为[?, 8],组合后的维度为[?, 8, 128] 代码说 ...
- TensorFlow(七)tf.nn库
##tf.nn,tf.layers, tf.contrib模块有很多功能是重复的 下面是对三个模块的简述: tf.nn :提供神经网络相关操作的支持,包括卷积操作(conv).池化操作(pooling ...
最新文章
- 你要的2019最全目标检测都在这里啦!
- 最新开源Faster-LIO:快速激光IMU里程计
- python能不能爬数据库_python如何爬数据库
- 如何压缩神经网络(将已经训练好的压缩)
- 【Python3爬虫】最新的12306爬虫
- js中window.location.search的用法和作用
- Tushare数据的绘图操作
- 消息中间件常见问题汇总
- Java基础知识之方法的返回值与重载
- [Topic]Advanced Run Time Type Identification in C++
- Ubuntu系统上为用户授予和删除sudo权限的方法
- Neo4j-import导入CSV的数据
- 2019最新猎豹网校JAVA语言数据结构与算法教程(Java语言 )
- Echarts教程1_ ECharts官方教程(一)【5分钟上手ECharts】
- CTSC1999补丁VS错误题解
- epoll使用详解:epoll_create、epoll_ctl、epoll_wait、close
- R语言回归分析-回归诊断
- 利用python进行单边T检验
- Python(正则表达式)
- 码住收藏 ▏软件测试报告应该包含哪些内容?