class_docstr: Main model class.
code: def __init__(
      self, lmbda, num_filters, num_scales, scale_min, scale_max
  ):
      super().__init__()
      self.lmbda = lmbda
      self.num_scales = num_scales
      offset = tf.math.log(scale_min)
      factor = (tf.math.log(scale_max) - tf.math.log(scale_min)) / (
          num_scales - 1.0
      )
      self.scale_fn = lambda i: tf.math.exp(offset + factor * i)
      self.analysis_transform = AnalysisTransform(num_filters)
      self.synthesis_transform = SynthesisTransform(num_filters)
      self.hyper_analysis_transform = HyperAnalysisTransform(
          num_filters
      )
      self.hyper_synthesis_transform = HyperSynthesisTransform(
          num_filters
      )
      self.hyperprior = tfc.NoisyDeepFactorized(
          batch_shape=(num_filters,)
      )
      self.build((None, None, None, 3))
  
imports: import argparse
  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 BMSHJ2018Model object from inherited base classes: tf.keras with example: obj = BMSHJ2018Model(lmbda, num_filters, num_scales, scale_min, scale_max)