class_docstr: SEBlock from `"Aggregated Residual Transformations for Deep Neural Network"
  <http://arxiv.org/abs/1611.05431>`_ paper.
  
  Parameters
  ----------
  cardinality: int
      Number of groups
  bottleneck_width: int
      Width of bottleneck block
  stride : int
      Stride size.
  downsample : bool, default False
      Whether to downsample the input.
  avg_down : bool, default False
      Whether to use average pooling for projection skip connection between stages/downsample.
  norm_layer : object
      Normalization layer used (default: :class:`mxnet.gluon.nn.BatchNorm`)
      Can be :class:`mxnet.gluon.nn.BatchNorm` or :class:`mxnet.gluon.contrib.nn.SyncBatchNorm`.
  norm_kwargs : dict
      Additional `norm_layer` arguments, for example `num_devices=4`
      for :class:`mxnet.gluon.contrib.nn.SyncBatchNorm`.
class_docstr_tok: ["SEBlock","from","`","``","Aggregated","Residual","Transformations","for","Deep","Neural","Network","''","<","http",":","\/\/arxiv.org\/abs\/1611.05431",">","`","_","paper",".","Parameters","--","--","--","--","--","cardinality",":","int","Number","of","groups","bottleneck_width",":","int","Width","of","bottleneck","block","stride",":","int","Stride","size",".","downsample",":","bool",",","default","False","Whether","to","downsample","the","input",".","avg_down",":","bool",",","default","False","Whether","to","use","average","pooling","for","projection","skip","connection","between","stages\/downsample",".","norm_layer",":","object","Normalization","layer","used","(","default",":",":","class",":","`","mxnet.gluon.nn.BatchNorm","`",")","Can","be",":","class",":","`","mxnet.gluon.nn.BatchNorm","`","or",":","class",":","`","mxnet.gluon.contrib.nn.SyncBatchNorm","`",".","norm_kwargs",":","dict","Additional","`","norm_layer","`","arguments",",","for","example","`","num_devices=4","`","for",":","class",":","`","mxnet.gluon.contrib.nn.SyncBatchNorm","`","."]
code: def hybrid_forward(self, F, x):
      residual = x
  
      x = self.body(x)
  
      w = F.contrib.AdaptiveAvgPooling2D(x, output_size=1)
      w = self.se(w)
      x = F.broadcast_mul(x, w)
  
      if self.downsample:
          residual = self.downsample(residual)
  
      x = F.Activation(x + residual, act_type="relu")
      return x
  
file_path: gluon-cv/gluoncv/model_zoo/senet.py
imports: from __future__ import division
  import os
  import math
  from mxnet import cpu
  from mxnet.gluon import nn
  from mxnet.gluon.nn import BatchNorm
  from mxnet.gluon.block import HybridBlock
label_desc: Use image node_id 2 for calling the SEBlock obj's underlying member method code with example usage: obj.hybrid_forward(F, x) and returns: x