class_docstr: The Convolutional 3D network (C3D).
  Learning Spatiotemporal Features with 3D Convolutional Networks.
  ICCV, 2015. https://arxiv.org/abs/1412.0767
  
  Parameters
  ----------
  nclass : int
      Number of classes in the training dataset.
  num_segments : int, default is 1.
      Number of segments used to evenly divide a video.
  num_crop : int, default is 1.
      Number of crops used during evaluation, choices are 1, 3 or 10.
  feat_ext : bool.
      Whether to extract features before dense classification layer or
      do a complete forward pass.
  dropout_ratio : float
      Dropout value used in the dropout layers after dense layers to avoid overfitting.
  init_std : float
      Default standard deviation value for initializing dense layers.
  ctx : str
      Context, default CPU. The context in which to load the pretrained weights.
code: def __init__(
      self,
      nclass,
      dropout_ratio=0.5,
      num_segments=1,
      num_crop=1,
      feat_ext=False,
      init_std=0.001,
      ctx=None,
      **kwargs,
  ):
      super(C3D, self).__init__()
      self.num_segments = num_segments
      self.num_crop = num_crop
      self.feat_ext = feat_ext
      self.feat_dim = 8192
  
      with self.name_scope():
          self.conv1 = nn.Conv3D(
              in_channels=3,
              channels=64,
              kernel_size=(3, 3, 3),
              padding=(1, 1, 1),
          )
          self.pool1 = nn.MaxPool3D(
              pool_size=(1, 2, 2), strides=(1, 2, 2)
          )
  
          self.conv2 = nn.Conv3D(
              in_channels=64,
              channels=128,
              kernel_size=(3, 3, 3),
              padding=(1, 1, 1),
          )
          self.pool2 = nn.MaxPool3D(
              pool_size=(2, 2, 2), strides=(2, 2, 2)
          )
  
          self.conv3a = nn.Conv3D(
              in_channels=128,
              channels=256,
              kernel_size=(3, 3, 3),
              padding=(1, 1, 1),
          )
          self.conv3b = nn.Conv3D(
              in_channels=256,
              channels=256,
              kernel_size=(3, 3, 3),
              padding=(1, 1, 1),
          )
          self.pool3 = nn.MaxPool3D(
              pool_size=(2, 2, 2), strides=(2, 2, 2)
          )
  
          self.conv4a = nn.Conv3D(
              in_channels=256,
              channels=512,
              kernel_size=(3, 3, 3),
              padding=(1, 1, 1),
          )
          self.conv4b = nn.Conv3D(
              in_channels=512,
              channels=512,
              kernel_size=(3, 3, 3),
              padding=(1, 1, 1),
          )
          self.pool4 = nn.MaxPool3D(
              pool_size=(2, 2, 2), strides=(2, 2, 2)
          )
  
          self.conv5a = nn.Conv3D(
              in_channels=512,
              channels=512,
              kernel_size=(3, 3, 3),
              padding=(1, 1, 1),
          )
          self.conv5b = nn.Conv3D(
              in_channels=512,
              channels=512,
              kernel_size=(3, 3, 3),
              padding=(1, 1, 1),
          )
          self.pool5 = nn.MaxPool3D(
              pool_size=(2, 2, 2), strides=(2, 2, 2), padding=(0, 1, 1)
          )
  
          self.fc6 = nn.Dense(
              in_units=8192,
              units=4096,
              weight_initializer=init.Normal(sigma=init_std),
          )
          self.fc7 = nn.Dense(
              in_units=4096,
              units=4096,
              weight_initializer=init.Normal(sigma=init_std),
          )
          self.fc8 = nn.Dense(
              in_units=4096,
              units=nclass,
              weight_initializer=init.Normal(sigma=init_std),
          )
          self.dropout = nn.Dropout(rate=dropout_ratio)
          self.relu = nn.Activation("relu")
  
file_path: gluon-cv/gluoncv/model_zoo/action_recognition/c3d.py
imports: from mxnet import init
  from mxnet.context import cpu
  from mxnet.gluon.block import HybridBlock
  from mxnet.gluon import nn
label_desc: Use image node_id 1 to create a new C3D object from inherited base classes: HybridBlock with example: obj = C3D(nclass, dropout_ratio, num_segments, num_crop, feat_ext, init_std, ctx)