class_docstr: Neural Graph Collaborative Filtering
  
  Parameters
  ----------
  name: string, default: 'NGCF'
      The name of the recommender model.
  
  emb_size: int, default: 64
      Size of the node embeddings.
  
  layer_sizes: list, default: [64, 64, 64]
      Size of the output of convolution layers.
  
  dropout_rates: list, default: [0.1, 0.1, 0.1]
      Dropout rate for each of the convolution layers.
      - Number of values should be the same as 'layer_sizes'
  
  num_epochs: int, default: 1000
      Maximum number of iterations or the number of epochs.
  
  learning_rate: float, default: 0.001
      The learning rate that determines the step size at each iteration.
  
  batch_size: int, default: 1024
      Mini-batch size used for training.
  
  early_stopping: {min_delta: float, patience: int}, optional, default: None
      If `None`, no early stopping. Meaning of the arguments:
  
      - `min_delta`:  the minimum increase in monitored value on validation
                      set to be considered as improvement,
                      i.e. an increment of less than min_delta will count as
                      no improvement.
  
      - `patience`:   number of epochs with no improvement after which
                      training should be stopped.
  
  lambda_reg: float, default: 1e-4
      Weight decay for the L2 normalization.
  
  trainable: boolean, optional, default: True
      When False, the model is not trained and Cornac assumes that the model
      is already pre-trained.
  
  verbose: boolean, optional, default: False
      When True, some running logs are displayed.
  
  seed: int, optional, default: 2020
      Random seed for parameters initialization.
  
  References
  ----------
  *   Wang, Xiang, et al. "Neural graph collaborative filtering." Proceedings of the 42nd international ACM SIGIR conference on Research and development in Information Retrieval. 2019.
code: def __init__(
      self,
      name="NGCF",
      emb_size=64,
      layer_sizes=[64, 64, 64],
      dropout_rates=[0.1, 0.1, 0.1],
      num_epochs=1000,
      learning_rate=0.001,
      batch_size=1024,
      early_stopping=None,
      lambda_reg=1e-4,
      trainable=True,
      verbose=False,
      seed=2020,
  ):
      super().__init__(name=name, trainable=trainable, verbose=verbose)
      self.emb_size = emb_size
      self.layer_sizes = layer_sizes
      self.dropout_rates = dropout_rates
      self.num_epochs = num_epochs
      self.learning_rate = learning_rate
      self.batch_size = batch_size
      self.early_stopping = early_stopping
      self.lambda_reg = lambda_reg
      self.seed = seed
  
file_path: cornac/cornac/models/ngcf/recom_ngcf.py
imports: from ..recommender import Recommender
  from ..recommender import ANNMixin, MEASURE_DOT
  from ...exception import ScoreException
  from tqdm.auto import tqdm, trange
label_desc: Use image node_id 1 to create a new NGCF object from inherited base classes: Recommender, ANNMixin with example: obj = NGCF(name, emb_size, layer_sizes, dropout_rates, num_epochs, learning_rate, batch_size, early_stopping, lambda_reg, trainable, verbose, seed)