class_docstr: A Qtopt Agent.
  
  Implements the Qt-Opt algorithm from
  
  "QT-Opt: Scalable Deep Reinforcement Learning for Vision-Based Robotic "
    "Manipulation"
  
   Dmitry Kalashnikov et al., 2018
   https://arxiv.org/abs/1806.10293
docstr: Performs a soft update of the target network.
  
  For each weight w_s in the q network, and its corresponding
  weight w_t in the target_q_network, a soft update is:
  w_t = (1 - tau) * w_t + tau * w_s
  
  Args:
    tau: A float scalar in [0, 1]. Default `tau=1.0` means hard update. Used
      for target network.
    period: Step interval at which the target network is updated. Used for
      target network.
  
  Returns:
    A callable that performs a soft update of the target network parameters.
docstr_tok: ["Performs","a","soft","update","of","the","target","network",".","For","each","weight","w_s","in","the","q","network",",","and","its","corresponding","weight","w_t","in","the","target_q_network",",","a","soft","update","is",":","w_t","=","(","1","-","tau",")","*","w_t","+","tau","*","w_s","Args",":","tau",":","A","float","scalar","in","[","0",",","1","]",".","Default","`","tau=1.0","`","means","hard","update",".","Used","for","target","network",".","period",":","Step","interval","at","which","the","target","network","is","updated",".","Used","for","target","network",".","Returns",":","A","callable","that","performs","a","soft","update","of","the","target","network","parameters","."]
code: def _get_target_updater(self, tau=1.0, period=1):
      """Performs a soft update of the target network.
  
      For each weight w_s in the q network, and its corresponding
      weight w_t in the target_q_network, a soft update is:
      w_t = (1 - tau) * w_t + tau * w_s
  
      Args:
        tau: A float scalar in [0, 1]. Default `tau=1.0` means hard update. Used
          for target network.
        period: Step interval at which the target network is updated. Used for
          target network.
  
      Returns:
        A callable that performs a soft update of the target network parameters.
      """
      with tf.name_scope("update_targets"):
  
          def update():
              return common.soft_variables_update(
                  self._q_network.variables,
                  self._target_q_network.variables,
                  tau,
                  tau_non_trainable=1.0,
              )
  
          return common.Periodically(
              update, period, "periodic_update_targets"
          )
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import typing
  import gin
  import tensorflow
  from tf_agents.agents import data_converter
  from tf_agents.agents import tf_agent
  from tf_agents.networks import utils
  from tf_agents.policies import epsilon_greedy_policy
  from tf_agents.policies import qtopt_cem_policy
  from tf_agents.specs import tensor_spec
  from tf_agents.typing import types
  from tf_agents.utils import common
  from tf_agents.utils import eager_utils
  from tf_agents.utils import nest_utils
label_desc: Use image node_id 9 for calling the QtOptAgent obj's underlying member method code with example usage: obj._get_target_updater(tau, period) and returns: common, common