class_docstr: Transform for channel-conditional params and latent residual prediction.
class_docstr_tok: ["Transform","for","channel-conditional","params","and","latent","residual","prediction","."]
code: def __init__(self, latent_depth, num_slices):
      super().__init__()
      conv = functools.partial(
          tfc.SignalConv2D,
          corr=False,
          strides_up=1,
          padding="same_zeros",
          use_bias=True,
          kernel_parameter="variable",
      )
  
      # Note that the number of channels in the output tensor must match the
      # size of the corresponding slice. If we have 10 slices and a bottleneck
      # with 320 channels, the output is 320 / 10 = 32 channels.
      slice_depth = latent_depth // num_slices
      if slice_depth * num_slices != latent_depth:
          raise ValueError(
              "Slices do not evenly divide latent depth (%d / %d)"
              % (latent_depth, num_slices)
          )
  
      self.transform = tf.keras.Sequential(
          [
              conv(224, (5, 5), name="layer_0", activation=tf.nn.relu),
              conv(128, (5, 5), name="layer_1", activation=tf.nn.relu),
              conv(
                  slice_depth, (3, 3), name="layer_2", activation=None
              ),
          ]
      )
  
imports: import argparse
  import functools
  import glob
  import sys
  from absl import app
  from absl.flags import argparse_flags
  import tensorflow
  import tensorflow_compression
  import tensorflow_datasets
label_desc: Use image node_id 1 to create a new SliceTransform object from inherited base classes: tf.keras.layers with example: obj = SliceTransform(latent_depth, num_slices)