def __init__(self, n_layer, n_class=None, initialW=None, fc_kwargs={}): blocks = self._blocks[n_layer] if initialW is None: initialW = initializers.HeNormal(scale=1., fan_option='fan_out') if 'initialW' not in fc_kwargs: fc_kwargs['initialW'] = initializers.Normal(scale=0.01) kwargs = { 'initialW': initialW, 'stride_first': True, 'add_block': 'gc' } super(GCResNet, self).__init__() with self.init_scope(): self.conv1 = Conv2DBNActiv(None, 64, 7, 2, 3, nobias=True, initialW=initialW) self.pool1 = lambda x: F.max_pooling_2d(x, ksize=3, stride=2) self.res2 = ResBlock(blocks[0], None, 64, 256, 1, **kwargs) self.res3 = ResBlock(blocks[1], None, 128, 512, 2, **kwargs) self.res4 = ResBlock(blocks[2], None, 256, 1024, 2, **kwargs) self.res5 = ResBlock(blocks[3], None, 512, 2048, 2, **kwargs) self.pool5 = lambda x: F.average(x, axis=(2, 3)) self.fc6 = L.Linear(None, n_class, **fc_kwargs)
def __init__(self, n_layer, n_class=None, scale=4, pretrained_model=None, mean=None, initialW=None, fc_kwargs={}): blocks = self._blocks[n_layer] self.mean = mean if initialW is None: initialW = initializers.HeNormal(scale=1., fan_option='fan_out') if 'initialW' not in fc_kwargs: fc_kwargs['initialW'] = initializers.Normal(scale=0.01) kwargs = { 'scale': scale, 'initialW': initialW, 'stride_first': True, 'add_seblock': True} super(SERes2Net, self).__init__() with self.init_scope(): self.conv1 = Conv2DBNActiv(None, 64, 3, 1, 1, nobias=True, initialW=initialW) self.res2 = ResBlock(blocks[0], None, 64, 256, 2, **kwargs) self.res3 = ResBlock(blocks[1], None, 128, 512, 1, **kwargs) self.res4 = ResBlock(blocks[2], None, 256, 1024, 2, **kwargs) self.res5 = ResBlock(blocks[3], None, 512, 2048, 1, **kwargs) self.pool5 = lambda x: F.average(x, axis=(2, 3)) self.fc6 = L.Linear(None, n_class, **fc_kwargs)
def __init__(self, in_channels, mid_channels, out_channels, stride=1, scale=1, dilate=1, groups=1, initialW=None, bn_kwargs={}, residual_conv=False, stride_first=False, add_block=None, aa_kwargs={}): if stride_first: first_stride = stride second_stride = 1 else: first_stride = 1 second_stride = stride super(Bottleneck, self).__init__() with self.init_scope(): self.conv1 = Conv2DBNActiv(in_channels, mid_channels, 1, first_stride, 0, nobias=True, initialW=initialW, bn_kwargs=bn_kwargs) if len(aa_kwargs) > 0: self.conv2 = Conv2DBNActiv(mid_channels, mid_channels, 3, 1, 1, 1, 1, 1, nobias=True, initialW=initialW, bn_kwargs=bn_kwargs, aa_kwargs=aa_kwargs) elif stride > 1: self.conv2 = Conv2DBNActiv(mid_channels, mid_channels, 3, second_stride, dilate, 1, dilate, groups, nobias=True, initialW=initialW, bn_kwargs=bn_kwargs) else: self.conv2 = Conv2DBNActiv(mid_channels, mid_channels, 3, second_stride, dilate, scale, dilate, groups, nobias=True, initialW=initialW, bn_kwargs=bn_kwargs) self.conv3 = Conv2DBNActiv(mid_channels, out_channels, 1, 1, 0, nobias=True, initialW=initialW, activ=None, bn_kwargs=bn_kwargs) if add_block == 'se': self.se = SEBlock(out_channels) elif add_block == 'gc': self.gc = GCBlock(out_channels) elif add_block is not None: raise ValueError if residual_conv: self.residual_conv = Conv2DBNActiv(in_channels, out_channels, 1, stride, 0, nobias=True, initialW=initialW, activ=None, bn_kwargs=bn_kwargs)