GlobalMaxPooling1D和MaxPooling1D的区别

本文探讨了两种池化技术在神经网络中的应用,GlobalMaxPooling1D和MaxPooling1D,特别关注于它们在处理文本序列数据时的区别。通过实例展示了如何在Keras中使用这两种方法,从嵌入层到全局池化,揭示了在自然语言处理任务中的作用和效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

区别:
**

1.GlobalMaxPooling1D:

**
在steps维度(也就是第二维)对整个数据求最大值。
比如说输入数据维度是[10, 4, 10],那么进过全局池化后,输出数据的维度则变成[10, 10]。

**

2.MaxPooling1D:

**
也是在steps维度(也就是第二维)求最大值。但是限制每一步的池化的大小。 比如,输入数据维度是[10, 4, 10],池化层大小pooling_size=2,步长stride=1,那么经过MaxPooling(pooling_size=2, stride=1)后,输出数据维度是[10, 3, 10]。

k_input = keras.Input(shape=(config.max_seq_length,))
    print(k_input.shape)
    embedding = Embedding(config.vocab_size, config.embedding_dim, input_length=config.max_seq_length)
    embedding_input = embedding(k_input)
    # 加入一维卷积,conv shape为(None, 48(50-3+1), 128(卷积核数))
    conv_1 = Conv1D(config.num_filters, config.kernel_size)(embedding_input)
    # 加入一维池化,在第二个维度上向下滑pool_1(None, 46(48-3+1), 128)
    # pool_1 = MaxPooling1D(3, 1)(conv_1)
    # # 再加入一维卷积,conv_2(None, 44(46-3+1), 64)
    # conv_2 = Conv1D(64, config.kernel_size)(pool_1)
    # 再加入一维池化,pool_2(None, 42(44-3+1), 64)
    # pool_2 = MaxPooling1D(3, 1)(conv_2)
    # 最后全局池化,按照第二个维度取最大值,所以第二个维度就消失了pool_3(None, 64)
    pool_3 = GlobalMaxPooling1D()(conv_1)
    print(pool_3.shape)
    print(222222)
    print(embedding_input.shape)
    # global_embedding_input = GlobalAveragePooling1D()(embedding_input)
    hidden1_layer_tensor = Dense(64, activation='relu')(pool_3)
    output_layer_tensor = Dense(config.num_classes, activation="softmax")(hidden1_layer_tensor)
    model = keras.Model(inputs=k_input, outputs=output_layer_tensor)
    model.compile(
                    loss='categorical_crossentropy',
                    optimizer='adam',
                    metrics=["accuracy"]
                  )
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值