class_docstr: The PointNet 'Vanilla' classifier (i.e. without spatial transformer).
class_docstr_tok: ["The","PointNet","'Vanilla","'","classifier","(","i.e",".","without","spatial","transformer",")","."]
docstr: Constructor.
  
  Args:
    num_classes: the number of classes to classify.
    momentum: the momentum used for the batch normalization layer.
    dropout_rate: the dropout rate for the classification head.
docstr_tok: ["Constructor",".","Args",":","num_classes",":","the","number","of","classes","to","classify",".","momentum",":","the","momentum","used","for","the","batch","normalization","layer",".","dropout_rate",":","the","dropout","rate","for","the","classification","head","."]
code: def __init__(
      self,
      num_classes: int = 40,
      momentum: float = 0.5,
      dropout_rate: float = 0.3,
  ):
      """Constructor.
  
      Args:
        num_classes: the number of classes to classify.
        momentum: the momentum used for the batch normalization layer.
        dropout_rate: the dropout rate for the classification head.
      """
      super(PointNetVanillaClassifier, self).__init__()
      self.encoder = VanillaEncoder(momentum)
      self.classifier = ClassificationHead(
          num_classes=num_classes,
          momentum=momentum,
          dropout_rate=dropout_rate,
      )
  
imports: from typing import Optional
  import tensorflow
  from tensorflow_graphics.util import export_api
label_desc: Use image node_id 1 to create a new PointNetVanillaClassifier object from inherited base classes: tf.keras.layers with example: obj = PointNetVanillaClassifier(num_classes, momentum, dropout_rate)