class_docstr: A 2-layer MLP with ReLU activation and dropout applied to the flattened token representations.
  
  This is for conveniently choosing a configuration similar to the paper. For more complex aggregation mechanisms,
  pass an arbitrary callable instead.
  
  .. seealso:: https://github.com/migalkin/NodePiece/blob/d731c9990/lp_rp/pykeen105/nodepiece_rotate.py#L57-L65
docstr: Forward the MLP on the given dimension.
  
  :param xs: The tensor to forward
  :param dim: Only a parameter to match the signature of torch.mean / torch.sum
      this class is not thought to be usable from outside
  :returns: The tensor after applying this MLP
docstr_tok: ["Forward","the","MLP","on","the","given","dimension",".",":","param","xs",":","The","tensor","to","forward",":","param","dim",":","Only","a","parameter","to","match","the","signature","of","torch.mean","\/","torch.sum","this","class","is","not","thought","to","be","usable","from","outside",":","returns",":","The","tensor","after","applying","this","MLP"]
code: def forward(
      self, xs: torch.FloatTensor, dim: int
  ) -> torch.FloatTensor:
      """Forward the MLP on the given dimension.
  
      :param xs: The tensor to forward
      :param dim: Only a parameter to match the signature of torch.mean / torch.sum
          this class is not thought to be usable from outside
      :returns: The tensor after applying this MLP
      """
      assert dim == -2
      return super().forward(
          xs.view(*xs.shape[: -self.flatten_dims], -1)
      )
  
imports: from typing import Optional, Union
  import torch
  from torch import nn
label_desc: Use image node_id 2 for calling the ConcatMLP obj's underlying member method code with example usage: obj.forward(xs, dim) and returns: super