时间:2025-07-19 作者:游乐小编
本文介绍了基于Paddle实现Inception Conv及魔改版ResNet的过程。Inception Conv通过并联不同空洞卷积并拼接结果构成,魔改版ResNet将主干3x3标准卷积替换为Inception Conv。文中展示了模型搭建、测试细节,包括结构总览、参数量等,验证其在ILSVRC2012数据集上的精度,top1准确率达77.16%,top5达93.48%。
import reimport jsonimport paddleimport paddle.nn as nnfrom paddle.vision.models import resnet登录后复制
Inception Conv 的结构如下图:
大致的实现方法是使用多个不同的空洞卷积并联,然后将结果拼接到一起
通过 pattern_dist 参数加载搜索到的各个卷积的参数
In [2]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 out登录后复制
class 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,152Trainable params: 25,503,912Non-trainable params: 106,240-------------------------------------------------------------------------------Input size (MB): 0.57Forward/backward pass size (MB): 272.01Params size (MB): 97.69Estimated Total Size (MB): 370.28-------------------------------------------------------------------------------登录后复制's flops has been counted 's flops has been counted 's flops has been countedCannot find suitable count function for . Treat it as zero FLOPs. 's flops has been counted 's flops has been countedTotal 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}登录后复制
2021-11-05 11:52
手游攻略2021-11-19 18:38
手游攻略2021-10-31 23:18
手游攻略2022-06-03 14:46
游戏资讯2025-06-28 12:37
单机攻略