SENet(Squeeze-and-Excitation Networks)
先做一个全局平均池化Global Average Pooling,输出的1x1xC的数据经过两级全连接限制到[0,1]范围内,再把这个值作为scale乘到U的C个通道上,作为下一级的输入数据。
第一个全连接把C个通道压缩成C/r个通道来降低计算量后面带Relu,第二个全连接再回复为C个通道后面跟了sigmoid,r是压缩比例。
SENet与ResNet和Inception结合
keras代码
squeeze = GlobalAveragePooling2D()(x)
excitation = Dense(units=out_dim // self.ratio)(squeeze)
excitation = self.activation(excitation)
excitation = Dense(units=out_dim)(excitation)
excitation = self.activation(excitation, 'sigmoid')
excitation = Reshape((1,1,out_dim))(excitation)
scale = multiply([x,excitation])