Python mxnet.gluon.nn.Dense() Examples
The following are 30
code examples of mxnet.gluon.nn.Dense().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
mxnet.gluon.nn
, or try the search function
.
Example #1
Source File: fdensenet.py From insightface with MIT License | 6 votes |
def __init__(self, num_init_features, growth_rate, block_config, bn_size=4, dropout=0, classes=1000, **kwargs): super(DenseNet, self).__init__(**kwargs) with self.name_scope(): self.features = nn.HybridSequential(prefix='') self.features.add(nn.Conv2D(num_init_features, kernel_size=3, strides=1, padding=1, use_bias=False)) self.features.add(nn.BatchNorm()) self.features.add(nn.Activation('relu')) self.features.add(nn.MaxPool2D(pool_size=3, strides=2, padding=1)) # Add dense blocks num_features = num_init_features for i, num_layers in enumerate(block_config): self.features.add(_make_dense_block(num_layers, bn_size, growth_rate, dropout, i+1)) num_features = num_features + num_layers * growth_rate if i != len(block_config) - 1: self.features.add(_make_transition(num_features // 2)) num_features = num_features // 2 self.features.add(nn.BatchNorm()) self.features.add(nn.Activation('relu')) #self.features.add(nn.AvgPool2D(pool_size=7)) #self.features.add(nn.Flatten()) #self.output = nn.Dense(classes)
Example #2
Source File: test_gluon.py From dynamic-training-with-apache-mxnet-on-aws with Apache License 2.0 | 6 votes |
def test_basic(): model = nn.Sequential() model.add(nn.Dense(128, activation='tanh', in_units=10, flatten=False)) model.add(nn.Dropout(0.5)) model.add(nn.Dense(64, activation='tanh', in_units=256), nn.Dense(32, in_units=64)) model.add(nn.Activation('relu')) # symbol x = mx.sym.var('data') y = model(x) assert len(y.list_arguments()) == 7 # ndarray model.collect_params().initialize(mx.init.Xavier(magnitude=2.24)) x = model(mx.nd.zeros((32, 2, 10))) assert x.shape == (32, 32) x.wait_to_read() model.collect_params().setattr('grad_req', 'null') assert list(model.collect_params().values())[0]._grad is None model.collect_params().setattr('grad_req', 'write') assert list(model.collect_params().values())[0]._grad is not None
Example #3
Source File: actionrec_inceptionv3.py From gluon-cv with Apache License 2.0 | 6 votes |
def __init__(self, nclass, pretrained_base=True, partial_bn=True, dropout_ratio=0.5, init_std=0.001, num_segments=1, num_crop=1, **kwargs): super(ActionRecInceptionV3, self).__init__() self.dropout_ratio = dropout_ratio self.init_std = init_std self.num_segments = num_segments self.num_crop = num_crop self.feat_dim = 2048 pretrained_model = inception_v3(pretrained=pretrained_base, partial_bn=partial_bn, **kwargs) self.features = pretrained_model.features def update_dropout_ratio(block): if isinstance(block, nn.basic_layers.Dropout): block._rate = self.dropout_ratio self.apply(update_dropout_ratio) self.output = nn.Dense(units=nclass, in_units=self.feat_dim, weight_initializer=init.Normal(sigma=self.init_std)) self.output.initialize()
Example #4
Source File: test_exc_handling.py From dynamic-training-with-apache-mxnet-on-aws with Apache License 2.0 | 6 votes |
def test_exc_gluon(): def gluon(exec_wait=True): model = nn.Sequential() model.add(nn.Dense(128, activation='tanh', in_units=10, flatten=False)) model.add(nn.Dropout(1)) model.add(nn.Dense(64, activation='tanh', in_units=256), nn.Dense(32, in_units=64)) x = mx.sym.var('data') y = model(x) model.collect_params().initialize(ctx=[default_context()]) z = model(mx.nd.random.normal(10, -10, (32, 2, 10), ctx=default_context())) if exec_wait: z.wait_to_read() gluon(exec_wait=False) assert_raises(MXNetError, gluon, True)
Example #5
Source File: test_gluon.py From dynamic-training-with-apache-mxnet-on-aws with Apache License 2.0 | 6 votes |
def test_dense(): model = nn.Dense(128, activation='tanh', in_units=10, flatten=False, prefix='test_') inputs = mx.sym.Variable('data') outputs = model(inputs) assert set(model.collect_params().keys()) == set(['test_weight', 'test_bias']) assert outputs.list_outputs() == ['test_tanh_fwd_output'] args, outs, auxs = outputs.infer_shape(data=(2, 3, 10)) assert outs == [(2, 3, 128)] model = nn.Dense(128, activation='relu', in_units=30, flatten=True, prefix='test2_') inputs = mx.sym.Variable('data') outputs = model(inputs) assert set(model.collect_params().keys()) == set(['test2_weight', 'test2_bias']) assert outputs.list_outputs() == ['test2_relu_fwd_output'] args, outs, auxs = outputs.infer_shape(data=(17, 2, 5, 3)) assert outs == [(17, 128)]
Example #6
Source File: vgg.py From gluon-cv with Apache License 2.0 | 6 votes |
def __init__(self, layers, filters, classes=1000, batch_norm=False, **kwargs): super(VGG, self).__init__(**kwargs) assert len(layers) == len(filters) with self.name_scope(): self.features = self._make_features(layers, filters, batch_norm) self.features.add(nn.Dense(4096, activation='relu', weight_initializer='normal', bias_initializer='zeros')) self.features.add(nn.Dropout(rate=0.5)) self.features.add(nn.Dense(4096, activation='relu', weight_initializer='normal', bias_initializer='zeros')) self.features.add(nn.Dropout(rate=0.5)) self.output = nn.Dense(classes, weight_initializer='normal', bias_initializer='zeros')
Example #7
Source File: vgg.py From dynamic-training-with-apache-mxnet-on-aws with Apache License 2.0 | 6 votes |
def __init__(self, layers, filters, classes=1000, batch_norm=False, **kwargs): super(VGG, self).__init__(**kwargs) assert len(layers) == len(filters) with self.name_scope(): self.features = self._make_features(layers, filters, batch_norm) self.features.add(Dense(4096, activation='relu', weight_initializer='normal', bias_initializer='zeros')) self.features.add(Dropout(rate=0.5)) self.features.add(Dense(4096, activation='relu', weight_initializer='normal', bias_initializer='zeros')) self.features.add(Dropout(rate=0.5)) self.output = Dense(classes, weight_initializer='normal', bias_initializer='zeros')
Example #8
Source File: actionrec_vgg16.py From gluon-cv with Apache License 2.0 | 6 votes |
def __init__(self, nclass, pretrained_base=True, dropout_ratio=0.5, init_std=0.001, num_segments=1, num_crop=1, **kwargs): super(ActionRecVGG16, self).__init__() self.dropout_ratio = dropout_ratio self.init_std = init_std self.num_segments = num_segments self.num_crop = num_crop self.feat_dim = 4096 pretrained_model = vgg16(pretrained=pretrained_base, **kwargs) self.features = pretrained_model.features def update_dropout_ratio(block): if isinstance(block, nn.basic_layers.Dropout): block._rate = self.dropout_ratio self.apply(update_dropout_ratio) self.output = nn.Dense(units=nclass, in_units=self.feat_dim, weight_initializer=init.Normal(sigma=self.init_std)) self.output.initialize()
Example #9
Source File: resnet.py From gluon-cv with Apache License 2.0 | 6 votes |
def __init__(self, depth, ctx, pretrained=True, num_classes=0): super(ResNet, self).__init__() self.pretrained = pretrained with self.name_scope(): network = ResNet.__factory[depth](pretrained=pretrained, ctx=ctx).features[0:-1] network[-1][0].body[0]._kwargs['stride'] = (1, 1) network[-1][0].downsample[0]._kwargs['stride'] = (1, 1) self.base = nn.HybridSequential() for n in network: self.base.add(n) self.avgpool = nn.GlobalAvgPool2D() self.flatten = nn.Flatten() self.bn = nn.BatchNorm(center=False, scale=True) self.bn.initialize(init=init.Zero(), ctx=ctx) self.classifier = nn.Dense(num_classes, use_bias=False) self.classifier.initialize(init=init.Normal(0.001), ctx=ctx)
Example #10
Source File: densechebconv.py From dgl with Apache License 2.0 | 6 votes |
def __init__(self, in_feats, out_feats, k, bias=True): super(DenseChebConv, self).__init__() self._in_feats = in_feats self._out_feats = out_feats self._k = k with self.name_scope(): self.fc = nn.Sequential() for _ in range(k): self.fc.add( nn.Dense(out_feats, in_units=in_feats, use_bias=False, weight_initializer=mx.init.Xavier(magnitude=math.sqrt(2.0))) ) if bias: self.bias = self.params.get('bias', shape=(out_feats,), init=mx.init.Zero()) else: self.bias = None
Example #11
Source File: test_gluon.py From dynamic-training-with-apache-mxnet-on-aws with Apache License 2.0 | 6 votes |
def test_reshape_dense(): class Net(gluon.HybridBlock): def __init__(self, **kwargs): super(Net, self).__init__(**kwargs) with self.name_scope(): channel0 = np.random.randint(1, 17) self.dense0 = nn.Dense(channel0) def hybrid_forward(self, F, x): x_reshape = x.reshape((8, 64, 128, -1)) out = self.dense0(x_reshape) return out x = mx.nd.random.uniform(shape=(4, 32, 64, 64)) net = Net() check_layer_forward_withinput(net, x)
Example #12
Source File: test_gluon.py From dynamic-training-with-apache-mxnet-on-aws with Apache License 2.0 | 6 votes |
def test_slice_dense(): class Net(gluon.HybridBlock): def __init__(self, slice, **kwargs): super(Net, self).__init__(**kwargs) with self.name_scope(): channel0 = np.random.randint(1, 17) self.dense0 = nn.Dense(channel0) self.slice = slice def hybrid_forward(self, F, x): x_slice = x.slice(begin=tuple(self.slice[0]), end=tuple(self.slice[1])) out = self.dense0(x_slice) return out x = mx.nd.random.uniform(shape=(16, 32, 64, 64)) slice = [[0, 16, 0, 0], [4, 32, 32, 32]] net = Net(slice) check_layer_forward_withinput(net, x)
Example #13
Source File: test_gluon.py From dynamic-training-with-apache-mxnet-on-aws with Apache License 2.0 | 6 votes |
def test_slice_dense_slice_dense(): class Net(gluon.HybridBlock): def __init__(self, slice, **kwargs): super(Net, self).__init__(**kwargs) with self.name_scope(): channel0 = 32 channel1 = np.random.randint(1, 17) self.dense0 = nn.Dense(channel0) self.dense1 = nn.Dense(channel1) self.slice = slice def hybrid_forward(self, F, x): x_slice = x.slice(begin=tuple(self.slice[0]), end=tuple(self.slice[1])) y = self.dense0(x_slice) y_slice = y.slice(begin=(1, 0), end=(3, 10)) out = self.dense1(y_slice) return out x = mx.nd.random.uniform(shape=(16, 32, 64, 64)) slice = [[0, 16, 0, 0], [4, 32, 32, 32]] net = Net(slice) check_layer_forward_withinput(net, x)
Example #14
Source File: test_gluon.py From dynamic-training-with-apache-mxnet-on-aws with Apache License 2.0 | 6 votes |
def test_reshape_dense_reshape_dense(): class Net(gluon.HybridBlock): def __init__(self, **kwargs): super(Net, self).__init__(**kwargs) with self.name_scope(): channel0 = np.random.randint(1, 17) channel1 = np.random.randint(1, 33) self.dense0 = nn.Dense(channel0) self.dense1 = nn.Dense(channel1) def hybrid_forward(self, F, x): x_reshape = x.reshape((4, 16, 128, 32)) y = self.dense0(x_reshape) y_reshape = y.reshape((1, -1)) out = self.dense1(y_reshape) return out x = mx.nd.random.uniform(shape=(4, 16, 64, 64)) net = Net() check_layer_forward_withinput(net, x)
Example #15
Source File: test_gluon.py From dynamic-training-with-apache-mxnet-on-aws with Apache License 2.0 | 6 votes |
def test_reshape_dense_slice_dense(): class Net(gluon.HybridBlock): def __init__(self, **kwargs): super(Net, self).__init__(**kwargs) with self.name_scope(): channel0 = 64 channel1 = np.random.randint(1, 17) self.dense0 = nn.Dense(channel0) self.dense1 = nn.Dense(channel1) def hybrid_forward(self, F, x): x_reshape = x.reshape((4, 16, 128, 32)) y = self.dense0(x_reshape) y_slice = y.slice(begin=(1, 32), end=(3, 64)) out = self.dense1(y_slice) return out x = mx.nd.random.uniform(shape=(4, 16, 64, 64)) net = Net() check_layer_forward_withinput(net, x)
Example #16
Source File: densesageconv.py From dgl with Apache License 2.0 | 6 votes |
def __init__(self, in_feats, out_feats, feat_drop=0., bias=True, norm=None, activation=None): super(DenseSAGEConv, self).__init__() self._in_feats = in_feats self._out_feats = out_feats self._norm = norm with self.name_scope(): self.feat_drop = nn.Dropout(feat_drop) self.activation = activation self.fc = nn.Dense(out_feats, in_units=in_feats, use_bias=bias, weight_initializer=mx.init.Xavier(magnitude=math.sqrt(2.0)))
Example #17
Source File: test_gluon_contrib.py From dynamic-training-with-apache-mxnet-on-aws with Apache License 2.0 | 6 votes |
def test_concurrent(): model = HybridConcurrent(axis=1) model.add(nn.Dense(128, activation='tanh', in_units=10)) model.add(nn.Dense(64, activation='tanh', in_units=10)) model.add(nn.Dense(32, in_units=10)) model2 = Concurrent(axis=1) model2.add(nn.Dense(128, activation='tanh', in_units=10)) model2.add(nn.Dense(64, activation='tanh', in_units=10)) model2.add(nn.Dense(32, in_units=10)) # symbol x = mx.sym.var('data') y = model(x) assert len(y.list_arguments()) == 7 # ndarray model.initialize(mx.init.Xavier(magnitude=2.24)) model2.initialize(mx.init.Xavier(magnitude=2.24)) x = model(mx.nd.zeros((32, 10))) x2 = model2(mx.nd.zeros((32, 10))) assert x.shape == (32, 224) assert x2.shape == (32, 224) x.wait_to_read() x2.wait_to_read()
Example #18
Source File: model.py From dgl with Apache License 2.0 | 6 votes |
def __init__(self, rating_vals, in_units, num_basis_functions=2, dropout_rate=0.0): super(BiDecoder, self).__init__() self.rating_vals = rating_vals self._num_basis_functions = num_basis_functions self.dropout = nn.Dropout(dropout_rate) self.Ps = [] with self.name_scope(): for i in range(num_basis_functions): self.Ps.append(self.params.get( 'Ps_%d' % i, shape=(in_units, in_units), #init=mx.initializer.Orthogonal(scale=1.1, rand_type='normal'), init=mx.initializer.Xavier(magnitude=math.sqrt(2.0)), allow_deferred_init=True)) self.rate_out = nn.Dense(units=len(rating_vals), flatten=False, use_bias=False)
Example #19
Source File: gatedgraphconv.py From dgl with Apache License 2.0 | 6 votes |
def __init__(self, in_feats, out_feats, n_steps, n_etypes, bias=True): super(GatedGraphConv, self).__init__() self._in_feats = in_feats self._out_feats = out_feats self._n_steps = n_steps self._n_etypes = n_etypes if not bias: raise KeyError('MXNet do not support disabling bias in GRUCell.') with self.name_scope(): self.linears = nn.Sequential() for _ in range(n_etypes): self.linears.add( nn.Dense(out_feats, weight_initializer=mx.init.Xavier(), in_units=out_feats) ) self.gru = gluon.rnn.GRUCell(out_feats, input_size=out_feats)
Example #20
Source File: test_gluon.py From dynamic-training-with-apache-mxnet-on-aws with Apache License 2.0 | 6 votes |
def test_inline(): net = mx.gluon.nn.HybridSequential() with net.name_scope(): net.add(mx.gluon.nn.Dense(10)) net.add(mx.gluon.nn.Dense(10)) net.add(mx.gluon.nn.Dense(10)) net.initialize() net.hybridize(inline_limit=3) with mx.autograd.record(): y = net(mx.nd.zeros((1,10))) len_1 = len(json.loads(mx.autograd.get_symbol(y).tojson())['nodes']) y.backward() net.hybridize(inline_limit=0) with mx.autograd.record(): y = net(mx.nd.zeros((1,10))) len_2 = len(json.loads(mx.autograd.get_symbol(y).tojson())['nodes']) y.backward() assert len_1 == len_2 + 2
Example #21
Source File: citation.py From dgl with Apache License 2.0 | 5 votes |
def __init__(self, g, in_feats, n_hidden, out_feats, n_layers, dim, n_kernels, dropout): super(MoNet, self).__init__() self.g = g with self.name_scope(): self.layers = nn.Sequential() self.pseudo_proj = nn.Sequential() # Input layer self.layers.add( GMMConv(in_feats, n_hidden, dim, n_kernels)) self.pseudo_proj.add(nn.Dense(dim, in_units=2, activation='tanh')) # Hidden layer for _ in range(n_layers - 1): self.layers.add(GMMConv(n_hidden, n_hidden, dim, n_kernels)) self.pseudo_proj.add(nn.Dense(dim, in_units=2, activation='tanh')) # Output layer self.layers.add(GMMConv(n_hidden, out_feats, dim, n_kernels)) self.pseudo_proj.add(nn.Dense(dim, in_units=2, activation='tanh')) self.dropout = nn.Dropout(dropout)
Example #22
Source File: resnet.py From gluon-cv with Apache License 2.0 | 5 votes |
def __init__(self, channels, stride, downsample=False, in_channels=0, last_gamma=False, use_se=False, norm_layer=BatchNorm, norm_kwargs=None, **kwargs): super(BasicBlockV2, self).__init__(**kwargs) self.bn1 = norm_layer(**({} if norm_kwargs is None else norm_kwargs)) self.conv1 = _conv3x3(channels, stride, in_channels) if not last_gamma: self.bn2 = norm_layer(**({} if norm_kwargs is None else norm_kwargs)) else: self.bn2 = norm_layer(gamma_initializer='zeros', **({} if norm_kwargs is None else norm_kwargs)) self.conv2 = _conv3x3(channels, 1, channels) if use_se: self.se = nn.HybridSequential(prefix='') self.se.add(nn.Dense(channels // 16, use_bias=False)) self.se.add(nn.Activation('relu')) self.se.add(nn.Dense(channels, use_bias=False)) self.se.add(nn.Activation('sigmoid')) else: self.se = None if downsample: self.downsample = nn.Conv2D(channels, 1, stride, use_bias=False, in_channels=in_channels) else: self.downsample = None
Example #23
Source File: reldn.py From dgl with Apache License 2.0 | 5 votes |
def __init__(self, n_classes, vis_feat_dim=7*7*3): super(EdgeVisual, self).__init__() self.dim_in = vis_feat_dim self.mlp_joint = nn.Sequential() self.mlp_joint.add(nn.Dense(vis_feat_dim // 2)) self.mlp_joint.add(nn.LeakyReLU(0.1)) self.mlp_joint.add(nn.Dense(vis_feat_dim // 3)) self.mlp_joint.add(nn.LeakyReLU(0.1)) self.mlp_joint.add(nn.Dense(n_classes)) self.mlp_sub = nn.Dense(n_classes) self.mlp_ob = nn.Dense(n_classes)
Example #24
Source File: reldn.py From dgl with Apache License 2.0 | 5 votes |
def __init__(self, n_classes): super(EdgeSpatial, self).__init__() self.mlp = nn.Sequential() self.mlp.add(nn.Dense(64)) self.mlp.add(nn.LeakyReLU(0.1)) self.mlp.add(nn.Dense(64)) self.mlp.add(nn.LeakyReLU(0.1)) self.mlp.add(nn.Dense(n_classes))
Example #25
Source File: appnp.py From dgl with Apache License 2.0 | 5 votes |
def __init__(self, g, in_feats, hiddens, n_classes, activation, feat_drop, edge_drop, alpha, k): super(APPNP, self).__init__() self.g = g with self.name_scope(): self.layers = nn.Sequential() # input layer self.layers.add(nn.Dense(hiddens[0], in_units=in_feats)) # hidden layers for i in range(1, len(hiddens)): self.layers.add(nn.Dense(hiddens[i], in_units=hiddens[i - 1])) # output layer self.layers.add(nn.Dense(n_classes, in_units=hiddens[-1])) self.activation = activation if feat_drop: self.feat_drop = nn.Dropout(feat_drop) else: self.feat_drop = lambda x: x self.propagate = APPNPConv(k, alpha, edge_drop)
Example #26
Source File: resnet.py From gluon-cv with Apache License 2.0 | 5 votes |
def __init__(self, block, layers, channels, classes=1000, thumbnail=False, last_gamma=False, use_se=False, norm_layer=BatchNorm, norm_kwargs=None, **kwargs): super(ResNetV2, self).__init__(**kwargs) assert len(layers) == len(channels) - 1 with self.name_scope(): self.features = nn.HybridSequential(prefix='') self.features.add(norm_layer(scale=False, center=False, **({} if norm_kwargs is None else norm_kwargs))) if thumbnail: self.features.add(_conv3x3(channels[0], 1, 0)) else: self.features.add(nn.Conv2D(channels[0], 7, 2, 3, use_bias=False)) self.features.add(norm_layer(**({} if norm_kwargs is None else norm_kwargs))) self.features.add(nn.Activation('relu')) self.features.add(nn.MaxPool2D(3, 2, 1)) in_channels = channels[0] for i, num_layer in enumerate(layers): stride = 1 if i == 0 else 2 self.features.add(self._make_layer(block, num_layer, channels[i+1], stride, i+1, in_channels=in_channels, last_gamma=last_gamma, use_se=use_se, norm_layer=norm_layer, norm_kwargs=norm_kwargs)) in_channels = channels[i+1] self.features.add(norm_layer(**({} if norm_kwargs is None else norm_kwargs))) self.features.add(nn.Activation('relu')) self.features.add(nn.GlobalAvgPool2D()) self.features.add(nn.Flatten()) self.output = nn.Dense(classes, in_units=in_channels)
Example #27
Source File: fmobilenetv2.py From insightface with MIT License | 5 votes |
def __init__(self, num_classes=1000, width_mult=1.0, **kwargs): super(MobilenetV2, self).__init__(**kwargs) self.w = width_mult self.cn = [int(x*self.w) for x in [32, 16, 24, 32, 64, 96, 160, 320]] def InvertedResidualSequence(t, cn_id, n, s): seq = nn.HybridSequential() seq.add(InvertedResidual(t, self.cn[cn_id-1], self.cn[cn_id], s, same_shape=False)) for _ in range(n-1): seq.add(InvertedResidual(t, self.cn[cn_id-1], self.cn[cn_id], 1)) return seq self.b0 = ConvBlock(self.cn[0], 3, 1) self.b1 = InvertedResidualSequence(1, 1, 1, 1) self.b2 = InvertedResidualSequence(6, 2, 2, 2) self.b3 = InvertedResidualSequence(6, 3, 3, 2) self.b4 = InvertedResidualSequence(6, 4, 4, 1) self.b5 = InvertedResidualSequence(6, 5, 3, 2) self.b6 = InvertedResidualSequence(6, 6, 3, 2) self.b7 = InvertedResidualSequence(6, 7, 1, 1) self.last_channels = int(1280*self.w) if self.w > 1.0 else 1280 with self.name_scope(): self.features = nn.HybridSequential() with self.features.name_scope(): self.features.add(self.b0, self.b1, self.b2, self.b3, self.b4, self.b5, self.b6, self.b7) self.features.add(Conv1x1(self.last_channels)) #self.features.add(nn.GlobalAvgPool2D()) #self.features.add(nn.Flatten()) #self.output = nn.Dense(num_classes)
Example #28
Source File: fast_pose.py From gluon-cv with Apache License 2.0 | 5 votes |
def __init__(self, channel, reduction=1): super(SELayer, self).__init__() with self.name_scope(): self.fc = nn.HybridSequential() self.fc.add(nn.Dense(channel // reduction)) self.fc.add(nn.Activation('relu')) self.fc.add(nn.Dense(channel, activation='sigmoid'))
Example #29
Source File: resnet.py From gluon-cv with Apache License 2.0 | 5 votes |
def __init__(self, channels, stride, downsample=False, in_channels=0, last_gamma=False, use_se=False, norm_layer=BatchNorm, norm_kwargs=None, **kwargs): super(BottleneckV1, self).__init__(**kwargs) self.body = nn.HybridSequential(prefix='') self.body.add(nn.Conv2D(channels//4, kernel_size=1, strides=stride)) self.body.add(norm_layer(**({} if norm_kwargs is None else norm_kwargs))) self.body.add(nn.Activation('relu')) self.body.add(_conv3x3(channels//4, 1, channels//4)) self.body.add(norm_layer(**({} if norm_kwargs is None else norm_kwargs))) self.body.add(nn.Activation('relu')) self.body.add(nn.Conv2D(channels, kernel_size=1, strides=1)) if use_se: self.se = nn.HybridSequential(prefix='') self.se.add(nn.Dense(channels // 16, use_bias=False)) self.se.add(nn.Activation('relu')) self.se.add(nn.Dense(channels, use_bias=False)) self.se.add(nn.Activation('sigmoid')) else: self.se = None if not last_gamma: self.body.add(norm_layer(**({} if norm_kwargs is None else norm_kwargs))) else: self.body.add(norm_layer(gamma_initializer='zeros', **({} if norm_kwargs is None else norm_kwargs))) if downsample: self.downsample = nn.HybridSequential(prefix='') self.downsample.add(nn.Conv2D(channels, kernel_size=1, strides=stride, use_bias=False, in_channels=in_channels)) self.downsample.add(norm_layer(**({} if norm_kwargs is None else norm_kwargs))) else: self.downsample = None
Example #30
Source File: resnet.py From gluon-cv with Apache License 2.0 | 5 votes |
def __init__(self, channels, stride, downsample=False, in_channels=0, last_gamma=False, use_se=False, norm_layer=BatchNorm, norm_kwargs=None, **kwargs): super(BottleneckV2, self).__init__(**kwargs) self.bn1 = norm_layer(**({} if norm_kwargs is None else norm_kwargs)) self.conv1 = nn.Conv2D(channels//4, kernel_size=1, strides=1, use_bias=False) self.bn2 = norm_layer(**({} if norm_kwargs is None else norm_kwargs)) self.conv2 = _conv3x3(channels//4, stride, channels//4) if not last_gamma: self.bn3 = norm_layer(**({} if norm_kwargs is None else norm_kwargs)) else: self.bn3 = norm_layer(gamma_initializer='zeros', **({} if norm_kwargs is None else norm_kwargs)) self.conv3 = nn.Conv2D(channels, kernel_size=1, strides=1, use_bias=False) if use_se: self.se = nn.HybridSequential(prefix='') self.se.add(nn.Dense(channels // 16, use_bias=False)) self.se.add(nn.Activation('relu')) self.se.add(nn.Dense(channels, use_bias=False)) self.se.add(nn.Activation('sigmoid')) else: self.se = None if downsample: self.downsample = nn.Conv2D(channels, 1, stride, use_bias=False, in_channels=in_channels) else: self.downsample = None