class_docstr: Point Cloud Transformer Encoder.
code: def __call__(
      self,
      inputs,
      mask: jnp.ndarray | None = None,
      train: bool = False,
      debug: bool = False,
  ):
      output = nn.Conv(
          self.feature_dim,
          kernel_size=(self.kernel_size, self.kernel_size),
          use_bias=True,
      )(inputs)
      output = nn.BatchNorm(use_running_average=not train)(
          output, mask=mask
      )
      output = nn.Conv(
          self.feature_dim,
          kernel_size=(self.kernel_size, self.kernel_size),
          use_bias=True,
      )(output)
      output = nn.BatchNorm(use_running_average=not train)(
          output, mask=mask
      )
  
      # Self-attention blocks, input_shape= [B, N, D]
      attention_outputs = []
      for _ in range(self.num_attention_layers):
          output = SelfAttentionLayer(
              in_channels=self.feature_dim,
              out_channels=self.feature_dim,
              attention_fn_configs=self.attention_fn_configs,
          )(output, inputs, mask=mask)
          attention_outputs.append(output)
  
      output = jnp.concatenate(attention_outputs, axis=-1)
  
      # conv-batchnorm-relu block
      output = nn.Conv(
          self.encoder_feature_dim,
          kernel_size=(self.kernel_size, self.kernel_size),
          use_bias=True,
      )(output)
      output = nn.BatchNorm(use_running_average=not train)(
          output, mask=mask
      )
      output = nn.leaky_relu(output, negative_slope=0.2)
  
      if self.out_dim is not None:
          # conv-batchnorm-relu block
          output = nn.Conv(
              self.out_dim,
              kernel_size=(self.kernel_size, self.kernel_size),
              use_bias=True,
          )(output)
          output = nn.BatchNorm(use_running_average=not train)(
              output, mask=mask
          )
          output = nn.leaky_relu(output, negative_slope=0.2)
      return output
  
imports: from typing import Any
  import flax.linen
  from flax.linen.initializers import zeros
  import jax
  import jax.numpy
  import ml_collections
  from scenic.model_lib.base_models.multilabel_classification_model import MultiLabelClassificationModel
  from scenic.projects.performer import performer
label_desc: Use image node_id 1 for calling the PointCloudTransformerEncoder obj's underlying member method code with example usage: obj.__call__(inputs, mask, train, debug) and returns: output