code: def train(label_rate=0.65):  # How many labels to use for propagation.
      model.train()
  
      propagation_mask = MaskLabel.ratio_mask(
          train_mask, ratio=label_rate
      )
      supervision_mask = train_mask ^ propagation_mask
  
      optimizer.zero_grad()
      out = model(data.x, data.y, data.edge_index, propagation_mask)
      loss = F.cross_entropy(
          out[supervision_mask], data.y[supervision_mask]
      )
      loss.backward()
      optimizer.step()
  
      return float(loss)
  
file_path: pytorch_geometric/examples/unimp_arxiv.py
imports: import os.path
  import torch
  import torch.nn.functional
  from ogb.nodeproppred import PygNodePropPredDataset
  import torch_geometric.transforms
  from torch_geometric.nn import MaskLabel, TransformerConv
  from torch_geometric.utils import index_to_mask
label_desc: Use image node_id 1 for calling a global function with example usage: train(label_rate) and returns: float