class_docstr: Pixel CNN model.
  
  Args:
      model_config (PixelCNNConfig): The PixelCNN model configuration setting the main parameters
          of the model.
code: def __init__(self, model_config: PixelCNNConfig):
      BaseNF.__init__(self, model_config=model_config)
  
      self.model_config = model_config
      self.model_name = "PixelCNN"
      self.net = []
  
      pad_shape = model_config.kernel_size // 2
  
      for i in range(model_config.n_layers):
          if i == 0:
              self.net.extend(
                  [
                      nn.Sequential(
                          MaskedConv2d(
                              "A",
                              model_config.input_dim[0],
                              64,
                              model_config.kernel_size,
                              1,
                              pad_shape,
                          ),
                          nn.BatchNorm2d(64),
                          nn.ReLU(),
                      )
                  ]
              )
  
          else:
              self.net.extend(
                  [
                      nn.Sequential(
                          MaskedConv2d(
                              "B",
                              64,
                              64,
                              model_config.kernel_size,
                              1,
                              pad_shape,
                          ),
                          nn.BatchNorm2d(64),
                          nn.ReLU(),
                      )
                  ]
              )
  
      self.net.extend(
          [
              nn.Conv2d(
                  64,
                  model_config.n_embeddings * model_config.input_dim[0],
                  1,
              )
          ]
      )
  
      self.net = nn.Sequential(*self.net)
  
file_path: benchmark_VAE/src/pythae/models/normalizing_flows/pixelcnn/pixelcnn_model.py
imports: import os
  import torch.nn
  import torch.nn.functional
  from ....data.datasets import BaseDataset
  from ...base.base_utils import ModelOutput
  from ..base import BaseNF
  from .pixelcnn_config import PixelCNNConfig
  from .utils import MaskedConv2d
label_desc: Use image node_id 1 to create a new PixelCNN object from inherited base classes: BaseNF with example: obj = PixelCNN(model_config)