class_docstr: log p(x) >= E_{q(z|x)}[ log p(x|z) + log p(z) - log q(z|x) ]
  p(z) = unif
  p(x|z) = N(x; mu_z, (kR_z'kR_z)^-1)
  q(z|x) = softmax(-0.5*(kR_z(x-mu_z))^2 +logdet(kR_z) -0.5d*log(2*pi))
  mu_z = E_{q(z|x)} x
  cov_z = E_{q(z|x)} x^2 - (E_{q(z|x)} x)^2
  kR_z = inv(choL(cov_z))
  
  Shapes
  ===
  x: (batch_size, input_dim)
  log_marg: (batch_size,)
  qz: (batch_size, num_clusters)
class_docstr_tok: ["log","p","(","x",")",">","=","E_","{","q","(","z|x",")","}","[","log","p","(","x|z",")","+","log","p","(","z",")","-","log","q","(","z|x",")","]","p","(","z",")","=","unif","p","(","x|z",")","=","N","(","x",";","mu_z",",","(","kR_z'kR_z",")","^-1",")","q","(","z|x",")","=","softmax","(","-0.5","*","(","kR_z","(","x-mu_z",")",")","^2","+logdet","(","kR_z",")","-0.5d","*","log","(","2","*","pi",")",")","mu_z","=","E_","{","q","(","z|x",")","}","x","cov_z","=","E_","{","q","(","z|x",")","}","x^2","-","(","E_","{","q","(","z|x",")","}","x",")","^2","kR_z","=","inv","(","choL","(","cov_z",")",")","Shapes","===","x",":","(","batch_size",",","input_dim",")","log_marg",":","(","batch_size",",",")","qz",":","(","batch_size",",","num_clusters",")"]
docstr: @Return (batch_size, num_clusters, input_dim)
docstr_tok: ["@","Return","(","batch_size",",","num_clusters",",","input_dim",")"]
code: def _get_dx_(F, x, mu_):
      """@Return (batch_size, num_clusters, input_dim)"""
      return F.broadcast_minus(x.expand_dims(1), mu_)
  
file_path: gluonts/src/gluonts/nursery/gmm_tpp/gmm_base.py
imports: import time
  import mxnet
  from mxnet import gluon
  import numpy
label_desc: Use image node_id 2 for calling the GMMModel obj's underlying member method code with example usage: obj._get_dx_(F, x, mu_) and returns: F