class_docstr: Pixel CNN model.
  
  Args:
      model_config (PixelCNNConfig): The PixelCNN model configuration setting the main parameters
          of the model.
docstr: The input data is transformed an output image.
  
  Args:
      inputs (torch.Tensor): An input tensor image. Be carefull it must be in range
          [0-max_channels_values] (i.e. [0-256] for RGB images) and shaped [B x C x H x W].
  
  Returns:
      ModelOutput: An instance of ModelOutput containing all the relevant parameters
code: def forward(self, inputs: BaseDataset, **kwargs) -> ModelOutput:
      """The input data is transformed an output image.
  
      Args:
          inputs (torch.Tensor): An input tensor image. Be carefull it must be in range
              [0-max_channels_values] (i.e. [0-256] for RGB images) and shaped [B x C x H x W].
  
      Returns:
          ModelOutput: An instance of ModelOutput containing all the relevant parameters
      """
  
      x = inputs["data"]
      out = self.net(x).reshape(
          x.shape[0],
          self.model_config.n_embeddings,
          self.model_config.input_dim[0],
          x.shape[2],
          x.shape[3],
      )
  
      loss = F.cross_entropy(out, x.long())
  
      return ModelOutput(out=out, loss=loss)
  
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 2 for calling the PixelCNN obj's underlying member method code with example usage: obj.forward(inputs) and returns: ModelOutput