对比Flatten() (按batch进行压缩) 和AveragePooling2D (按通道进行压缩) 区别

本文对比了Flatten操作与AveragePooling2D在处理张量时的不同。Flatten将张量展平为一维,而AveragePooling2D则按通道进行平均池化。举例说明中,Flatten将(样本,10,20,1)展平为(样本,10 * 20 * 1),而AveragePooling2D将(样本,10,20,1)输出为(样本,1,1,1)。在处理长文本时,Flatten和Global Average Pooling(GAP)也展现出不同效果:Flatten将整个图片展平为一个数,而GAP则将输入图同一到每个维度一个数。" 104413172,6755536,微信小程序:评论功能与订阅消息实现,"['微信小程序开发', '云开发', '云函数', '订阅消息']
摘要由CSDN通过智能技术生成

Flatten() :张量(样本,10,20,1)将被展平为(样本,10 * 20 * 1)

AveragePooling2D:   张量(样本,10,20,1)将作为(样本,1,1,1)输出,假设第二维和第三维是空间的(通道最后)

 

 

案例2:

输入为(32,420)的长文本,输出为(batch,1,106,512)  ps:其中1*106为特征图输出大小

                                           

def MEAN_Spot(opt): # channel 1 inputs1 = layers.Input(shape=(42,42,1)) conv1 = layers.Conv2D(3, (5,5), padding='same', activation='relu', kernel_regularizer=l2(0.001))(inputs1) bn1 = layers.BatchNormalization()(conv1) pool1 = layers.MaxPooling2D(pool_size=(3, 3), padding='same', strides=(3,3))(bn1) do1 = layers.Dropout(0.3)(pool1) # channel 2 inputs2 = layers.Input(shape=(42,42,1)) conv2 = layers.Conv2D(3, (5,5), padding='same', activation='relu', kernel_regularizer=l2(0.001))(inputs2) bn2 = layers.BatchNormalization()(conv2) pool2 = layers.MaxPooling2D(pool_size=(3, 3), padding='same', strides=(3,3))(bn2) do2 = layers.Dropout(0.3)(pool2) # channel 3 inputs3 = layers.Input(shape=(42,42,1)) conv3 = layers.Conv2D(8, (5,5), padding='same', activation='relu', kernel_regularizer=l2(0.001))(inputs3) bn3 = layers.BatchNormalization()(conv3) pool3 = layers.MaxPooling2D(pool_size=(3, 3), padding='same', strides=(3,3))(bn3) do3 = layers.Dropout(0.3)(pool3) # merge 1 merged = layers.Concatenate()([do1, do2, do3]) # interpretation 1 merged_conv = layers.Conv2D(8, (5,5), padding='same', activation='relu', kernel_regularizer=l2(0.1))(merged) merged_pool = layers.MaxPooling2D(pool_size=(2, 2), padding='same', strides=(2,2))(merged_conv) flat = layers.Flatten()(merged_pool) flat_do = layers.Dropout(0.2)(flat) # outputs outputs = layers.Dense(1, activation='linear', name='spot')(flat_do) #Takes input u, v, os model = keras.models.Model(inputs=[inputs1, inputs2, inputs3], outputs=[outputs]) model.compile( loss={'spot':'mse'}, optimizer=opt, metrics={'spot':tf.keras.metrics.MeanAbsoluteError()}, ) return model 如何将特征图合并处理并且加入通道注意力和空间注意力模块
06-08
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值