class_docstr: Squash the outer dimensions of input tensors; unsquash outputs.
  
  This layer wraps a Keras layer `wrapped` that cannot handle more than one
  batch dimension.  It squashes inputs' outer dimensions to a single larger
  batch then unsquashes the outputs of `wrapped`.
  
  The outer dimensions are the leftmost `rank(inputs) - inner_rank` dimensions.
  
  Examples:
  
  ```python
  batch_norm = tf.keras.layers.BatchNormalization(axis=-1)
  layer = SquashedOuterWrapper(wrapped=batch_norm, inner_rank=3)
  
  inputs_0 = tf.random.normal((B, H, W, C))
  # batch_norm sees tensor of shape [B, H, W, C]
  # outputs_1 shape is [B, H, W, C]
  outputs_0 = layer(inputs_0)
  
  inputs_1 = tf.random.normal((B, T, H, W, C))
  # batch_norm sees a tensor of shape [B * T, H, W, C]
  # outputs_1 shape is [B, T, H, W, C]
  outputs_1 = layer(inputs_1)
  
  inputs_2 = tf.random.normal((B1, B2, T, H, W, C))
  # batch_norm sees a tensor of shape [B1 * B2 * T, H, W, C]
  # outputs_2 shape is [B1, B2, T, H, W, C]
  outputs_2 = layer(inputs_2)
  ```
class_docstr_tok: ["Squash","the","outer","dimensions","of","input","tensors",";","unsquash","outputs",".","This","layer","wraps","a","Keras","layer","`","wrapped","`","that","can","not","handle","more","than","one","batch","dimension",".","It","squashes","inputs","'","outer","dimensions","to","a","single","larger","batch","then","unsquashes","the","outputs","of","`","wrapped","`",".","The","outer","dimensions","are","the","leftmost","`","rank","(","inputs",")","-","inner_rank","`","dimensions",".","Examples",":","``","`","python","batch_norm","=","tf.keras.layers.BatchNormalization","(","axis=-1",")","layer","=","SquashedOuterWrapper","(","wrapped=batch_norm",",","inner_rank=3",")","inputs_0","=","tf.random.normal","(","(","B",",","H",",","W",",","C",")",")","#","batch_norm","sees","tensor","of","shape","[","B",",","H",",","W",",","C","]","#","outputs_1","shape","is","[","B",",","H",",","W",",","C","]","outputs_0","=","layer","(","inputs_0",")","inputs_1","=","tf.random.normal","(","(","B",",","T",",","H",",","W",",","C",")",")","#","batch_norm","sees","a","tensor","of","shape","[","B","*","T",",","H",",","W",",","C","]","#","outputs_1","shape","is","[","B",",","T",",","H",",","W",",","C","]","outputs_1","=","layer","(","inputs_1",")","inputs_2","=","tf.random.normal","(","(","B1",",","B2",",","T",",","H",",","W",",","C",")",")","#","batch_norm","sees","a","tensor","of","shape","[","B1","*","B2","*","T",",","H",",","W",",","C","]","#","outputs_2","shape","is","[","B1",",","B2",",","T",",","H",",","W",",","C","]","outputs_2","=","layer","(","inputs_2",")","``","`"]
code: def get_config(self):
      config = {
          "inner_rank": self.inner_rank,
          "wrapped": {
              "class_name": self.wrapped.__class__.__name__,
              "config": self.wrapped.get_config(),
          },
      }
      base_config = dict(super(SquashedOuterWrapper, self).get_config())
      base_config.update(config)
      return base_config
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from typing import Any, Mapping, Text
  import numpy
  import tensorflow
  from tf_agents.networks import utils
label_desc: Use image node_id 6 for calling the SquashedOuterWrapper obj's underlying member method code with example usage: obj.get_config() and returns: base_config