code: def dropout(adj_t: SparseTensor, p: float, training: bool = True):
      if not training or p == 0.0:
          return adj_t
  
      if adj_t.storage.value() is not None:
          value = F.dropout(adj_t.storage.value(), p=p)
          adj_t = adj_t.set_value(value, layout="coo")
      else:
          mask = (
              torch.rand(adj_t.nnz(), device=adj_t.storage.row().device)
              > p
          )
          adj_t = adj_t.masked_select_nnz(mask, layout="coo")
  
      return adj_t
  
file_path: DIG/dig/lsgraph/method/GraphFMOB/utils.py
imports: from typing import Optional, Tuple
  import torch
  from torch import Tensor
  import torch.nn.functional
  from torch_sparse import SparseTensor
label_desc: Use image node_id 3 for calling a global function with example usage: dropout(adj_t, p, training) and returns: adj_t, adj_t