def __init__()

in models/imagenet/resnet_ibn_cnsn.py [0:0]


    def __init__(self,
                 layers,
                 ibn_cfg=('a', 'a', 'a', None),
                 num_classes=1000, active_num=None, pos=None, beta=None,
                 crop=None, cnsn_type=None):
        self.inplanes = 64
        super(ResNet, self).__init__()
        print('ResNet with ibn, selfnorm and crossnorm...')
        self.conv1 = nn.Conv2d(3, 64, kernel_size=7, stride=2, padding=3,
                               bias=False)
        if ibn_cfg[0] == 'b':
            self.bn1 = nn.InstanceNorm2d(64, affine=True)
        else:
            self.bn1 = nn.BatchNorm2d(64)
        self.relu = nn.ReLU(inplace=True)
        self.maxpool = nn.MaxPool2d(kernel_size=3, stride=2, padding=1)

        if beta is not None:
            print('beta: {}'.format(beta))

        if crop is not None:
            print('crop mode: {}'.format(crop))


        self.layer1 = self._make_layer_custom(BottleneckCustom, 64, layers[0],
                                              pos=pos, beta=beta,
                                              crop=crop, cnsn_type=cnsn_type,
                                              ibn=ibn_cfg[0])

        self.layer2 = self._make_layer_custom(BottleneckCustom, 128, layers[1],
                                              pos=pos, beta=beta,
                                              crop=crop, cnsn_type=cnsn_type,
                                              stride=2, ibn=ibn_cfg[1])

        self.layer3 = self._make_layer_custom(BottleneckCustom, 256, layers[2],
                                              pos=pos, beta=beta,
                                              crop=crop, cnsn_type=cnsn_type,
                                              stride=2, ibn=ibn_cfg[2])

        self.layer4 = self._make_layer_custom(BottleneckCustom, 512, layers[3],
                                              pos=pos, beta=beta,
                                              crop=crop, cnsn_type=cnsn_type,
                                              stride=2, ibn=ibn_cfg[3])

        self.avgpool = nn.AvgPool2d(7)
        self.fc = nn.Linear(512 * BottleneckCustom.expansion, num_classes)

        self.cn_modules = []
        for m in self.modules():
            if isinstance(m, nn.Conv2d):
                nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu')
            elif isinstance(m, nn.BatchNorm2d) or isinstance(m, nn.InstanceNorm2d):
                nn.init.constant_(m.weight, 1)
                nn.init.constant_(m.bias, 0)
            elif isinstance(m, CrossNorm):
                self.cn_modules.append(m)

        if cnsn_type is not None and 'cn' in cnsn_type:
            self.active_num = active_num
            assert self.active_num > 0
            print('active_num: {}'.format(self.active_num))
            self.cn_num = len(self.cn_modules)
            assert self.cn_num > 0
            print('cn_num: {}'.format(self.cn_num))