code: def test_pg_explainer_node(device, check_explanation, mode):
      x = torch.randn(8, 3, device=device)
      edge_index = torch.tensor(
          [
              [0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7],
              [1, 0, 2, 1, 3, 2, 4, 3, 5, 4, 6, 5, 7, 6],
          ],
          device=device,
      )
  
      if mode == ModelMode.binary_classification:
          target = torch.randint(2, (x.size(0),), device=device)
      elif mode == ModelMode.multiclass_classification:
          target = torch.randint(7, (x.size(0),), device=device)
      elif mode == ModelMode.regression:
          target = torch.randn((x.size(0), 1), device=device)
  
      model_config = ModelConfig(
          mode=mode, task_level="node", return_type="raw"
      )
  
      model = GCN(model_config).to(device)
  
      explainer = Explainer(
          model=model,
          algorithm=PGExplainer(epochs=2).to(device),
          explanation_type="phenomenon",
          edge_mask_type="object",
          model_config=model_config,
      )
  
      with pytest.raises(ValueError, match="not yet fully trained"):
          explainer(x, edge_index, target=target)
  
      explainer.algorithm.reset_parameters()
      for epoch in range(2):
          for index in range(x.size(0)):
              loss = explainer.algorithm.train(
                  epoch,
                  model,
                  x,
                  edge_index,
                  target=target,
                  index=index,
              )
              assert loss >= 0.0
  
      explanation = explainer(x, edge_index, target=target, index=0)
  
      check_explanation(explanation, None, explainer.edge_mask_type)
  
file_path: pytorch_geometric/test/explain/algorithm/test_pg_explainer.py
imports: import pytest
  import torch
  from torch_geometric.explain import Explainer, PGExplainer
  from torch_geometric.explain.config import ModelConfig, ModelMode, ModelTaskLevel
  from torch_geometric.nn import GCNConv, global_add_pool
  from torch_geometric.testing import withCUDA
label_desc: Use image node_id 1 for calling a global function with example usage: test_pg_explainer_node(device, check_explanation, mode) without return types