一维最大池化层
keras.layers.MaxPooling1D(
pool_size=2, strides=None, padding="valid", data_format=None, name=None, **kwargs
)
pool_size
:整数或整数元组,表示池化窗口的大小。如果为整数,则在每个维度上使用相同的池化窗口大小。例如,pool_size=2
表示在每个维度上使用大小为 2 的池化窗口。strides
:整数或整数元组,表示池化窗口在每个维度上的步长。如果为整数,则在每个维度上使用相同的步长。例如,strides=2
表示在每个维度上使用步长为 2 的池化窗口。默认值为 None
,此时步长与池化窗口大小相同。padding
:字符串,表示填充方式。可选值为 "valid"(不填充)和 "same"(填充)。默认值为 "valid"。data_format
:字符串,表示输入数据的格式。可选值为 "channels_first"(通道优先)和 "channels_last"(通道最后一个)。默认值为 None
,此时根据 TensorFlow 的版本自动选择数据格式。name
:字符串,表示该层的名称。默认值为 None
。#创建一维数组x
x = np.array([1., 2., 3., 4., 5.])
#使用reshape函数将x重塑为形状为[1, 5, 1]
x = np.reshape(x, [1, 5, 1])
#创建一个一维最大池化层max_pool_1d
#设置池化窗口大小为2,步长为1,填充方式为"valid"
max_pool_1d = keras.layers.MaxPooling1D(pool_size=2,strides=1, padding="valid")
#将重塑后的数组x输入到最大池化层max_pool_1d中
max_pool_1d(x)
二维最大池化层
keras.layers.MaxPooling2D(
pool_size=(2, 2), strides=None, padding="valid", data_format=None, name=None, **kwargs
)
pool_size
: 一个元组,表示池化窗口的大小。例如,(2, 2)
表示在每个维度上使用大小为 2x2 的池化窗口。默认值为 (2, 2)
。strides
: 一个元组,表示池化窗口在每个维度上的步长。如果为 None
,则默认步长与池化窗口大小相同。默认值为 None
。padding
: 一个字符串,表示填充方式。可选值为 "valid"
(不填充)和 "same"
(填充)。默认值为 "valid"
。data_format
: 一个字符串,表示输入数据的数据格式。可选值为 "channels_first"
和 "channels_last"
。默认值为 None
,表示根据 Keras 的配置自动选择数据格式。name
: 一个字符串,表示该层的名称。默认值为 None
。# 创建一个3x3的二维数组x
x = np.array([[1., 2., 3.],
[4., 5., 6.],
[7., 8., 9.]])
# 将x重塑为一个四维张量,形状为[1, 3, 3, 1]
x = np.reshape(x, [1, 3, 3, 1])
# 创建一个MaxPooling2D层,池化窗口大小为(2, 2),步长为(1, 1),填充方式为"valid"
max_pool_2d = MaxPooling2D(pool_size=(2, 2), strides=(1, 1), padding="valid")
# 对输入数据x应用最大池化操作
output = max_pool_2d(x)
三维最大池化层
keras.layers.MaxPooling3D(
pool_size=(2, 2, 2),
strides=None,
padding="valid",
data_format=None,
name=None,
**kwargs
)
pool_size
: 一个三元组,表示在每个维度上的最大池化窗口的大小。例如,(2, 2, 2)
表示在每个维度上使用大小为2x2x2的窗口进行最大池化。strides
: 一个可选参数,表示在每个维度上的步长。默认情况下,步长与池化窗口大小相同。如果设置为None
,则步长将自动计算为池化窗口大小的整数倍。padding
: 一个可选参数,表示填充方式。默认值为"valid"
,表示不进行填充。其他可选值包括"same"
,表示在输入数据的边缘添加填充以保持输出尺寸与输入尺寸相同。data_format
: 一个可选参数,表示输入数据的格式。默认情况下,根据Keras的配置自动选择数据格式。可选值为"channels_first"
和"channels_last"
,分别表示通道维度在前或后。name
: 一个可选参数,表示该层的名称。这可以用于在模型中引用该层。# 创建一个随机的3D张量作为输入数据
input_data = np.random.rand(1, 6, 6, 6, 3)
# 创建一个Sequential模型
model = keras.layers.Sequential()
# 向模型中添加一个3D最大池化层,池化窗口大小为2x2x2
model.add(keras.layers.MaxPooling3D(pool_size=(2, 2, 2), input_shape=(6, 6, 6, 3)))
# 打印模型结构
model.summary()
# 使用模型对输入数据进行预测
output_data = model.predict(input_data)