- Tensorflow最大池化
- Tensorflow提供tf.nn.max_pool()函数用于对卷积层实现最大池化
conv_layer = tf.nn.conv2d(input, weight, strides=[1, 2, 2, 1], padding='SAME') conv_layer = tf.nn.bias_add(conv_layer, bias) conv_layer = tf.nn.relu(conv_layer) # Apply Max Pooling conv_layer = tf.nn.max_pool( conv_layer, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='SAME')
ksize参数是滤波器大小,strides参数时步长.22的滤波器配合22的步长时常用设定.ksize 和 strides 参数也被构建为四个元素的列表,每个元素对应 input tensor 的一个维度 ([batch, height, width, channels]),对 ksize 和 strides 来说,batch 和 channel 通常都设置成 1。
- 池化层的缺点:
- 现在的数据集又大又复杂,我们更关心欠拟合问题。
- Dropout 是一个更好的正则化方法。
- 池化导致信息损失。想想最大池化的例子,n 个数字中我们只保留最大的,把余下的 n-1 完全舍弃了。
- 池化之后新的宽和高的计算公式:
设置H = height, W = width, D = depth
- 输入维度是 4x4x5 (HxWxD)
- 滤波器大小 2x2 (HxW)
- stride 的高和宽都是 2 (S)
- new_height = (input_height - filter_height)/S + 1
- new_width = (input_width - filter_width)/S + 1