运维最全学习笔记1——常用的注意力机制(即插即用)_cam注意力机制(3),2024年最新腾讯T3大牛亲自教你

为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪offer怀里抱!

这次整理的面试题,小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。

本份面试集锦涵盖了

  • 174 道运维工程师面试题
  • 128道k8s面试题
  • 108道shell脚本面试题
  • 200道Linux面试题
  • 51道docker面试题
  • 35道Jenkis面试题
  • 78道MongoDB面试题
  • 17道ansible面试题
  • 60道dubbo面试题
  • 53道kafka面试
  • 18道mysql面试题
  • 40道nginx面试题
  • 77道redis面试题
  • 28道zookeeper

总计 1000+ 道面试题, 内容 又全含金量又高

  • 174道运维工程师面试题

1、什么是运维?

2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?

3、现在给你三百台服务器,你怎么对他们进行管理?

4、简述raid0 raid1raid5二种工作模式的工作原理及特点

5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?

6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?

7、Tomcat和Resin有什么区别,工作中你怎么选择?

8、什么是中间件?什么是jdk?

9、讲述一下Tomcat8005、8009、8080三个端口的含义?

10、什么叫CDN?

11、什么叫网站灰度发布?

12、简述DNS进行域名解析的过程?

13、RabbitMQ是什么东西?

14、讲一下Keepalived的工作原理?

15、讲述一下LVS三种模式的工作过程?

16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

17、如何重置mysql root密码?

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

import torch
from torch import nn

class CA_Block(nn.Module):
def init(self, channel, h, w, reduction=16):
super(CA_Block, self).init()

    self.h = h
    self.w = w

    self.avg_pool_x = nn.AdaptiveAvgPool2d((h, 1))
    self.avg_pool_y = nn.AdaptiveAvgPool2d((1, w))

    self.conv_1x1 = nn.Conv2d(in_channels=channel, out_channels=channel//reduction, kernel_size=1, stride=1, bias=False)

    self.relu = nn.ReLU()
    self.bn = nn.BatchNorm2d(channel//reduction)

    self.F_h = nn.Conv2d(in_channels=channel//reduction, out_channels=channel, kernel_size=1, stride=1, bias=False)
    self.F_w = nn.Conv2d(in_channels=channel//reduction, out_channels=channel, kernel_size=1, stride=1, bias=False)

    self.sigmoid_h = nn.Sigmoid()
    self.sigmoid_w = nn.Sigmoid()

def forward(self, x):

    x_h = self.avg_pool_x(x).permute(0, 1, 3, 2)
    x_w = self.avg_pool_y(x)

    x_cat_conv_relu = self.relu(self.conv_1x1(torch.cat((x_h, x_w), 3)))

    x_cat_conv_split_h, x_cat_conv_split_w = x_cat_conv_relu.split([self.h, self.w], 3)

    s_h = self.sigmoid_h(self.F_h(x_cat_conv_split_h.permute(0, 1, 3, 2)))
    s_w = self.sigmoid_w(self.F_w(x_cat_conv_split_w))

    out = x * s_h.expand_as(x) * s_w.expand_as(x)

    return out

if name == ‘main’:
x = torch.randn(1, 16, 128, 64) # b, c, h, w
ca_model = CA_Block(channel=16, h=128, w=64)
y = ca_model(x)
print(y.shape)


 3、ECA模块


论文:[(PDF) ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks (researchgate.net)]( ) ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks (researchgate.net)")


参考:[注意力机制(SE、Coordinate Attention、CBAM、ECA,SimAM)、即插即用的模块整理\_吴大炮的博客-CSDN博客\_se注意力机制]( )


![](https://img-blog.csdnimg.cn/62ead8be56f74536b191476a5532d431.png)


ECA首先通过全局平均池化,然后利用卷积进行特征提取,实现跨通道的交互。


4、CBAM模块


论文: [[1807.06521] CBAM:卷积块注意模块 (arxiv.org)]( )")


参考:[注意力机制之《CBAM: Convolutional Block Attention Module》论文阅读\_落樱弥城的博客-CSDN博客]( )


![](https://img-blog.csdnimg.cn/9c27ae909c724745800680a4e277220d.png)


![](https://img-blog.csdnimg.cn/3d800630460c4cb0abf0da5feb3ee088.png) 


CBAM模块分为channel-wise attention和spatial attention,通道注意力和SE结构相同,只是加了一个maxpooling,中间共享一个MLP,最后将两部分的输出相加经过sigmoid。


空间注意力使用平均池化和最大池化对输入特征层进行通道压缩,在使用卷积操作。



class ChannelAttention(nn.Module):
def init(self, in_planes, ratio=16):
super(ChannelAttention, self).init()
self.avg_pool = nn.AdaptiveAvgPool2d(1)
self.max_pool = nn.AdaptiveMaxPool2d(1)

    self.fc1   = nn.Conv2d(in_planes, in_planes // ratio, 1, bias=False)
    self.relu1 = nn.ReLU()
    self.fc2   = nn.Conv2d(in_planes // ratio, in_planes, 1, bias=False)

    self.sigmoid = nn.Sigmoid()

def forward(self, x):
    avg_out = self.fc2(self.relu1(self.fc1(self.avg_pool(x))))
    max_out = self.fc2(self.relu1(self.fc1(self.max_pool(x))))
    out = avg_out + max_out
    return self.sigmoid(out)

class SpatialAttention(nn.Module):
def init(self, kernel_size=7):
super(SpatialAttention, self).init()

    assert kernel_size in (3, 7), 'kernel size must be 3 or 7'
    padding = 3 if kernel_size == 7 else 1

    self.conv1 = nn.Conv2d(2, 1, kernel_size, padding=padding, bias=False)
    self.sigmoid = nn.Sigmoid()

def forward(self, x):
    avg_out = torch.mean(x, dim=1, keepdim=True)
    max_out, _ = torch.max(x, dim=1, keepdim=True)
    x = torch.cat([avg_out, max_out], dim=1)
    x = self.conv1(x)
    return self.sigmoid(x)

5、GAM模块


论文:[https://paperswithcode.com/paper/global-attention-mechanism-retain-information]( )


GAM注意力机制分为两个模块:CAM和SAM,通道注意是学习不同通道的权值,并用权值对不同通道进行多重划分,空间注意关注目标在图像上的位置信息,并通过空间特征的加权选择性的聚焦每个空间的特征。


![](https://img-blog.csdnimg.cn/986e9331c4074bdc8c078fe6ee7ab33e.png)


 通道注意力模块首先重新排列图像三维信息,然后通过MLP来放大跨维通道空间,如图6所示。在空间注意子模块中,使用两个卷积层进行空间信息融合,如图7所示,这样使通道更能关注空间信息。


![](https://img-blog.csdnimg.cn/6459baf4a47f46c2b59c0bb9494f50df.png)



import torch.nn as nn
import torch

class GAM_Attention(nn.Module):
def init(self, in_channels, out_channels, rate=4):
super(GAM_Attention, self).init()

    self.channel_attention = nn.Sequential(
        nn.Linear(in_channels, int(in_channels / rate)),
        nn.ReLU(inplace=True),
        nn.Linear(int(in_channels / rate), in_channels)
    )

    self.spatial_attention = nn.Sequential(
        nn.Conv2d(in_channels, int(in_channels / rate), kernel_size=7, padding=3),
        nn.BatchNorm2d(int(in_channels / rate)),
        nn.ReLU(inplace=True),
        nn.Conv2d(int(in_channels / rate), out_channels, kernel_size=7, padding=3),
        nn.BatchNorm2d(out_channels)
    )

def forward(self, x):
    b, c, h, w = x.shape
    x_permute = x.permute(0, 2, 3, 1).view(b, -1, c)
    x_att_permute = self.channel_attention(x_permute).view(b, h, w, c)
    x_channel_att = x_att_permute.permute(0, 3, 1, 2)

    x = x * x_channel_att

    x_spatial_att = self.spatial_attention(x).sigmoid()
    out = x * x_spatial_att

    return out

if name == ‘main’:
x = torch.randn(1, 64, 32, 48)
b, c, h, w = x.shape
net = GAM_Attention(in_channels=c, out_channels=c)
y = net(x)


 6、NAM模块


论文:[https://arxiv.org/abs/2111.12419]( )


**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以点击这里获取!](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**




**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以点击这里获取!](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值