2021SC@SDUSC
Bottlenck
标准Bottlenck
网络架构中的bottlenack模块 ,分为True和False
残差块结构
class Bottleneck(nn.module):
# standard bottleneck
# bottlenack(True时)
'''
参数说明
c1:bottleneck结果的输入通道维度
c2:bottleneck结构的输出通道维度
shortcut:是否给bottleneck结构部添加shortcut连接,添加后即为ResNet模块;
g:groups,通道分组的参数,输入通道数、输出通道数必须满足被groups整除
e:expansion:bottleneck结构中的瓶颈部分的通道膨胀率,使用0.5即变为输入的1/2
这个e有点类似于一种控制瓶颈的参数,e越小瓶颈越窄
瓶颈指的是:首先经过一个Conv将通道数缩小,然后在通过一个Conv变成原来的通道数,而e就是控制这个窄度的
有实验表明,这种瓶颈结构可以很好的减少训练参数
'''
def __init__(self, c1, c2, shortcut=True, g=1, e=0.5): # ch_in ch_out shortcut短接 groups expansion
super(Bottleneck,self).__init__()
c_ = int(c2 * e) # hidden channels
self.cv1 = Conv(c1, c_, 1, 1) # 第一个conv模块 1*1的卷积
self.cv2 = Conv(