class_docstr: Shape auto-encoder with multiple convex polytopes.
  
  Attributes:
    n_params: int, the number of hyperplane parameters.
class_docstr_tok: ["Shape","auto-encoder","with","multiple","convex","polytopes",".","Attributes",":","n_params",":","int",",","the","number","of","hyperplane","parameters","."]
code: def __init__(self, args):
      super(MultiConvexNet, self).__init__()
      self._k = 20
      self._n_half_planes = args.n_half_planes
      self._n_parts = args.n_parts
      self._sample_bbx = args.sample_bbx
      self._sample_surf = args.sample_surf
      self._sample_size = args.sample_bbx + args.sample_surf
      self._level_set = args.level_set
      self._w_overlap = args.weight_overlap
      self._w_balance = args.weight_balance
      self._w_center = args.weight_center
      self._image_input = args.image_input
      self._dims = args.dims
  
      # Params = Roundness + Translation + Hyperplanes
      self.n_params = (
          self._n_parts
          + self._n_parts * self._dims
          + self._n_parts * self._n_half_planes * self._dims
      )
  
      with tf.variable_scope("mc_encoder"):
          self.img_encoder = resnet.Resnet18(args.latent_size)
          self.beta_decoder = Decoder(self.n_params)
  
      with tf.variable_scope("mc_decoder"):
          self.sdf = MultiConvexUnit(
              args.dims, args.n_parts, args.sharpness
          )
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import numpy
  import tensorflow.compat.v1
  from tensorflow_graphics.projects.cvxnet.lib import resnet
label_desc: Use image node_id 1 to create a new MultiConvexNet object from inherited base classes: keras with example: obj = MultiConvexNet(args)