PyTorch代码
# 配置信息,看n那一列,共17个InvertedResidual块
inverted_residual_setting = [
# t, c, n, s
# expand factor, output channel, num of blocks, stride
[1, 16, 1, 1],
[6, 24, 2, 2],
[6, 32, 3, 2],
[6, 64, 4, 2],
[6, 96, 3, 1],
[6, 160, 3, 2],
[6, 320, 1, 1],
]
(N, 3, 224, 224)
【Conv3x3 3→32 s=2 p=1】
【BN + ReLU6】
(N, 32, 112, 112)
【Inverted Residual】(stride=1)
(N, 16, 112, 112)
【Inverted Residual】
【Inverted Residual】(stride=2)
(N, 24, 56, 56)
【Inverted Residual】
【Inverted Residual】
【Inverted Residual】(stride=2)
(N, 32, 28, 28)
【Inverted Residual】
【Inverted Residual】
【Inverted Residual】
【Inverted Residual】(stride=2)
(N, 64, 14, 14)
【Inverted Residual】
【Inverted Residual】
【Inverted Residual】(stride=1)
(N, 96, 14, 14)
【Inverted Residual】
【Inverted Residual】
【Inverted Residual】(stride=2)
(N, 160, 7, 7)
【Inverted Residual】(stride=1)
(N, 320, 7, 7)
【Conv1x1 320→1280 s=1 p=0】
【BN + ReLU6】
(N, 1280, 7, 7)
【Global AvgPool】
(N, 1280, 1, 1)→(N, 1280)
【Dropout p=0.2】
【Linear 1280→1000】
(N, 1000)