tensorflow基础学习—卷积神经网络_池化层

在卷积神经网络的大致结构,卷积层之间往往会加上一个池化层,池化层可以有效地缩小矩阵的尺寸,从未减少最后全连接层中的参数,使用初花层可以加快计算速度也有防止过拟合问题的作用。

与卷积层类似,池化层前向传播的过程也是通过移动一个类似过滤器的结构完成的。不过池化层过滤器中的计算不是节点的加权和,而是采用更加简单的最大值或者平均值运算。使用最大值操作的池化层被称之为最大池化层, 这是被使用得最多的池化层结构。使用平均值操作的池化层被称之为平均池化层。

与卷积层的过滤器类似,池化层的过滤器也需要人工设定过滤器的尺寸、是否使用全0填充以及过滤器移动的步长等设置,而且这些设置的意义也是一样的。卷积层和池化层中过滤器移动的方式是相似的,唯一的区别在于卷积层使用的过滤器是横跨整个深度的,而池化层使用的过滤器只影响一个深度上的节点。所以池化层的过滤器除了在长和宽两个维度移动,它还需要在深度这个维度移动。图6-14 展示了一个最大池化层前向传播计算过程。

不同颜色或者不同线段(虚线或者实线)代表了不同的池化层过滤器。从图6- 14 中可以轩出,池化层的过滤器除了在长和宽的维度上移动,它还需要在深度的维度上移动。以下Te nsorFlow 程序实现了最大池化层的前向传播算法。

#tf.nn.max_pool 实现了最大池化层的前向传播过程,它的参数和tf.nn.conv2d函数类似
#ksize 提供了过滤器的尺寸,strides提供了步长信息,padding提供了是否使用全0填充,
pool=tf.nn.max_pool(actived_conv,ksize=[1,3,3,1],strides=[1,2,2,1],padding='SAME')

对比池化层和l 卷积层前向传播在TensorFlow 中的实现,可以发现函数的参数形式是相似的。在tf.nn.max_pool 函数中, 首先需要传入当前层的节点矩阵,这个矩阵是一个四维矩阵,格式和tf.nn.conv2d 函数中的第一个参数一致。第二个参数为过滤器的尺寸。虽然给出
的是一个长度为4 的一维数组,但是这个数组的第一个和最后一个数必须为1 。这意味着池化层的过滤器是不可以跨不同输入样例或者节点矩阵深度的。在实际应用中使用得最多的池化层过滤器尺为[ 1,2,2,1]或者[ 1,3,3,1] 。tf.nn.max_pool 函数的第三个参数为步长,它和tf.nn.conv2d 函数中步长的意义是一样的,而且第一维和最后一维也只能为1。这意味着在TensorFlow 中,池化层不能减少节点矩阵的深度或者输入样例的个数。tf.nn.max_pool 函数的最后一个参数指定了是否使用全0填充。这个参数也凡有两种取值一VALID 或者SAME ,其中VALID 表示不使用全0 填充,SAME 表示使用全0 填充。TensorFlow 还提供了tf.nn.avg_pool 来实现平均池化层。tf.nn.avg_pool 函数的调用格式和tf.nn.max_pool 函数是一致的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值