class_docstr: Svdf implementations with conv layers.
  
  This is an equalivent implementation to class SvdfCell in svdf_cell.py.
  The difference is, training with SvdfConvLayer implementation is much faster,
  but SvdfCell is better during inference time as it is implemented in streaming
  way.
  
  # Attributes:
    units: Positive integer, dimensionality of the output space.
    memory_size: Dimension of feature vector.
    rank: int or long, the rank of the SVD approximation.
    activation: Activation function to use
      (see [activations](../activations.md)).
      Default: Rectified linear unit (`relu`).
      If you pass `None`, no activation is applied
      (ie. "linear" activation: `a(x) = x`).
    use_bias: Boolean, whether the layer uses a bias vector.
    kernel_initializer: Initializer for the `kernel` weights matrix,
      used for the linear transformation of the inputs
      (see [initializers](../initializers.md)).
    bias_initializer: Initializer for the bias vector
      (see [initializers](../initializers.md)).
    dropout: Float between 0 and 1.
      Fraction of the units to drop for
      the linear transformation of the inputs.
    use_batch_norm: whether to apply batch normalization
    bn_scale: whether to apply batch norm scaling. When the next layer is linear
      (e.g. nn.relu), this can be disabled since the scaling will be done by the
      next layer.
docstr: Implements build interface for tf.keras.layers.Layer.
code: def build(self, input_shape: List[int]):
      """Implements build interface for tf.keras.layers.Layer."""
      # Sub-classes should check for input_shape and then call super.build.
      self.num_features = input_shape[-1]
      self.feature_kernel = self.add_weight(
          shape=(self.num_features, self.num_filters),
          name="feature_kernel",
          initializer=self.kernel_initializer,
      )
      self.time_kernel = self.add_weight(
          shape=(self.memory_size, self.num_filters),
          name="time_kernel",
          initializer=self.kernel_initializer,
      )
      if self.use_bias:
          self.bias = self.add_weight(
              shape=(self.units,),
              name="bias",
              initializer=self.bias_initializer,
          )
      else:
          self.bias = None
      # Sets self.built = True
      super(SvdfConvLayer, self).build(input_shape)
  
file_path: model_search/model_search/ops/svdf_conv.py
imports: from typing import Any, Callable, Dict, List, Optional, Text, Union
  from absl import logging
  from six.moves import range
  import tensorflow.compat.v1
label_desc: Use image node_id 2 for calling the SvdfConvLayer obj's underlying member method code with example usage: obj.build(input_shape) without return types