Tensorflow池化

  1. 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。

  • 池化层的缺点:
  1. 现在的数据集又大又复杂,我们更关心欠拟合问题。
  2. Dropout 是一个更好的正则化方法。
  3. 池化导致信息损失。想想最大池化的例子,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

你可能感兴趣的:(TensorFlow)