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 call interface for tf.keras.layers.Layer.
code: def call(self, inputs: tf.Tensor, training: Optional[bool] = None):
      """Implements call interface for tf.keras.layers.Layer."""
      # Handle drop out.
      if 0 < self.dropout < 1 and self._dropout_mask is not None:
          self._dropout_mask = _generate_dropout_mask(
              tf.keras.backend.ones_like(inputs),
              self.dropout,
              training=training,
          )
      if self._dropout_mask is not None:
          inputs *= self._dropout_mask
  
      logging.info(
          "Running regular SVDF conv layer with unit: %s and memory: %s",
          self.units,
          self.memory_size,
      )
      # svdf_output: [batch_size, time_steps, units]
      svdf_output, svdf_activations = self._run_svdf_conv_calculation(
          inputs,
          self.feature_kernel,
          self.time_kernel,
          self.memory_size,
          self.units,
          self.bias,
      )
  
      if tf.executing_eagerly():
          logging.info("Starting inputs: %s", inputs)
          logging.info("svdf_activations 0: %s", svdf_activations)
          logging.info("svdf_output : %s", svdf_output)
  
      return svdf_output
  
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 4 for calling the SvdfConvLayer obj's underlying member method code with example usage: obj.call(inputs, training) and returns: svdf_output