class_docstr: Class to build CEM Policy.
  
  Some notations used in the comments below are:
  
  B: batch_size
  A: action_size
  N: num_samples
  M: num_elites
  
  Supports the following three cases.
  
  1. Nested action_spec containing 1d continuous action.
  2. Nested action_spec containing 1d continuous or discrete action.
  3. Nested action_spec containing 1d continuous action and 1 one_hot action.
  
  Note: all actions need to be 1-d array.
docstr: Returns initial mean and variance tensors.
  
  Broadcasts the initial mean and variance to the requested batch_size.
  
  Args:
    batch_size: The requested batch_size.
  
  Returns:
    mean: A [B, A] sized tensors where each row is the initial_mean.
    var: A [B, A] sized tensors where each row is the initial_var.
docstr_tok: ["Returns","initial","mean","and","variance","tensors",".","Broadcasts","the","initial","mean","and","variance","to","the","requested","batch_size",".","Args",":","batch_size",":","The","requested","batch_size",".","Returns",":","mean",":","A","[","B",",","A","]","sized","tensors","where","each","row","is","the","initial_mean",".","var",":","A","[","B",",","A","]","sized","tensors","where","each","row","is","the","initial_var","."]
code: def _initial_params(
      self, batch_size: tf.Tensor
  ) -> Tuple[tf.Tensor, tf.Tensor]:
      """Returns initial mean and variance tensors.
  
      Broadcasts the initial mean and variance to the requested batch_size.
  
      Args:
        batch_size: The requested batch_size.
  
      Returns:
        mean: A [B, A] sized tensors where each row is the initial_mean.
        var: A [B, A] sized tensors where each row is the initial_var.
      """
  
      def broadcast_to_batch(array):
          tensor = tf.constant(array)
          action_size = tf.shape(tensor)[-1]
          return tf.broadcast_to(tensor, [batch_size, action_size])
  
      mean = tf.nest.map_structure(
          broadcast_to_batch,
          convert_nest_lists_to_np_array(self._init_mean),
      )
      var = tf.nest.map_structure(
          broadcast_to_batch,
          convert_nest_lists_to_np_array(self._init_var),
      )
  
      return mean, var
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import collections
  from typing import Any, Optional, Sequence, Tuple, Union
  import gin
  import numpy
  import tensorflow
  import tensorflow_probability
  from tf_agents.networks import network
  from tf_agents.networks import utils
  from tf_agents.policies import tf_policy
  from tf_agents.policies.samplers import qtopt_cem_actions_sampler
  from tf_agents.trajectories import policy_step
  from tf_agents.trajectories import time_step
  from tf_agents.typing import types
  from tf_agents.utils import common
  from tf_agents.utils import nest_utils
label_desc: Use image node_id 2 for calling the CEMPolicy obj's underlying member method code with example usage: obj._initial_params(batch_size) and returns: mean,  var, tf