GlobalMaxPooling1D和MaxPooling1D的区别

区别:
**

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"]
                  )
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值