本文介绍了基于Paddle实现Inception Conv及魔改版ResNet的过程。Inception Conv通过并联不同空洞卷积并拼接结果构成,魔改版ResNet将主干3x3标准卷积替换为Inception Conv。文中展示了模型搭建、测试细节,包括结构总览、参数量等,验证其在ILSVRC2012数据集上的精度,top1准确率达77.16%,top5达93.48%。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

import reimport jsonimport paddleimport paddle.nn as nnfrom paddle.vision.models import resnet
class IC_Conv2D(nn.Layer):
def __init__(self, pattern_dist, inplanes, planes, kernel_size, stride=1, groups=1, bias_attr=False):
super(IC_Conv2D, self).__init__()
self.conv_list = nn.LayerList()
self.planes = planes for pattern in pattern_dist:
channel = pattern_dist[pattern]
pattern_trans = re.findall(r"\d+\.?\d*", pattern)
pattern_trans[0] = int(pattern_trans[0])+1
pattern_trans[1] = int(pattern_trans[1])+1
if channel > 0:
padding = [0, 0]
padding[0] = (kernel_size+2*(pattern_trans[0]-1))//2
padding[1] = (kernel_size+2*(pattern_trans[1]-1))//2
self.conv_list.append(nn.Conv2D(inplanes, channel, kernel_size=kernel_size, stride=stride,
padding=padding, bias_attr=bias_attr, groups=groups, dilation=pattern_trans)) def forward(self, x):
out = [] for conv in self.conv_list:
out.append(conv(x))
out = paddle.concat(out, axis=1) assert out.shape[1] == self.planes return outclass BottleneckBlock(resnet.BottleneckBlock):
def __init__(self,
inplanes,
planes,
stride=1,
downsample=None,
groups=1,
base_width=64,
dilation=1,
norm_layer=None):
super(BottleneckBlock, self).__init__(inplanes, planes, stride,
downsample, groups, base_width, dilation, norm_layer) global pattern, pattern_index
pattern_index = pattern_index + 1
width = int(planes * (base_width / 64.)) * groups
self.conv2 = IC_Conv2D(
pattern[pattern_index], width, width, kernel_size=3, stride=stride, bias_attr=False)class IC_ResNet(resnet.ResNet):
def __init__(self, block, depth, pattern_path=None, class_dim=1000, with_pool=True):
super(IC_ResNet, self).__init__(resnet.BottleneckBlock,
depth, num_classes=class_dim, with_pool=with_pool) global pattern, pattern_index with open(pattern_path, 'r') as f:
pattern = json.load(f)
pattern_index = -1
self.inplanes = 64
self.dilation = 1
layer_cfg = { 50: [3, 4, 6, 3], 101: [3, 4, 23, 3]
}
layers = layer_cfg[depth]
self.layer1 = self._make_layer(block, 64, layers[0])
self.layer2 = self._make_layer(block, 128, layers[1], stride=2)
self.layer3 = self._make_layer(block, 256, layers[2], stride=2)
self.layer4 = self._make_layer(block, 512, layers[3], stride=2) assert len(pattern) == pattern_index + 1def ic_resnet_50_k9(pretrained=False, **kwargs):
model = IC_ResNet(
BottleneckBlock,
depth=50,
pattern_path='ic_resnet50_k9.json',
**kwargs
) if pretrained:
model.set_dict(paddle.load('ic_resnet50_k9_imagenet_retrain.pdparams')) return model# 实例化模型model = ic_resnet_50_k9(pretrained=True) model.eval()# 模型结构总览paddle.summary(model, (1, 3, 224, 224))# 计算模型参数量和 flopspaddle.flops(model, (1, 3, 224, 224))# 准备一个随机输入x = paddle.randn((1, 3, 224, 224))# 测试前向计算out = model(x)# 打印输出结果的 shapeprint(out.shape)
-------------------------------------------------------------------------------
Layer (type) Input Shape Output Shape Param #
===============================================================================
Conv2D-1 [[1, 3, 224, 224]] [1, 64, 112, 112] 9,408
BatchNorm2D-1 [[1, 64, 112, 112]] [1, 64, 112, 112] 256
ReLU-1 [[1, 64, 112, 112]] [1, 64, 112, 112] 0
MaxPool2D-1 [[1, 64, 112, 112]] [1, 64, 56, 56] 0
Conv2D-55 [[1, 64, 56, 56]] [1, 64, 56, 56] 4,096
BatchNorm2D-55 [[1, 64, 56, 56]] [1, 64, 56, 56] 256
ReLU-18 [[1, 256, 56, 56]] [1, 256, 56, 56] 0
Conv2D-58 [[1, 64, 56, 56]] [1, 42, 56, 56] 24,192
Conv2D-59 [[1, 64, 56, 56]] [1, 5, 56, 56] 2,880
Conv2D-60 [[1, 64, 56, 56]] [1, 1, 56, 56] 576
Conv2D-61 [[1, 64, 56, 56]] [1, 4, 56, 56] 2,304
Conv2D-62 [[1, 64, 56, 56]] [1, 4, 56, 56] 2,304
Conv2D-63 [[1, 64, 56, 56]] [1, 3, 56, 56] 1,728
Conv2D-64 [[1, 64, 56, 56]] [1, 1, 56, 56] 576
Conv2D-65 [[1, 64, 56, 56]] [1, 1, 56, 56] 576
Conv2D-66 [[1, 64, 56, 56]] [1, 2, 56, 56] 1,152
Conv2D-67 [[1, 64, 56, 56]] [1, 1, 56, 56] 576
IC_Conv2D-1 [[1, 64, 56, 56]] [1, 64, 56, 56] 0
BatchNorm2D-56 [[1, 64, 56, 56]] [1, 64, 56, 56] 256
Conv2D-57 [[1, 64, 56, 56]] [1, 256, 56, 56] 16,384
BatchNorm2D-57 [[1, 256, 56, 56]] [1, 256, 56, 56] 1,024
Conv2D-54 [[1, 64, 56, 56]] [1, 256, 56, 56] 16,384
BatchNorm2D-54 [[1, 256, 56, 56]] [1, 256, 56, 56] 1,024
BottleneckBlock-17 [[1, 64, 56, 56]] [1, 256, 56, 56] 0
Conv2D-68 [[1, 256, 56, 56]] [1, 64, 56, 56] 16,384
BatchNorm2D-58 [[1, 64, 56, 56]] [1, 64, 56, 56] 256
ReLU-19 [[1, 256, 56, 56]] [1, 256, 56, 56] 0
Conv2D-71 [[1, 64, 56, 56]] [1, 30, 56, 56] 17,280
Conv2D-72 [[1, 64, 56, 56]] [1, 6, 56, 56] 3,456
Conv2D-73 [[1, 64, 56, 56]] [1, 1, 56, 56] 576
Conv2D-74 [[1, 64, 56, 56]] [1, 1, 56, 56] 576
Conv2D-75 [[1, 64, 56, 56]] [1, 9, 56, 56] 5,184
Conv2D-76 [[1, 64, 56, 56]] [1, 4, 56, 56] 2,304
Conv2D-77 [[1, 64, 56, 56]] [1, 1, 56, 56] 576
Conv2D-78 [[1, 64, 56, 56]] [1, 1, 56, 56] 576
Conv2D-79 [[1, 64, 56, 56]] [1, 1, 56, 56] 576
Conv2D-80 [[1, 64, 56, 56]] [1, 5, 56, 56] 2,880
Conv2D-81 [[1, 64, 56, 56]] [1, 4, 56, 56] 2,304
Conv2D-82 [[1, 64, 56, 56]] [1, 1, 56, 56] 576
IC_Conv2D-2 [[1, 64, 56, 56]] [1, 64, 56, 56] 0
BatchNorm2D-59 [[1, 64, 56, 56]] [1, 64, 56, 56] 256
Conv2D-70 [[1, 64, 56, 56]] [1, 256, 56, 56] 16,384
BatchNorm2D-60 [[1, 256, 56, 56]] [1, 256, 56, 56] 1,024
BottleneckBlock-18 [[1, 256, 56, 56]] [1, 256, 56, 56] 0
Conv2D-83 [[1, 256, 56, 56]] [1, 64, 56, 56] 16,384
BatchNorm2D-61 [[1, 64, 56, 56]] [1, 64, 56, 56] 256
ReLU-20 [[1, 256, 56, 56]] [1, 256, 56, 56] 0
Conv2D-86 [[1, 64, 56, 56]] [1, 41, 56, 56] 23,616
Conv2D-87 [[1, 64, 56, 56]] [1, 5, 56, 56] 2,880
Conv2D-88 [[1, 64, 56, 56]] [1, 3, 56, 56] 1,728
Conv2D-89 [[1, 64, 56, 56]] [1, 1, 56, 56] 576
Conv2D-90 [[1, 64, 56, 56]] [1, 1, 56, 56] 576
Conv2D-91 [[1, 64, 56, 56]] [1, 3, 56, 56] 1,728
Conv2D-92 [[1, 64, 56, 56]] [1, 7, 56, 56] 4,032
Conv2D-93 [[1, 64, 56, 56]] [1, 1, 56, 56] 576
Conv2D-94 [[1, 64, 56, 56]] [1, 2, 56, 56] 1,152
IC_Conv2D-3 [[1, 64, 56, 56]] [1, 64, 56, 56] 0
BatchNorm2D-62 [[1, 64, 56, 56]] [1, 64, 56, 56] 256
Conv2D-85 [[1, 64, 56, 56]] [1, 256, 56, 56] 16,384
BatchNorm2D-63 [[1, 256, 56, 56]] [1, 256, 56, 56] 1,024
BottleneckBlock-19 [[1, 256, 56, 56]] [1, 256, 56, 56] 0
Conv2D-96 [[1, 256, 56, 56]] [1, 128, 56, 56] 32,768
BatchNorm2D-65 [[1, 128, 56, 56]] [1, 128, 56, 56] 512
ReLU-21 [[1, 512, 28, 28]] [1, 512, 28, 28] 0
Conv2D-99 [[1, 128, 56, 56]] [1, 77, 28, 28] 88,704
Conv2D-100 [[1, 128, 56, 56]] [1, 9, 28, 28] 10,368
Conv2D-101 [[1, 128, 56, 56]] [1, 1, 28, 28] 1,152
Conv2D-102 [[1, 128, 56, 56]] [1, 3, 28, 28] 3,456
Conv2D-103 [[1, 128, 56, 56]] [1, 4, 28, 28] 4,608
Conv2D-104 [[1, 128, 56, 56]] [1, 4, 28, 28] 4,608
Conv2D-105 [[1, 128, 56, 56]] [1, 4, 28, 28] 4,608
Conv2D-106 [[1, 128, 56, 56]] [1, 2, 28, 28] 2,304
Conv2D-107 [[1, 128, 56, 56]] [1, 3, 28, 28] 3,456
Conv2D-108 [[1, 128, 56, 56]] [1, 1, 28, 28] 1,152
Conv2D-109 [[1, 128, 56, 56]] [1, 2, 28, 28] 2,304
Conv2D-110 [[1, 128, 56, 56]] [1, 3, 28, 28] 3,456
Conv2D-111 [[1, 128, 56, 56]] [1, 8, 28, 28] 9,216
Conv2D-112 [[1, 128, 56, 56]] [1, 2, 28, 28] 2,304
Conv2D-113 [[1, 128, 56, 56]] [1, 2, 28, 28] 2,304
Conv2D-114 [[1, 128, 56, 56]] [1, 3, 28, 28] 3,456
IC_Conv2D-4 [[1, 128, 56, 56]] [1, 128, 28, 28] 0
BatchNorm2D-66 [[1, 128, 28, 28]] [1, 128, 28, 28] 512
Conv2D-98 [[1, 128, 28, 28]] [1, 512, 28, 28] 65,536
BatchNorm2D-67 [[1, 512, 28, 28]] [1, 512, 28, 28] 2,048
Conv2D-95 [[1, 256, 56, 56]] [1, 512, 28, 28] 131,072
BatchNorm2D-64 [[1, 512, 28, 28]] [1, 512, 28, 28] 2,048
BottleneckBlock-20 [[1, 256, 56, 56]] [1, 512, 28, 28] 0
Conv2D-115 [[1, 512, 28, 28]] [1, 128, 28, 28] 65,536
BatchNorm2D-68 [[1, 128, 28, 28]] [1, 128, 28, 28] 512
ReLU-22 [[1, 512, 28, 28]] [1, 512, 28, 28] 0
Conv2D-118 [[1, 128, 28, 28]] [1, 65, 28, 28] 74,880
Conv2D-119 [[1, 128, 28, 28]] [1, 3, 28, 28] 3,456
Conv2D-120 [[1, 128, 28, 28]] [1, 3, 28, 28] 3,456
Conv2D-121 [[1, 128, 28, 28]] [1, 4, 28, 28] 4,608
Conv2D-122 [[1, 128, 28, 28]] [1, 9, 28, 28] 10,368
Conv2D-123 [[1, 128, 28, 28]] [1, 7, 28, 28] 8,064
Conv2D-124 [[1, 128, 28, 28]] [1, 5, 28, 28] 5,760
Conv2D-125 [[1, 128, 28, 28]] [1, 1, 28, 28] 1,152
Conv2D-126 [[1, 128, 28, 28]] [1, 2, 28, 28] 2,304
Conv2D-127 [[1, 128, 28, 28]] [1, 2, 28, 28] 2,304
Conv2D-128 [[1, 128, 28, 28]] [1, 2, 28, 28] 2,304
Conv2D-129 [[1, 128, 28, 28]] [1, 5, 28, 28] 5,760
Conv2D-130 [[1, 128, 28, 28]] [1, 3, 28, 28] 3,456
Conv2D-131 [[1, 128, 28, 28]] [1, 2, 28, 28] 2,304
Conv2D-132 [[1, 128, 28, 28]] [1, 2, 28, 28] 2,304
Conv2D-133 [[1, 128, 28, 28]] [1, 13, 28, 28] 14,976
IC_Conv2D-5 [[1, 128, 28, 28]] [1, 128, 28, 28] 0
BatchNorm2D-69 [[1, 128, 28, 28]] [1, 128, 28, 28] 512
Conv2D-117 [[1, 128, 28, 28]] [1, 512, 28, 28] 65,536
BatchNorm2D-70 [[1, 512, 28, 28]] [1, 512, 28, 28] 2,048
BottleneckBlock-21 [[1, 512, 28, 28]] [1, 512, 28, 28] 0
Conv2D-134 [[1, 512, 28, 28]] [1, 128, 28, 28] 65,536
BatchNorm2D-71 [[1, 128, 28, 28]] [1, 128, 28, 28] 512
ReLU-23 [[1, 512, 28, 28]] [1, 512, 28, 28] 0
Conv2D-137 [[1, 128, 28, 28]] [1, 69, 28, 28] 79,488
Conv2D-138 [[1, 128, 28, 28]] [1, 5, 28, 28] 5,760
Conv2D-139 [[1, 128, 28, 28]] [1, 4, 28, 28] 4,608
Conv2D-140 [[1, 128, 28, 28]] [1, 6, 28, 28] 6,912
Conv2D-141 [[1, 128, 28, 28]] [1, 5, 28, 28] 5,760
Conv2D-142 [[1, 128, 28, 28]] [1, 6, 28, 28] 6,912
Conv2D-143 [[1, 128, 28, 28]] [1, 2, 28, 28] 2,304
Conv2D-144 [[1, 128, 28, 28]] [1, 3, 28, 28] 3,456
Conv2D-145 [[1, 128, 28, 28]] [1, 2, 28, 28] 2,304
Conv2D-146 [[1, 128, 28, 28]] [1, 1, 28, 28] 1,152
Conv2D-147 [[1, 128, 28, 28]] [1, 1, 28, 28] 1,152
Conv2D-148 [[1, 128, 28, 28]] [1, 5, 28, 28] 5,760
Conv2D-149 [[1, 128, 28, 28]] [1, 2, 28, 28] 2,304
Conv2D-150 [[1, 128, 28, 28]] [1, 1, 28, 28] 1,152
Conv2D-151 [[1, 128, 28, 28]] [1, 16, 28, 28] 18,432
IC_Conv2D-6 [[1, 128, 28, 28]] [1, 128, 28, 28] 0
BatchNorm2D-72 [[1, 128, 28, 28]] [1, 128, 28, 28] 512
Conv2D-136 [[1, 128, 28, 28]] [1, 512, 28, 28] 65,536
BatchNorm2D-73 [[1, 512, 28, 28]] [1, 512, 28, 28] 2,048
BottleneckBlock-22 [[1, 512, 28, 28]] [1, 512, 28, 28] 0
Conv2D-152 [[1, 512, 28, 28]] [1, 128, 28, 28] 65,536
BatchNorm2D-74 [[1, 128, 28, 28]] [1, 128, 28, 28] 512
ReLU-24 [[1, 512, 28, 28]] [1, 512, 28, 28] 0
Conv2D-155 [[1, 128, 28, 28]] [1, 57, 28, 28] 65,664
Conv2D-156 [[1, 128, 28, 28]] [1, 9, 28, 28] 10,368
Conv2D-157 [[1, 128, 28, 28]] [1, 12, 28, 28] 13,824
Conv2D-158 [[1, 128, 28, 28]] [1, 3, 28, 28] 3,456
Conv2D-159 [[1, 128, 28, 28]] [1, 9, 28, 28] 10,368
Conv2D-160 [[1, 128, 28, 28]] [1, 6, 28, 28] 6,912
Conv2D-161 [[1, 128, 28, 28]] [1, 4, 28, 28] 4,608
Conv2D-162 [[1, 128, 28, 28]] [1, 2, 28, 28] 2,304
Conv2D-163 [[1, 128, 28, 28]] [1, 4, 28, 28] 4,608
Conv2D-164 [[1, 128, 28, 28]] [1, 3, 28, 28] 3,456
Conv2D-165 [[1, 128, 28, 28]] [1, 2, 28, 28] 2,304
Conv2D-166 [[1, 128, 28, 28]] [1, 2, 28, 28] 2,304
Conv2D-167 [[1, 128, 28, 28]] [1, 5, 28, 28] 5,760
Conv2D-168 [[1, 128, 28, 28]] [1, 3, 28, 28] 3,456
Conv2D-169 [[1, 128, 28, 28]] [1, 3, 28, 28] 3,456
Conv2D-170 [[1, 128, 28, 28]] [1, 4, 28, 28] 4,608
IC_Conv2D-7 [[1, 128, 28, 28]] [1, 128, 28, 28] 0
BatchNorm2D-75 [[1, 128, 28, 28]] [1, 128, 28, 28] 512
Conv2D-154 [[1, 128, 28, 28]] [1, 512, 28, 28] 65,536
BatchNorm2D-76 [[1, 512, 28, 28]] [1, 512, 28, 28] 2,048
BottleneckBlock-23 [[1, 512, 28, 28]] [1, 512, 28, 28] 0
Conv2D-172 [[1, 512, 28, 28]] [1, 256, 28, 28] 131,072
BatchNorm2D-78 [[1, 256, 28, 28]] [1, 256, 28, 28] 1,024
ReLU-25 [[1, 1024, 14, 14]] [1, 1024, 14, 14] 0
Conv2D-175 [[1, 256, 28, 28]] [1, 95, 14, 14] 218,880
Conv2D-176 [[1, 256, 28, 28]] [1, 29, 14, 14] 66,816
Conv2D-177 [[1, 256, 28, 28]] [1, 9, 14, 14] 20,736
Conv2D-178 [[1, 256, 28, 28]] [1, 6, 14, 14] 13,824
Conv2D-179 [[1, 256, 28, 28]] [1, 26, 14, 14] 59,904
Conv2D-180 [[1, 256, 28, 28]] [1, 16, 14, 14] 36,864
Conv2D-181 [[1, 256, 28, 28]] [1, 11, 14, 14] 25,344
Conv2D-182 [[1, 256, 28, 28]] [1, 4, 14, 14] 9,216
Conv2D-183 [[1, 256, 28, 28]] [1, 12, 14, 14] 27,648
Conv2D-184 [[1, 256, 28, 28]] [1, 7, 14, 14] 16,128
Conv2D-185 [[1, 256, 28, 28]] [1, 7, 14, 14] 16,128
Conv2D-186 [[1, 256, 28, 28]] [1, 7, 14, 14] 16,128
Conv2D-187 [[1, 256, 28, 28]] [1, 11, 14, 14] 25,344
Conv2D-188 [[1, 256, 28, 28]] [1, 3, 14, 14] 6,912
Conv2D-189 [[1, 256, 28, 28]] [1, 4, 14, 14] 9,216
Conv2D-190 [[1, 256, 28, 28]] [1, 9, 14, 14] 20,736
IC_Conv2D-8 [[1, 256, 28, 28]] [1, 256, 14, 14] 0
BatchNorm2D-79 [[1, 256, 14, 14]] [1, 256, 14, 14] 1,024
Conv2D-174 [[1, 256, 14, 14]] [1, 1024, 14, 14] 262,144
BatchNorm2D-80 [[1, 1024, 14, 14]] [1, 1024, 14, 14] 4,096
Conv2D-171 [[1, 512, 28, 28]] [1, 1024, 14, 14] 524,288
BatchNorm2D-77 [[1, 1024, 14, 14]] [1, 1024, 14, 14] 4,096
BottleneckBlock-24 [[1, 512, 28, 28]] [1, 1024, 14, 14] 0
Conv2D-191 [[1, 1024, 14, 14]] [1, 256, 14, 14] 262,144
BatchNorm2D-81 [[1, 256, 14, 14]] [1, 256, 14, 14] 1,024
ReLU-26 [[1, 1024, 14, 14]] [1, 1024, 14, 14] 0
Conv2D-194 [[1, 256, 14, 14]] [1, 84, 14, 14] 193,536
Conv2D-195 [[1, 256, 14, 14]] [1, 14, 14, 14] 32,256
Conv2D-196 [[1, 256, 14, 14]] [1, 8, 14, 14] 18,432
Conv2D-197 [[1, 256, 14, 14]] [1, 17, 14, 14] 39,168
Conv2D-198 [[1, 256, 14, 14]] [1, 16, 14, 14] 36,864
Conv2D-199 [[1, 256, 14, 14]] [1, 7, 14, 14] 16,128
Conv2D-200 [[1, 256, 14, 14]] [1, 5, 14, 14] 11,520
Conv2D-201 [[1, 256, 14, 14]] [1, 6, 14, 14] 13,824
Conv2D-202 [[1, 256, 14, 14]] [1, 9, 14, 14] 20,736
Conv2D-203 [[1, 256, 14, 14]] [1, 7, 14, 14] 16,128
Conv2D-204 [[1, 256, 14, 14]] [1, 9, 14, 14] 20,736
Conv2D-205 [[1, 256, 14, 14]] [1, 7, 14, 14] 16,128
Conv2D-206 [[1, 256, 14, 14]] [1, 18, 14, 14] 41,472
Conv2D-207 [[1, 256, 14, 14]] [1, 5, 14, 14] 11,520
Conv2D-208 [[1, 256, 14, 14]] [1, 8, 14, 14] 18,432
Conv2D-209 [[1, 256, 14, 14]] [1, 36, 14, 14] 82,944
IC_Conv2D-9 [[1, 256, 14, 14]] [1, 256, 14, 14] 0
BatchNorm2D-82 [[1, 256, 14, 14]] [1, 256, 14, 14] 1,024
Conv2D-193 [[1, 256, 14, 14]] [1, 1024, 14, 14] 262,144
BatchNorm2D-83 [[1, 1024, 14, 14]] [1, 1024, 14, 14] 4,096
BottleneckBlock-25 [[1, 1024, 14, 14]] [1, 1024, 14, 14] 0
Conv2D-210 [[1, 1024, 14, 14]] [1, 256, 14, 14] 262,144
BatchNorm2D-84 [[1, 256, 14, 14]] [1, 256, 14, 14] 1,024
ReLU-27 [[1, 1024, 14, 14]] [1, 1024, 14, 14] 0
Conv2D-213 [[1, 256, 14, 14]] [1, 92, 14, 14] 211,968
Conv2D-214 [[1, 256, 14, 14]] [1, 11, 14, 14] 25,344
Conv2D-215 [[1, 256, 14, 14]] [1, 11, 14, 14] 25,344
Conv2D-216 [[1, 256, 14, 14]] [1, 17, 14, 14] 39,168
Conv2D-217 [[1, 256, 14, 14]] [1, 15, 14, 14] 34,560
Conv2D-218 [[1, 256, 14, 14]] [1, 19, 14, 14] 43,776
Conv2D-219 [[1, 256, 14, 14]] [1, 1, 14, 14] 2,304
Conv2D-220 [[1, 256, 14, 14]] [1, 7, 14, 14] 16,128
Conv2D-221 [[1, 256, 14, 14]] [1, 20, 14, 14] 46,080
Conv2D-222 [[1, 256, 14, 14]] [1, 5, 14, 14] 11,520
Conv2D-223 [[1, 256, 14, 14]] [1, 3, 14, 14] 6,912
Conv2D-224 [[1, 256, 14, 14]] [1, 8, 14, 14] 18,432
Conv2D-225 [[1, 256, 14, 14]] [1, 12, 14, 14] 27,648
Conv2D-226 [[1, 256, 14, 14]] [1, 10, 14, 14] 23,040
Conv2D-227 [[1, 256, 14, 14]] [1, 5, 14, 14] 11,520
Conv2D-228 [[1, 256, 14, 14]] [1, 20, 14, 14] 46,080
IC_Conv2D-10 [[1, 256, 14, 14]] [1, 256, 14, 14] 0
BatchNorm2D-85 [[1, 256, 14, 14]] [1, 256, 14, 14] 1,024
Conv2D-212 [[1, 256, 14, 14]] [1, 1024, 14, 14] 262,144
BatchNorm2D-86 [[1, 1024, 14, 14]] [1, 1024, 14, 14] 4,096
BottleneckBlock-26 [[1, 1024, 14, 14]] [1, 1024, 14, 14] 0
Conv2D-229 [[1, 1024, 14, 14]] [1, 256, 14, 14] 262,144
BatchNorm2D-87 [[1, 256, 14, 14]] [1, 256, 14, 14] 1,024
ReLU-28 [[1, 1024, 14, 14]] [1, 1024, 14, 14] 0
Conv2D-232 [[1, 256, 14, 14]] [1, 88, 14, 14] 202,752
Conv2D-233 [[1, 256, 14, 14]] [1, 29, 14, 14] 66,816
Conv2D-234 [[1, 256, 14, 14]] [1, 8, 14, 14] 18,432
Conv2D-235 [[1, 256, 14, 14]] [1, 19, 14, 14] 43,776
Conv2D-236 [[1, 256, 14, 14]] [1, 18, 14, 14] 41,472
Conv2D-237 [[1, 256, 14, 14]] [1, 8, 14, 14] 18,432
Conv2D-238 [[1, 256, 14, 14]] [1, 6, 14, 14] 13,824
Conv2D-239 [[1, 256, 14, 14]] [1, 7, 14, 14] 16,128
Conv2D-240 [[1, 256, 14, 14]] [1, 12, 14, 14] 27,648
Conv2D-241 [[1, 256, 14, 14]] [1, 2, 14, 14] 4,608
Conv2D-242 [[1, 256, 14, 14]] [1, 2, 14, 14] 4,608
Conv2D-243 [[1, 256, 14, 14]] [1, 5, 14, 14] 11,520
Conv2D-244 [[1, 256, 14, 14]] [1, 13, 14, 14] 29,952
Conv2D-245 [[1, 256, 14, 14]] [1, 8, 14, 14] 18,432
Conv2D-246 [[1, 256, 14, 14]] [1, 4, 14, 14] 9,216
Conv2D-247 [[1, 256, 14, 14]] [1, 27, 14, 14] 62,208
IC_Conv2D-11 [[1, 256, 14, 14]] [1, 256, 14, 14] 0
BatchNorm2D-88 [[1, 256, 14, 14]] [1, 256, 14, 14] 1,024
Conv2D-231 [[1, 256, 14, 14]] [1, 1024, 14, 14] 262,144
BatchNorm2D-89 [[1, 1024, 14, 14]] [1, 1024, 14, 14] 4,096
BottleneckBlock-27 [[1, 1024, 14, 14]] [1, 1024, 14, 14] 0
Conv2D-248 [[1, 1024, 14, 14]] [1, 256, 14, 14] 262,144
BatchNorm2D-90 [[1, 256, 14, 14]] [1, 256, 14, 14] 1,024
ReLU-29 [[1, 1024, 14, 14]] [1, 1024, 14, 14] 0
Conv2D-251 [[1, 256, 14, 14]] [1, 111, 14, 14] 255,744
Conv2D-252 [[1, 256, 14, 14]] [1, 14, 14, 14] 32,256
Conv2D-253 [[1, 256, 14, 14]] [1, 8, 14, 14] 18,432
Conv2D-254 [[1, 256, 14, 14]] [1, 16, 14, 14] 36,864
Conv2D-255 [[1, 256, 14, 14]] [1, 15, 14, 14] 34,560
Conv2D-256 [[1, 256, 14, 14]] [1, 11, 14, 14] 25,344
Conv2D-257 [[1, 256, 14, 14]] [1, 6, 14, 14] 13,824
Conv2D-258 [[1, 256, 14, 14]] [1, 9, 14, 14] 20,736
Conv2D-259 [[1, 256, 14, 14]] [1, 13, 14, 14] 29,952
Conv2D-260 [[1, 256, 14, 14]] [1, 2, 14, 14] 4,608
Conv2D-261 [[1, 256, 14, 14]] [1, 6, 14, 14] 13,824
Conv2D-262 [[1, 256, 14, 14]] [1, 9, 14, 14] 20,736
Conv2D-263 [[1, 256, 14, 14]] [1, 14, 14, 14] 32,256
Conv2D-264 [[1, 256, 14, 14]] [1, 7, 14, 14] 16,128
Conv2D-265 [[1, 256, 14, 14]] [1, 3, 14, 14] 6,912
Conv2D-266 [[1, 256, 14, 14]] [1, 12, 14, 14] 27,648
IC_Conv2D-12 [[1, 256, 14, 14]] [1, 256, 14, 14] 0
BatchNorm2D-91 [[1, 256, 14, 14]] [1, 256, 14, 14] 1,024
Conv2D-250 [[1, 256, 14, 14]] [1, 1024, 14, 14] 262,144
BatchNorm2D-92 [[1, 1024, 14, 14]] [1, 1024, 14, 14] 4,096
BottleneckBlock-28 [[1, 1024, 14, 14]] [1, 1024, 14, 14] 0
Conv2D-267 [[1, 1024, 14, 14]] [1, 256, 14, 14] 262,144
BatchNorm2D-93 [[1, 256, 14, 14]] [1, 256, 14, 14] 1,024
ReLU-30 [[1, 1024, 14, 14]] [1, 1024, 14, 14] 0
Conv2D-270 [[1, 256, 14, 14]] [1, 105, 14, 14] 241,920
Conv2D-271 [[1, 256, 14, 14]] [1, 21, 14, 14] 48,384
Conv2D-272 [[1, 256, 14, 14]] [1, 6, 14, 14] 13,824
Conv2D-273 [[1, 256, 14, 14]] [1, 22, 14, 14] 50,688
Conv2D-274 [[1, 256, 14, 14]] [1, 16, 14, 14] 36,864
Conv2D-275 [[1, 256, 14, 14]] [1, 7, 14, 14] 16,128
Conv2D-276 [[1, 256, 14, 14]] [1, 5, 14, 14] 11,520
Conv2D-277 [[1, 256, 14, 14]] [1, 7, 14, 14] 16,128
Conv2D-278 [[1, 256, 14, 14]] [1, 11, 14, 14] 25,344
Conv2D-279 [[1, 256, 14, 14]] [1, 3, 14, 14] 6,912
Conv2D-280 [[1, 256, 14, 14]] [1, 2, 14, 14] 4,608
Conv2D-281 [[1, 256, 14, 14]] [1, 7, 14, 14] 16,128
Conv2D-282 [[1, 256, 14, 14]] [1, 25, 14, 14] 57,600
Conv2D-283 [[1, 256, 14, 14]] [1, 2, 14, 14] 4,608
Conv2D-284 [[1, 256, 14, 14]] [1, 6, 14, 14] 13,824
Conv2D-285 [[1, 256, 14, 14]] [1, 11, 14, 14] 25,344
IC_Conv2D-13 [[1, 256, 14, 14]] [1, 256, 14, 14] 0
BatchNorm2D-94 [[1, 256, 14, 14]] [1, 256, 14, 14] 1,024
Conv2D-269 [[1, 256, 14, 14]] [1, 1024, 14, 14] 262,144
BatchNorm2D-95 [[1, 1024, 14, 14]] [1, 1024, 14, 14] 4,096
BottleneckBlock-29 [[1, 1024, 14, 14]] [1, 1024, 14, 14] 0
Conv2D-287 [[1, 1024, 14, 14]] [1, 512, 14, 14] 524,288
BatchNorm2D-97 [[1, 512, 14, 14]] [1, 512, 14, 14] 2,048
ReLU-31 [[1, 2048, 7, 7]] [1, 2048, 7, 7] 0
Conv2D-290 [[1, 512, 14, 14]] [1, 134, 7, 7] 617,472
Conv2D-291 [[1, 512, 14, 14]] [1, 53, 7, 7] 244,224
Conv2D-292 [[1, 512, 14, 14]] [1, 32, 7, 7] 147,456
Conv2D-293 [[1, 512, 14, 14]] [1, 23, 7, 7] 105,984
Conv2D-294 [[1, 512, 14, 14]] [1, 66, 7, 7] 304,128
Conv2D-295 [[1, 512, 14, 14]] [1, 31, 7, 7] 142,848
Conv2D-296 [[1, 512, 14, 14]] [1, 15, 7, 7] 69,120
Conv2D-297 [[1, 512, 14, 14]] [1, 23, 7, 7] 105,984
Conv2D-298 [[1, 512, 14, 14]] [1, 30, 7, 7] 138,240
Conv2D-299 [[1, 512, 14, 14]] [1, 20, 7, 7] 92,160
Conv2D-300 [[1, 512, 14, 14]] [1, 7, 7, 7] 32,256
Conv2D-301 [[1, 512, 14, 14]] [1, 10, 7, 7] 46,080
Conv2D-302 [[1, 512, 14, 14]] [1, 33, 7, 7] 152,064
Conv2D-303 [[1, 512, 14, 14]] [1, 12, 7, 7] 55,296
Conv2D-304 [[1, 512, 14, 14]] [1, 10, 7, 7] 46,080
Conv2D-305 [[1, 512, 14, 14]] [1, 13, 7, 7] 59,904
IC_Conv2D-14 [[1, 512, 14, 14]] [1, 512, 7, 7] 0
BatchNorm2D-98 [[1, 512, 7, 7]] [1, 512, 7, 7] 2,048
Conv2D-289 [[1, 512, 7, 7]] [1, 2048, 7, 7] 1,048,576
BatchNorm2D-99 [[1, 2048, 7, 7]] [1, 2048, 7, 7] 8,192
Conv2D-286 [[1, 1024, 14, 14]] [1, 2048, 7, 7] 2,097,152
BatchNorm2D-96 [[1, 2048, 7, 7]] [1, 2048, 7, 7] 8,192
BottleneckBlock-30 [[1, 1024, 14, 14]] [1, 2048, 7, 7] 0
Conv2D-306 [[1, 2048, 7, 7]] [1, 512, 7, 7] 1,048,576
BatchNorm2D-100 [[1, 512, 7, 7]] [1, 512, 7, 7] 2,048
ReLU-32 [[1, 2048, 7, 7]] [1, 2048, 7, 7] 0
Conv2D-309 [[1, 512, 7, 7]] [1, 143, 7, 7] 658,944
Conv2D-310 [[1, 512, 7, 7]] [1, 39, 7, 7] 179,712
Conv2D-311 [[1, 512, 7, 7]] [1, 22, 7, 7] 101,376
Conv2D-312 [[1, 512, 7, 7]] [1, 56, 7, 7] 258,048
Conv2D-313 [[1, 512, 7, 7]] [1, 29, 7, 7] 133,632
Conv2D-314 [[1, 512, 7, 7]] [1, 19, 7, 7] 87,552
Conv2D-315 [[1, 512, 7, 7]] [1, 4, 7, 7] 18,432
Conv2D-316 [[1, 512, 7, 7]] [1, 14, 7, 7] 64,512
Conv2D-317 [[1, 512, 7, 7]] [1, 23, 7, 7] 105,984
Conv2D-318 [[1, 512, 7, 7]] [1, 14, 7, 7] 64,512
Conv2D-319 [[1, 512, 7, 7]] [1, 6, 7, 7] 27,648
Conv2D-320 [[1, 512, 7, 7]] [1, 17, 7, 7] 78,336
Conv2D-321 [[1, 512, 7, 7]] [1, 37, 7, 7] 170,496
Conv2D-322 [[1, 512, 7, 7]] [1, 14, 7, 7] 64,512
Conv2D-323 [[1, 512, 7, 7]] [1, 16, 7, 7] 73,728
Conv2D-324 [[1, 512, 7, 7]] [1, 59, 7, 7] 271,872
IC_Conv2D-15 [[1, 512, 7, 7]] [1, 512, 7, 7] 0
BatchNorm2D-101 [[1, 512, 7, 7]] [1, 512, 7, 7] 2,048
Conv2D-308 [[1, 512, 7, 7]] [1, 2048, 7, 7] 1,048,576
BatchNorm2D-102 [[1, 2048, 7, 7]] [1, 2048, 7, 7] 8,192
BottleneckBlock-31 [[1, 2048, 7, 7]] [1, 2048, 7, 7] 0
Conv2D-325 [[1, 2048, 7, 7]] [1, 512, 7, 7] 1,048,576
BatchNorm2D-103 [[1, 512, 7, 7]] [1, 512, 7, 7] 2,048
ReLU-33 [[1, 2048, 7, 7]] [1, 2048, 7, 7] 0
Conv2D-328 [[1, 512, 7, 7]] [1, 206, 7, 7] 949,248
Conv2D-329 [[1, 512, 7, 7]] [1, 32, 7, 7] 147,456
Conv2D-330 [[1, 512, 7, 7]] [1, 15, 7, 7] 69,120
Conv2D-331 [[1, 512, 7, 7]] [1, 63, 7, 7] 290,304
Conv2D-332 [[1, 512, 7, 7]] [1, 46, 7, 7] 211,968
Conv2D-333 [[1, 512, 7, 7]] [1, 36, 7, 7] 165,888
Conv2D-334 [[1, 512, 7, 7]] [1, 3, 7, 7] 13,824
Conv2D-335 [[1, 512, 7, 7]] [1, 9, 7, 7] 41,472
Conv2D-336 [[1, 512, 7, 7]] [1, 17, 7, 7] 78,336
Conv2D-337 [[1, 512, 7, 7]] [1, 5, 7, 7] 23,040
Conv2D-338 [[1, 512, 7, 7]] [1, 3, 7, 7] 13,824
Conv2D-339 [[1, 512, 7, 7]] [1, 8, 7, 7] 36,864
Conv2D-340 [[1, 512, 7, 7]] [1, 30, 7, 7] 138,240
Conv2D-341 [[1, 512, 7, 7]] [1, 11, 7, 7] 50,688
Conv2D-342 [[1, 512, 7, 7]] [1, 4, 7, 7] 18,432
Conv2D-343 [[1, 512, 7, 7]] [1, 24, 7, 7] 110,592
IC_Conv2D-16 [[1, 512, 7, 7]] [1, 512, 7, 7] 0
BatchNorm2D-104 [[1, 512, 7, 7]] [1, 512, 7, 7] 2,048
Conv2D-327 [[1, 512, 7, 7]] [1, 2048, 7, 7] 1,048,576
BatchNorm2D-105 [[1, 2048, 7, 7]] [1, 2048, 7, 7] 8,192
BottleneckBlock-32 [[1, 2048, 7, 7]] [1, 2048, 7, 7] 0
AdaptiveAvgPool2D-1 [[1, 2048, 7, 7]] [1, 2048, 1, 1] 0
Linear-1 [[1, 2048]] [1, 1000] 2,049,000
===============================================================================
Total params: 25,610,152
Trainable params: 25,503,912
Non-trainable params: 106,240
-------------------------------------------------------------------------------
Input size (MB): 0.57
Forward/backward pass size (MB): 272.01
Params size (MB): 97.69
Estimated Total Size (MB): 370.28
-------------------------------------------------------------------------------
<class 'paddle.nn.layer.conv.Conv2D'>'s flops has been counted
<class 'paddle.nn.layer.norm.BatchNorm2D'>'s flops has been counted
<class 'paddle.nn.layer.activation.ReLU'>'s flops has been counted
Cannot find suitable count function for <class 'paddle.nn.layer.pooling.MaxPool2D'>. Treat it as zero FLOPs.
<class 'paddle.nn.layer.pooling.AdaptiveAvgPool2D'>'s flops has been counted
<class 'paddle.nn.layer.common.Linear'>'s flops has been counted
Total Flops: 4111514624 Total Params: 25610152
[1, 1000]/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/dygraph/math_op_patch.py:238: UserWarning: The dtype of left and right variables are not the same, left dtype is VarType.FP32, but right dtype is VarType.INT32, the right dtype will convert to VarType.FP32 format(lhs_dtype, rhs_dtype, lhs_dtype))
# 解压数据集!mkdir ~/data/ILSVRC2012 !tar -xf ~/data/data68594/ILSVRC2012_img_val.tar -C ~/data/ILSVRC2012
import osimport cv2import numpy as npimport paddleimport paddle.vision.transforms as Tfrom PIL import Image# 构建数据集class ILSVRC2012(paddle.io.Dataset):
def __init__(self, root, label_list, transform, backend='pil'):
self.transform = transform
self.root = root
self.label_list = label_list
self.backend = backend
self.load_datas() def load_datas(self):
self.imgs = []
self.labels = [] with open(self.label_list, 'r') as f: for line in f:
img, label = line[:-1].split(' ')
self.imgs.append(os.path.join(self.root, img))
self.labels.append(int(label)) def __getitem__(self, idx):
label = self.labels[idx]
image = self.imgs[idx] if self.backend=='cv2':
image = cv2.imread(image) else:
image = Image.open(image).convert('RGB')
image = self.transform(image) return image.astype('float32'), np.array(label).astype('int64') def __len__(self):
return len(self.imgs)
val_transforms = T.Compose([
T.Resize(256),
T.CenterCrop(224),
T.Normalize(
mean=[123.675, 116.28, 103.53],
std=[58.395, 57.12, 57.375],
to_rgb=True,
data_format='HWC'
),
T.ToTensor(),
])
model = paddle.Model(ic_resnet_50_k9(pretrained=True))
model.prepare(metrics=paddle.metric.Accuracy(topk=(1, 5)))# 配置数据集val_dataset = ILSVRC2012('data/ILSVRC2012', transform=val_transforms, label_list='data/data68594/val_list.txt', backend='cv2')# 模型验证model.evaluate(val_dataset, batch_size=128){'acc_top1': 0.77162, 'acc_top5': 0.9348}以上就是IC-CONV:使用高效空洞搜索的 Inception 卷积的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号