class_docstr: DSNT module to translate heatmap to coordinates
  
  Parameters
  ----------
  size : int or tuple,
      (width, height) of the input heatmap
  norm : str, the normalization method for heatmap
      available methods are 'softmax', or 'sum'
  axis : the axis for input heatmap
class_docstr_tok: ["DSNT","module","to","translate","heatmap","to","coordinates","Parameters","--","--","--","--","--","size",":","int","or","tuple",",","(","width",",","height",")","of","the","input","heatmap","norm",":","str",",","the","normalization","method","for","heatmap","available","methods","are","'softmax","'",",","or","'sum'","axis",":","the","axis","for","input","heatmap"]
code: def __init__(self, size, norm="sum", axis=(2, 3), **kwargs):
      super(DSNT, self).__init__(**kwargs)
      if isinstance(size, int):
          self.size = (size, size)
      else:
          self.size = size
      self.axis = axis
      self.norm = norm
      if self.norm == "softmax":
          self.softmax = SoftmaxHD(self.axis)
      elif self.norm != "sum":
          raise ValueError(
              "argument `norm` only accepts 'softmax' or 'sum'."
          )
  
      self.wfirst = 1 / (2 * self.size[0])
      self.wlast = 1 - 1 / (2 * self.size[0])
      self.hfirst = 1 / (2 * self.size[1])
      self.hlast = 1 - 1 / (2 * self.size[1])
  
imports: from __future__ import absolute_import
  from mxnet import initializer
  from mxnet.gluon import nn, contrib
  from mxnet.gluon.nn import BatchNorm, HybridBlock
label_desc: Use image node_id 1 to create a new DSNT object from inherited base classes: HybridBlock with example: obj = DSNT(size, norm, axis)