class_docstr: The Vanilla PointNet feature encoder.
  
  Consists of five conv2 layers with (64,64,64,128,1024) output channels.
  
  Note:
    PointNetConv2Layer are used instead of tf.keras.layers.Conv2D.
  
  https://github.com/charlesq34/pointnet/blob/master/models/pointnet_cls_basic.py
class_docstr_tok: ["The","Vanilla","PointNet","feature","encoder",".","Consists","of","five","conv2","layers","with","(","64,64,64,128,1024",")","output","channels",".","Note",":","PointNetConv2Layer","are","used","instead","of","tf.keras.layers.Conv2D",".","https",":","\/\/github.com\/charlesq34\/pointnet\/blob\/master\/models\/pointnet_cls_basic.py"]
docstr: Computes the PointNet features.
  
  Args:
    inputs: a dense tensor of size `[B,N,D]`.
    training: flag to control batch normalization update statistics.
  
  Returns:
    Tensor with shape `[B, N, C=1024]`
docstr_tok: ["Computes","the","PointNet","features",".","Args",":","inputs",":","a","dense","tensor","of","size","`","[","B",",","N",",","D","]","`",".","training",":","flag","to","control","batch","normalization","update","statistics",".","Returns",":","Tensor","with","shape","`","[","B",",","N",",","C=1024","]","`"]
code: def call(
      self, inputs: tf.Tensor, training: Optional[bool] = None
  ) -> tf.Tensor:  # pylint: disable=arguments-differ
      """Computes the PointNet features.
  
      Args:
        inputs: a dense tensor of size `[B,N,D]`.
        training: flag to control batch normalization update statistics.
  
      Returns:
        Tensor with shape `[B, N, C=1024]`
      """
      x = tf.expand_dims(inputs, axis=2)  # [B,N,1,D]
      x = self.conv1(x, training)  # [B,N,1,64]
      x = self.conv2(x, training)  # [B,N,1,64]
      x = self.conv3(x, training)  # [B,N,1,64]
      x = self.conv4(x, training)  # [B,N,1,128]
      x = self.conv5(x, training)  # [B,N,1,1024]
      x = tf.math.reduce_max(input_tensor=x, axis=1)  # [B,1,1024]
      return tf.squeeze(x)
  
imports: from typing import Optional
  import tensorflow
  from tensorflow_graphics.util import export_api
label_desc: Use image node_id 2 for calling the VanillaEncoder obj's underlying member method code with example usage: obj.call(inputs, training) and returns: tf