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)