class_docstr: Permutes input vector in a random but fixed way.
  
  Args:
      dim (list[tuple[int]]): Dimension of the input vector.
      seed (float | None=None): Seed for the random permutation.
docstr: Applies the permutation to the input.
  
  Args:
      input_tensor: list of input tensors
      rev: if True, applies the inverse permutation
      jac: (unused) if True, computes the log determinant of the Jacobian
  
  Returns:
      tuple[Tensor, Tensor]: output tensor and log determinant of the Jacobian
docstr_tok: ["Applies","the","permutation","to","the","input",".","Args",":","input_tensor",":","list","of","input","tensors","rev",":","if","True",",","applies","the","inverse","permutation","jac",":","(","unused",")","if","True",",","computes","the","log","determinant","of","the","Jacobian","Returns",":","tuple","[","Tensor",",","Tensor","]",":","output","tensor","and","log","determinant","of","the","Jacobian"]
code: def forward(
      self, input_tensor: list[Tensor], rev=False, jac=True
  ) -> tuple[list[Tensor], float]:
      """Applies the permutation to the input.
  
      Args:
          input_tensor: list of input tensors
          rev: if True, applies the inverse permutation
          jac: (unused) if True, computes the log determinant of the Jacobian
  
      Returns:
          tuple[Tensor, Tensor]: output tensor and log determinant of the Jacobian
      """
      if not rev:
          return [
              input_tensor[i][:, self.perm[i]]
              for i in range(self.n_inputs)
          ], 0.0
  
      return [
          input_tensor[i][:, self.perm_inv[i]]
          for i in range(self.n_inputs)
      ], 0.0
  
imports: from __future__ import annotations
  from math import exp
  import numpy
  import torch
  import torch.nn.functional
  from FrEIA.framework import GraphINN, InputNode, Node, OutputNode
  from FrEIA.modules import InvertibleModule
  from torch import Tensor, nn
  from torchvision.models.efficientnet import EfficientNet_B5_Weights
  from anomalib.models.components.feature_extractors import TorchFXFeatureExtractor
  from .anomaly_map import AnomalyMapGenerator, AnomalyMapMode
label_desc: Use image node_id 3 for calling the ParallelPermute obj's underlying member method code with example usage: obj.forward(input_tensor, rev, jac) and returns: unknown,  int, unknown,  int