class_docstr: Mask predictor head
  
  Parameters
  ----------
  batch_images : int
      Used to reshape output
  classes : iterable of str
      Used to determine number of output channels, and store class names
  mask_channels : int
      Used to determine number of hidden channels
  num_fcn_convs : int, default 0
      number of convolution blocks before deconv layer. For FPN network this is typically 4.
class_docstr_tok: ["Mask","predictor","head","Parameters","--","--","--","--","--","batch_images",":","int","Used","to","reshape","output","classes",":","iterable","of","str","Used","to","determine","number","of","output","channels",",","and","store","class","names","mask_channels",":","int","Used","to","determine","number","of","hidden","channels","num_fcn_convs",":","int",",","default","0","number","of","convolution","blocks","before","deconv","layer",".","For","FPN","network","this","is","typically","4","."]
docstr: Forward Mask Head.
  
  The behavior during training and inference is different.
  
  Parameters
  ----------
  x : mxnet.nd.NDArray or mxnet.symbol
      The network input tensor of shape (B * N, fC, fH, fW).
  
  Returns
  -------
  x : mxnet.nd.NDArray or mxnet.symbol
      Mask prediction of shape (B, N, C, MS, MS)
docstr_tok: ["Forward","Mask","Head",".","The","behavior","during","training","and","inference","is","different",".","Parameters","--","--","--","--","--","x",":","mxnet.nd.NDArray","or","mxnet.symbol","The","network","input","tensor","of","shape","(","B","*","N",",","fC",",","fH",",","fW",")",".","Returns","--","--","--","-","x",":","mxnet.nd.NDArray","or","mxnet.symbol","Mask","prediction","of","shape","(","B",",","N",",","C",",","MS",",","MS",")"]
code: def hybrid_forward(self, F, x):
      """Forward Mask Head.
  
      The behavior during training and inference is different.
  
      Parameters
      ----------
      x : mxnet.nd.NDArray or mxnet.symbol
          The network input tensor of shape (B * N, fC, fH, fW).
  
      Returns
      -------
      x : mxnet.nd.NDArray or mxnet.symbol
          Mask prediction of shape (B, N, C, MS, MS)
  
      """
      # (B * N, mask_channels, MS, MS)
      x = F.relu(self.deconv(x))
      # (B * N, C, MS, MS)
      x = self.mask(x)
      # (B * N, C, MS, MS) -> (B, N, C, MS, MS)
      if autograd.is_training():
          x = x.reshape((-4, self._batch_images, -1, 0, 0, 0))
      else:
          # always use batch_size = 1 for inference
          x = x.reshape((-4, 1, -1, 0, 0, 0))
      return x
  
imports: from __future__ import absolute_import
  import os
  import warnings
  import mxnet
  from mxnet import autograd
  from mxnet.gluon import nn
  from mxnet.gluon.contrib.nn import SyncBatchNorm
  from .rcnn_target import MaskTargetGenerator
  from ..faster_rcnn import FasterRCNN
  from ..rcnn import custom_rcnn_fpn
label_desc: Use image node_id 2 for calling the Mask obj's underlying member method code with example usage: obj.hybrid_forward(F, x) and returns: x