class_docstr: EXPERIMENTAL Messenger to mark DCT dimension of parameter, for use with
  :class:`pyro.optim.optim.DCTAdam`.
  
  :param str name: The name of the plate along which to apply discrete cosine
      transforms on gradients.
class_docstr_tok: ["EXPERIMENTAL","Messenger","to","mark","DCT","dimension","of","parameter",",","for","use","with",":","class",":","`","pyro.optim.optim.DCTAdam","`",".",":","param","str","name",":","The","name","of","the","plate","along","which","to","apply","discrete","cosine","transforms","on","gradients","."]
code: def _postprocess_message(self, msg):
      if msg["type"] != "param":
          return
      event_dim = msg["kwargs"].get("event_dim")
      if event_dim is None:
          return
      for frame in msg["cond_indep_stack"]:
          if frame.name == self.name:
              value = msg["value"]
              event_dim += value.unconstrained().dim() - value.dim()
              value.unconstrained()._pyro_dct_dim = (
                  frame.dim - event_dim
              )
              return
  
imports: import numbers
  from functools import singledispatch
  import torch
  from torch.distributions import transform_to, transforms
  import pyro.distributions
  from pyro.infer.reparam import DiscreteCosineReparam, HaarReparam
  from pyro.poutine.messenger import Messenger
  from pyro.poutine.util import site_is_subsample
  from pyro.primitives import get_param_store
label_desc: Use image node_id 2 for calling the MarkDCTParamMessenger obj's underlying member method code with example usage: obj._postprocess_message(msg) without return types