class_docstr: A recurrent actor.
  
  An actor based on a recurrent policy which takes non-batched observations and
  outputs non-batched actions, and keeps track of the recurrent state inside. It
  also allows adding experiences to replay and updating the weights from the
  policy on the learner.
class_docstr_tok: ["A","recurrent","actor",".","An","actor","based","on","a","recurrent","policy","which","takes","non-batched","observations","and","outputs","non-batched","actions",",","and","keeps","track","of","the","recurrent","state","inside",".","It","also","allows","adding","experiences","to","replay","and","updating","the","weights","from","the","policy","on","the","learner","."]
code: def observe(
      self, action: types.NestedArray, next_timestep: dm_env.TimeStep
  ):
      if not self._adder:
          return
  
      if not self._store_recurrent_state:
          self._adder.add(action, next_timestep)
          return
  
      numpy_state = tf2_utils.to_numpy_squeeze(self._prev_state)
      self._adder.add(action, next_timestep, extras=(numpy_state,))
  
imports: from typing import Optional, Tuple
  from acme import adders
  from acme import core
  from acme import types
  from acme.tf import utils
  from acme.tf import variable_utils
  import dm_env
  import sonnet
  import tensorflow
  import tensorflow_probability
label_desc: Use image node_id 5 for calling the RecurrentActor obj's underlying member method code with example usage: obj.observe(action, next_timestep) without return types