-
Notifications
You must be signed in to change notification settings - Fork 275
Closed
Description

不知道是不是我理解的不对,这里有一点不太懂:
`branch_main_1 = [
# pw
nn.Conv2d(inp, mid_channels, 1, 1, 0, groups=1 if first_group else group, bias=False),
nn.BatchNorm2d(mid_channels),
nn.ReLU(inplace=True),
# dw
nn.Conv2d(mid_channels, mid_channels, ksize, stride, pad, groups=mid_channels, bias=False),
nn.BatchNorm2d(mid_channels),
]
branch_main_2 = [
# pw-linear
nn.Conv2d(mid_channels, outputs, 1, 1, 0, groups=group, bias=False),
nn.BatchNorm2d(outputs),
]
self.branch_main_1 = nn.Sequential(*branch_main_1)
self.branch_main_2 = nn.Sequential(*branch_main_2)
if stride == 2:
self.branch_proj = nn.AvgPool2d(kernel_size=3, stride=2, padding=1)
def forward(self, old_x):
x = old_x
x_proj = old_x
_**x = self.branch_main_1(x)
if self.group > 1:
x = self.channel_shuffle(x)
x = self.branch_main_2(x)**_
if self.stride == 1:
return F.relu(x + x_proj)
elif self.stride == 2:
return torch.cat((self.branch_proj(x_proj), F.relu(x)), 1)`
这里的branch_main_1应该相当于进行了11的GP卷积和33的DW卷积,
这个forward中,先是branch_main_1,在进行 channel shuffle ,这里就和文中不一样了吧,文章中是进行完1*1的,就直接channel shuffle。
期待您的回答,谢谢!
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels