Skip to content

shufflenetv1的一个问题 #40

@lk1048453160

Description

@lk1048453160

1
不知道是不是我理解的不对,这里有一点不太懂:
`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。
期待您的回答,谢谢!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions