def build()

in tensorflow_compression/python/layers/signal_conv.py [0:0]


  def build(self, input_shape):
    input_shape = tf.TensorShape(input_shape)
    if input_shape.rank != self._rank + 2:
      raise ValueError(f"Input tensor must have rank {self._rank + 2}, "
                       f"received shape {input_shape}.")
    channel_axis = {"channels_first": 1, "channels_last": -1}[self.data_format]
    input_channels = input_shape[channel_axis]
    if input_channels is None:
      raise ValueError("The channel dimension of the inputs must be defined.")

    kernel_shape = self.kernel_support + (input_channels, self.filters)
    if self.channel_separable:
      output_channels = self.filters * input_channels
    else:
      output_channels = self.filters

    if isinstance(self.kernel_parameter, str):
      initial_value = self.kernel_initializer(
          shape=kernel_shape, dtype=self.dtype)
      self.kernel_parameter = dict(
          variable=tf.Variable,
          rdft=parameters.RDFTParameter,
      )[self.kernel_parameter](initial_value, name="kernel")

    if self.use_bias and isinstance(self.bias_parameter, str):
      initial_value = self.bias_initializer(
          shape=[output_channels], dtype=self.dtype)
      self.bias_parameter = dict(
          variable=tf.Variable,
      )[self.bias_parameter](initial_value, name="bias")

    if self.kernel_regularizer is not None:
      self.add_loss(lambda: self.kernel_regularizer(self.kernel))

    if self.use_bias and self.bias_regularizer is not None:
      self.add_loss(lambda: self.bias_regularizer(self.bias))

    super().build(input_shape)