docstr: set params and create ops
  
  :param shape: shape of the stats to track
  :param clip_values: if not None, sets clip min/max thresholds
docstr_tok: ["set","params","and","create","ops",":","param","shape",":","shape","of","the","stats","to","track",":","param","clip_values",":","if","not","None",",","sets","clip","min\/max","thresholds"]
code: def set_params(self, shape=[1], clip_values=None):
      """
      set params and create ops
  
      :param shape: shape of the stats to track
      :param clip_values: if not None, sets clip min/max thresholds
      """
  
      self.clip_values = clip_values
      with tf.variable_scope(self.name):
          self._sum = tf.get_variable(
              dtype=tf.float64,
              initializer=tf.constant_initializer(0.0),
              name="running_sum",
              trainable=False,
              shape=shape,
              validate_shape=False,
              collections=[tf.GraphKeys.GLOBAL_VARIABLES],
          )
          self._sum_squares = tf.get_variable(
              dtype=tf.float64,
              initializer=tf.constant_initializer(self.epsilon),
              name="running_sum_squares",
              trainable=False,
              shape=shape,
              validate_shape=False,
              collections=[tf.GraphKeys.GLOBAL_VARIABLES],
          )
          self._count = tf.get_variable(
              dtype=tf.float64,
              shape=(),
              initializer=tf.constant_initializer(self.epsilon),
              name="count",
              trainable=False,
              collections=[tf.GraphKeys.GLOBAL_VARIABLES],
          )
  
          self._shape = None
          self._mean = tf.div(self._sum, self._count, name="mean")
          self._std = tf.sqrt(
              tf.maximum(
                  (
                      self._sum_squares
                      - self._count * tf.square(self._mean)
                  )
                  / tf.maximum(self._count - 1, 1),
                  self.epsilon,
              ),
              name="stdev",
          )
          self.tf_mean = tf.cast(self._mean, "float32")
          self.tf_std = tf.cast(self._std, "float32")
  
          self.new_sum = tf.placeholder(dtype=tf.float64, name="sum")
          self.new_sum_squares = tf.placeholder(
              dtype=tf.float64, name="var"
          )
          self.newcount = tf.placeholder(
              shape=[], dtype=tf.float64, name="count"
          )
  
          self._inc_sum = tf.assign_add(
              self._sum, self.new_sum, use_locking=True
          )
          self._inc_sum_squares = tf.assign_add(
              self._sum_squares, self.new_sum_squares, use_locking=True
          )
          self._inc_count = tf.assign_add(
              self._count, self.newcount, use_locking=True
          )
  
          self.raw_obs = tf.placeholder(
              dtype=tf.float64, name="raw_obs"
          )
          self.normalized_obs = (self.raw_obs - self._mean) / self._std
          if self.clip_values is not None:
              self.clipped_obs = tf.clip_by_value(
                  self.normalized_obs,
                  self.clip_values[0],
                  self.clip_values[1],
              )
  
          self.ops_were_created = True
  
file_path: coach/rl_coach/architectures/tensorflow_components/shared_variables.py
imports: import os
  import pickle
  import numpy
  import tensorflow
  from rl_coach.utilities.shared_running_stats import SharedRunningStats
label_desc: Use image node_id 2 for calling the TFSharedRunningStats obj's underlying member method code with example usage: obj.set_params(shape, clip_values) without return types