code: def sudoku_dataloader(batch_size, segment="train"):
      """
      Get a DataLoader instance for dataset of sudoku. Every iteration of the dataloader returns
      a DGLGraph instance, the ndata of the graph contains:
      'q': question, e.g. the sudoku puzzle to be solved, the position is to be filled with number from 1-9
           if the value in the position is 0
      'a': answer, the ground truth of the sudoku puzzle
      'row': row index for each position in the grid
      'col': column index for each position in the grid
      :param batch_size: Batch size for the dataloader
      :param segment: The segment of the datasets, must in ['train', 'valid', 'test']
      :return: A pytorch DataLoader instance
      """
      data = _get_sudoku_dataset(segment)
      q, a = zip(*data)
  
      dataset = ListDataset(q, a)
      if segment == "train":
          data_sampler = RandomSampler(dataset)
      else:
          data_sampler = SequentialSampler(dataset)
  
      basic_graph = _basic_sudoku_graph()
      sudoku_indices = np.arange(0, 81)
      rows = sudoku_indices // 9
      cols = sudoku_indices % 9
  
      def collate_fn(batch):
          graph_list = []
          for q, a in batch:
              q = torch.tensor(q, dtype=torch.long)
              a = torch.tensor(a, dtype=torch.long)
              graph = copy(basic_graph)
              graph.ndata["q"] = q  # q means question
              graph.ndata["a"] = a  # a means answer
              graph.ndata["row"] = torch.tensor(rows, dtype=torch.long)
              graph.ndata["col"] = torch.tensor(cols, dtype=torch.long)
              graph_list.append(graph)
          batch_graph = dgl.batch(graph_list)
          return batch_graph
  
      dataloader = DataLoader(
          dataset,
          batch_size,
          sampler=data_sampler,
          collate_fn=collate_fn,
      )
      return dataloader
  
file_path: dgl/examples/pytorch/rrn/sudoku_data.py
imports: import csv
  import os
  import urllib.request
  import zipfile
  from copy import copy
  import dgl
  import numpy
  import torch
  from torch.utils.data import DataLoader, RandomSampler, SequentialSampler
  from torch.utils.data.dataset import Dataset
label_desc: Use image node_id 3 for calling a global function with example usage: sudoku_dataloader(batch_size, segment) and returns: dataloader, batch_graph