tf.keras.layers.AveragePooling2D平均池化层

介绍

平均池化操作

常用别名

  • tf.keras.layers.AvgPool2D

计算公式

  • S是strides(滑动步长)
  • 原图片大小为 i (一般预处理成正方形)
  • 池化窗口大小为 k(一般高宽相同)
  • P是padding大小

计算结果大小:( i - k + 2 * P ) / S + 1

语法

__init__(
    pool_size=(2, 2),
    strides=None,
    padding='valid',
    data_format=None,
    **kwargs
)
参数
  • pool_size:指定池化窗口的大小。可以是一个整数或者tuple
    • 一个整数:宽高都是该整数
    • tuple:(pool_height,pool_width)
  • strides:池化窗口的步长。可以是一个整数或者tuple,如果为None,其值就是pool_size
    • 一个整数:宽高都是该整数
    • tuple:(pool_height,pool_width)
  • padding:字符串,"valid" or "same"之一
    • “valid”:不是不填充
    • “same”:填充,让计算公式不受 pool_size影响
  • data_format:字符串,channels_last(默认)或channels_first中的一个,输入中维度的排序,
    • channels_last:表示输入数据形状(batch,height, width, channels)
    • channels_first:表示输入数据形状(batch, channels, height,width)的输入。
Input shape:
  • If data_format=’channels_last’: 4D tensor with shape (batch_size, rows, cols, channels).

  • If data_format=’channels_first’: 4D tensor with shape (batch_size, channels, rows, cols).

Output shape:
  • If data_format=’channels_last’: 4D tensor with shape (batch_size, pooled_rows, pooled_cols, channels).

  • If data_format=’channels_first’: 4D tensor with shape (batch_size, channels, pooled_rows, pooled_cols).

例子

import tensorflow as tf
import numpy as np

# 模拟图片数据
np.random.seed(9)
arr=np.random.randint(1,9,(4,4))
print(arr)
print('-'*50)
arr=arr.reshape((1,4,4,1)).astype("float32")


# 进行平均池化运算
inp=tf.keras.Input(shape=(4,4,1))
x=tf.keras.layers.AveragePooling2D()(inp)
model=tf.keras.Model(inputs=[inp],outputs=[x])
res=model(arr)
w,h=res.shape[1],res.shape[2]
res=tf.reshape(res,(w,h))
tf.print(res)

执行结果

[[7 5 7 6]
 [7 1 4 7]
 [6 2 7 5]
 [4 1 3 2]]
--------------------------------------------------
[[5 6]
 [3.25 4.25]]

理解:
(7+5+7+1)/4=5


原文出处:/show_1EF5KTELweHb.html