class_docstr: Memory wrapper.
code: def __init__(self, batch_env):
      super(_MemoryWrapper, self).__init__(batch_env)
      infinity = 10000000
      meta_data = list(zip(*_rollout_metadata(batch_env)))
      # In memory wrapper we do not collect pdfs neither value_function
      # thus we only need the first 4 entries of meta_data
      shapes = meta_data[0][:4]
      dtypes = meta_data[1][:4]
      self.speculum = tf.FIFOQueue(
          infinity, shapes=shapes, dtypes=dtypes
      )
      observs_shape = batch_env.observ.shape
      # TODO(piotrmilos): possibly retrieve the observation type for batch_env
      self._observ = tf.Variable(
          tf.zeros(observs_shape, self.observ_dtype), trainable=False
      )
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import math
  import os
  from tensor2tensor.layers import common_layers
  from tensor2tensor.models.research.rl import get_policy
  from tensor2tensor.rl import ppo
  from tensor2tensor.rl.envs.tf_atari_wrappers import StackWrapper
  from tensor2tensor.rl.envs.tf_atari_wrappers import WrapperBase
  from tensor2tensor.rl.policy_learner import PolicyLearner
  from tensor2tensor.rl.restarter import Restarter
  from tensor2tensor.utils import trainer_lib
  import tensorflow.compat.v1
  import tensorflow_probability
label_desc: Use image node_id 1 to create a new _MemoryWrapper object from inherited base classes: WrapperBase with example: obj = _MemoryWrapper(batch_env)