热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

TensorFlow最大池化

由Aphex34(自己的作品) CCBY-SA4.0,通过WikimediaCommons共享 这是一个最大池化的例子maxpooling 用了2x2的滤波器stride为2。四个
TensorFlow 最大池化

由 Aphex34 (自己的作品) CC BY-SA 4.0, 通过 Wikimedia Commons 共享

 

这是一个最大池化的例子max pooling 用了 2x2 的滤波器 stride 为 2。四个 2x2 的颜色代表滤波器移动每个步长所产出的最大值。

例如 [[1, 0], [4, 6]] 生成 6,因为 6 是这4个数字中最大的。同理 [[2, 3], [6, 8]] 生成 8。 理论上,最大池化操作的好处是减小输入大小,使得神经网络能够专注于最重要的元素。最大池化只取覆盖区域中的最大值,其它的值都丢弃。

TensorFlow 提供了 tf.nn.max_pool() 函数,用于对卷积层实现 最大池化 。

1 conv_layer = tf.nn.conv2d(input, weight, strides=[1, 2, 2, 1], padding='SAME')
2 conv_layer = tf.nn.bias_add(conv_layer, bias)
3 conv_layer = tf.nn.relu(conv_layer)
4 # Apply Max Pooling
5 conv_layer = tf.nn.max_pool(
6     conv_layer,
7     ksize=[1, 2, 2, 1],
8     strides=[1, 2, 2, 1],
9     padding='SAME')

 

tf.nn.max_pool() 函数实现最大池化时, ksize参数是滤波器大小,strides参数是步长。2x2 的滤波器配合 2x2 的步长是常用设定。

ksize 和 strides 参数也被构建为四个元素的列表,每个元素对应 input tensor 的一个维度 ([batch, height, width, channels]),对 ksize 和 strides 来说,batch 和 channel 通常都设置成 1

 

strides [1, 2, 2, 1] 参数:

 

  • strides[0] = 1,也即在 batch 维度上的移动为 1,也就是不跳过任何一个样本,否则当初也不该把它们作为输入(input)
  • strides[1] = 2,水平移动的步长
  • strides[2] = 2,垂直移动的步长
  • strides[3] = 1,也即在 channels 维度上的移动为 1,也就是不跳过任何一个颜色通道;

 

一般情况下,需要可能需要更改的就是中间的两个变量。

 


推荐阅读
author-avatar
尤物-tina_549
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有