CNN中的池化层的理解和实例
池化操作是利用一个矩阵窗口在输入张量上进行扫描,并且每个窗口中的值通过取最大、取平均或其它的一些操作来减少元素个数。池化窗口由ksize来指定,根据strides的长度来决定移动步长。如果strides都是1,每个矩阵窗口都将被使用,如果strides的值都是2,那么每一维度上的窗口每隔1个被使用。
举例:
tf.nn.avg_pool(value, ksize, strides, padding, name=None)
功能:计算池化区域中元素的平均值
输入参数:
value:一个四维的Tensor,维度分别表示[batch, height, width, channels]
ksize:长度不小于4的整形数组,每一维度对应于输入数据张量中每一维的窗口对应值
strides:长度不小于4的整型数组,表示滑动窗口在输入数据张量每一维度上的步长
padding:字符串,取值为SAME或者VALID
输出:一个Tensor,输出维度和value相同
输出数据的维度计算方法:shape(output) = (shape(value) - ksize + 1) / strides
取舍方向取决于:padding的值
padding = 'SAME':向下取舍,输入和输出维度相同
padding = 'VALID':向上取舍,输入输出维度不同
input_data = tf.Variable(np.random.rand(10, 6, 6, 3), dtype= np.float32)
filter_data = tf.Variable(np.random.rand(2, 2, 3, 1), dtype= np.float32)
y = tf.nn.conv2d(input_data, filter_data, strides =[1,1,1,1], padding='SAME')
output = tf.nn.avg_pool(value=y, ksize=[1,2,2 ,1], strides=[1,2,2,1], padding='SAME')
with tf.Session() as sess:
init = tf.initialize_all_variables()
sess.run(init)
a = sess.run(y)
b = sess.run(output)
print (a)
print (b)
其中,a的维度:(10,6,6,1),b的维度:(10,3,3,1),b的维度计算方法:由于池化时ksize是2×2,原来张量为6×6,移动步长为2,
所以最后池化后的张量为(6-2+1)/2=2.5,此时公式不适用。我自己的算法:1+(6-2)/2 = 3
CNN中的池化层的理解和实例的更多相关文章
- 【深度学习篇】--神经网络中的池化层和CNN架构模型
一.前述 本文讲述池化层和经典神经网络中的架构模型. 二.池化Pooling 1.目标 降采样subsample,shrink(浓缩),减少计算负荷,减少内存使用,参数数量减少(也可防止过拟合)减少输 ...
- 神经网络中的池化层(pooling)
在卷积神经网络中,我们经常会碰到池化操作,而池化层往往在卷积层后面,通过池化来降低卷积层输出的特征向量,同时改善结果(不易出现过拟合).为什么可以通过降低维度呢? 因为图像具有一种“静态性”的属性,这 ...
- TensorFlow 池化层
在 TensorFlow 中使用池化层 在下面的练习中,你需要设定池化层的大小,strides,以及相应的 padding.你可以参考 tf.nn.max_pool().Padding 与卷积 pad ...
- [PyTorch 学习笔记] 3.3 池化层、线性层和激活函数层
本章代码:https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson3/nn_layers_others.py 这篇文章主要介绍 ...
- CNN中卷积层 池化层反向传播
参考:https://blog.csdn.net/kyang624823/article/details/78633897 卷积层 池化层反向传播: 1,CNN的前向传播 a)对于卷积层,卷积核与输入 ...
- tensorflow CNN 卷积神经网络中的卷积层和池化层的代码和效果图
tensorflow CNN 卷积神经网络中的卷积层和池化层的代码和效果图 因为很多 demo 都比较复杂,专门抽出这两个函数,写的 demo. 更多教程:http://www.tensorflown ...
- tensorflow中的卷积和池化层(一)
在官方tutorial的帮助下,我们已经使用了最简单的CNN用于Mnist的问题,而其实在这个过程中,主要的问题在于如何设置CNN网络,这和Caffe等框架的原理是一样的,但是tf的设置似乎更加简洁. ...
- CNN学习笔记:池化层
CNN学习笔记:池化层 池化 池化(Pooling)是卷积神经网络中另一个重要的概念,它实际上是一种形式的降采样.有多种不同形式的非线性池化函数,而其中“最大池化(Max pooling)”是最为常见 ...
- ubuntu之路——day17.3 简单的CNN和CNN的常用结构池化层
来看上图的简单CNN: 从39x39x3的原始图像 不填充且步长为1的情况下经过3x3的10个filter卷积后 得到了 37x37x10的数据 不填充且步长为2的情况下经过5x5的20个filter ...
随机推荐
- WebService之CXF
一.配置环境变量(Windows系统下要重启) 1.JAVA_HOME即JDK安装路径bin上一级,java -version命令验证 2.CXF_HOME即cxf安装路径bin上一级,cxf解压包下 ...
- 【RF库Collections测试】Log Dictionary 【同log list】
Name:Log DictionarySource:Collections <test library>Arguments:[ dictionary | level=INFO ]Logs ...
- SaltStack salt-ssh 用法
以下在 master 操作: (1) 我们在安装部署 SaltStack 的时候,需要安装 salt 客户端,还要与 salt 服务端进行认证才能互相通信(2) 如果我们使用 salt-ssh 的方式 ...
- 使用 Beautiful Soup
Beautiful Soup 用法: (1) 前面我们爬取一个网页,都是使用正则表达式来提取想要的信息,但是这种方式比较复杂,一旦有一个地方写错,就匹配不出来了,因此我们可以使用 Beautiful ...
- JTAG、JLink、ULINK、ST-LINK仿真器区别(转)
首先要了解一下JTAG. JTAG协议 JTAG(Joint Test Action Group,联合测试行动小组)是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试.现在多数 ...
- iOS应用内支付(IAP)的那些坑
本文转载至 http://blog.devtang.com/2013/04/07/tricks-in-iap/ 前言 udacity 中的在线课程 <How to build a startup ...
- 从零开始学Sketch——进阶篇
本文转自 http://www.jianshu.com/p/ff70b5f35c8f 从零开始学Sketch——进阶篇 Sketch是一款矢量绘图应用,而矢量绘图无疑是目前进行网页.图标以及界面设计的 ...
- codeforces水题100道 第三题 Codeforces Beta Round #47 A. Domino piling (math)
题目链接:http://www.codeforces.com/problemset/problem/50/A题意:一个NxM的举行中最多能放多少个1x2的矩形.C++代码: #include < ...
- 《Lua程序设计》第1章 开始 学习笔记
1.1 程序块(chunk)每段代码(例如一个源代码文件或在交互模式中输入的一行代码),称为一个程序块.若使用命令行参数-i来启动Lua解释器,那么解释器就会在运行完指定程序块后进入交互模式.dofi ...
- 队列Queue中add()和offer()的区别?
区别:两者都是往队列尾部插入元素,不同的时候,当超出队列界限的时候,add()方法是抛出异常让你处理,而offer()方法是直接返回false