class_docstr: Base class to implement an encoder that creates a latent z vector.
  
  Users should override compute_z() to define the actual encoder structure.
  Input_keys from compute_z() instead of call(), output_keys are always ['z'].
docstr: Takes in input tensors and returns a latent tensor z.
docstr_tok: ["Takes","in","input","tensors","and","returns","a","latent","tensor","z","."]
code: def call(self, *args, **unused_kwargs):
      """Takes in input tensors and returns a latent tensor z."""
      time_steps = int(args[-1].shape[1])
      inputs = args[:-1]  # Last input just used for time_steps.
      z = self.compute_z(*inputs)
      return self.expand_z(z, time_steps)
  
imports: import ddsp
  from ddsp import spectral_ops
  from ddsp.training import nn
  import gin
  import tensorflow.compat.v2
label_desc: Use image node_id 2 for calling the ZEncoder obj's underlying member method code with example usage: obj.call() and returns: self