code: def __init__(
      self,
      training=False,
      only_drop=False,
      uniform=False,
      hid_dim=128,
      magnitude=None,
      temperature=1.0,
      undirected=True,
  ):
      super(EdgePer, self).__init__()
      self.uniform = uniform
      self.magnitude = magnitude
      self.undirected = undirected
      if not uniform:
          self.edge_per_mlp = torch.nn.Sequential(
              torch.nn.Linear(hid_dim + 1, 2 * hid_dim),
              torch.nn.ReLU(),
              torch.nn.Linear(2 * hid_dim, 1),
          )
          self.only_drop = only_drop
          self.training = training
          self.temperature = temperature
      else:
          assert magnitude is not None
          if only_drop:
              self.uniform_per_func = self.uniform_edge_drop
          else:
              self.uniform_per_func = self.uniform_edge_per
  
file_path: DIG/dig/auggraph/method/GraphAug/aug/edge_per.py
imports: import torch
  import random
  import torch.nn.functional
  from torch.distributions.bernoulli import Bernoulli
  from torch_geometric.data import Data
  from torch_geometric.utils.dropout import filter_adj
  from torch_geometric.utils.num_nodes import maybe_num_nodes
  from .aug_utils import coalesce
label_desc: Use image node_id 1 to create a new EdgePer object from inherited base classes: torch.nn with example: obj = EdgePer(training, only_drop, uniform, hid_dim, magnitude, temperature, undirected)