class_docstr: MultiVAE is an item-based collaborative filtering model that simultaneously ranks all items for each user.
  
  We implement the MultiVAE model with only user dataloader.
code: def forward(self, rating_matrix):
      h = F.normalize(rating_matrix)
  
      h = F.dropout(h, self.drop_out, training=self.training)
  
      h = self.encoder(h)
  
      mu = h[:, : int(self.lat_dim / 2)]
      logvar = h[:, int(self.lat_dim / 2) :]
  
      z = self.reparameterize(mu, logvar)
      z = self.decoder(z)
      return z, mu, logvar
  
file_path: RecBole/recbole/model/general_recommender/multivae.py
imports: import torch
  import torch.nn
  import torch.nn.functional
  from recbole.model.abstract_recommender import AutoEncoderMixin, GeneralRecommender
  from recbole.model.init import xavier_normal_initialization
  from recbole.utils import InputType
label_desc: Use image node_id 4 for calling the MultiVAE obj's underlying member method code with example usage: obj.forward(rating_matrix) and returns: z,  mu,  logvar