MaxPooling1D和globalMaxPooling1D的区别

本文详细介绍了MaxPooling1D和GlobalMaxPooling1D在深度学习中的作用和区别。MaxPooling1D通过指定的池化窗口在输入数据的第二维上进行局部最大值提取,而GlobalMaxPooling1D则是对整个第二维数据求最大值,实现全局信息的保留。这两种池化方法在神经网络中常用于减少数据维度,提高模型效率。
部署运行你感兴趣的模型镜像

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]。

是对每一次卷积的kernel内的向量求最大值,产生一个新的向量。而没有做额外多余的处理。
 

the  [[.7, -0.2, .1]   |池化大小是2,所以一次选两个字,首先对                
boy   [.8, -.3,  .2]   | 前两个向量求最大值,也就是the和boy。   | 步长是1,移动到
will  [.2, -.1,  .4]                                       | boy和will
live  [.4  -.4,  .8]]  

池化层处理时并未增加新的变量和参数。

Keras学习笔记(四):MaxPooling1D和GlobalMaxPooling1D的区别_林夕-优快云博客_maxpooling1d

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

import tensorflow as tf from tensorflow.keras import layers, Model from tensorflow.keras.layers import BatchNormalization, Conv1D, ReLU, Concatenate, GlobalAveragePooling1D, \ GlobalMaxPooling1D, MaxPool1D, Dense # 基本模块 def basic_block(x, growth_rate): x1 = BatchNormalization()(x) x1 = ReLU()(x1) x1 = Conv1D(growth_rate, kernel_size=7, strides=1, padding='same')(x1) return Concatenate(axis=-1)([x, x1]) # 原始输入通道数 + growth_rate # 密集模块 def dense_block(x, num_layers, growth_rate): for _ in range(num_layers): x = basic_block(x, growth_rate) # 输入通道数 + num_layers * growth_rate return x # 过渡模块 def transition_layer(x, out_channels): x = BatchNormalization()(x) x = ReLU()(x) x = Conv1D(out_channels, kernel_size=5, strides=1, padding='same')(x) x = MaxPool1D(pool_size=3, strides=2, padding='same')(x) return x def bit_output(x, num_bits=32): logits = Dense(num_bits * 2)(x) return tf.reshape(logits, (-1, num_bits, 2)) def DenseNet(input_shape=(448, 2)): inputs = layers.Input(shape=input_shape) # 初始卷积层 x = layers.Conv1D(64, kernel_size=7, strides=1, padding='same')(inputs) x = layers.BatchNormalization()(x) x = layers.ReLU()(x) # 第一组过渡模块密集模块 x = transition_layer(x, 128) x = dense_block(x, 2, 128) # 第二组过渡模块密集模块 x = transition_layer(x, 64) x = dense_block(x, 3, 64) # 第三组过渡模块密集模块 x = transition_layer(x, 64) x = dense_block(x, 4, 64) # 第四组过渡模块密集模块 x = transition_layer(x, 64) x = dense_block(x, 3, 64) x = Conv1D(150, kernel_size=5, strides=1, padding='same')(x) x = BatchNormalization()(x) x = ReLU()(x) x_max = GlobalMaxPooling1D()(x) x_avg = GlobalAveragePooling1D()(x) x = layers.Concatenate(axis=-1)([x_max, x_avg]) # 最终特征向量 x = bit_output(x) model = Model(inputs=inputs, outputs=x) return model if __name__ == '__main__': model = DenseNet(input_shape=(448, 2)) model.summary() 我这个代码最终其实是想对输入的二进制比特进行恢复的,你看我那个设计可行吗,单独的32个二进制分类器效果一样吗
最新发布
11-20
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会发paper的学渣

您的鼓励和将是我前进的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值