class_docstr: A composite data class for data structure in the graphbolt.
  
  It is designed to facilitate the exchange of data among different components
  involved in processing data. The purpose of this class is to unify the
  representation of input and output data across different stages, ensuring
  consistency and ease of use throughout the loading process.
class_docstr_tok: ["A","composite","data","class","for","data","structure","in","the","graphbolt",".","It","is","designed","to","facilitate","the","exchange","of","data","among","different","components","involved","in","processing","data",".","The","purpose","of","this","class","is","to","unify","the","representation","of","input","and","output","data","across","different","stages",",","ensuring","consistency","and","ease","of","use","throughout","the","loading","process","."]
docstr: Set node features.
docstr_tok: ["Set","node","features","."]
code: def set_node_features(
      self,
      node_features: Union[
          Dict[str, torch.Tensor], Dict[Tuple[str, str], torch.Tensor]
      ],
  ) -> None:
      """Set node features."""
      self.node_features = node_features
  
imports: from dataclasses import dataclass
  from typing import Dict, List, Tuple, Union
  import torch
  import dgl
  from dgl.utils import recursive_apply
  from .base import etype_str_to_tuple
  from .internal import get_attributes
  from .sampled_subgraph import SampledSubgraph
label_desc: Use image node_id 5 for calling the MiniBatch obj's underlying member method code with example usage: obj.set_node_features(node_features) without return types