code: def forward(self, y, x):
      mu_qz, logvar_qz = self.encode_qz(y)
      mu_qhx, logvar_qhx = self.encode_qhx(x)
      mu_qhy, logvar_qhy = self.encode_qhy(y)
      mu_ph, logvar_ph = self.encode_phx(x)
  
      z = self.reparameterize(mu_qz, logvar_qz)
      h_q = self.reparameterize(mu_qhx, logvar_qhx)
  
      return (
          self.decode(z, h_q),
          mu_qz,
          logvar_qz,
          mu_qhx,
          logvar_qhx,
          mu_qhy,
          logvar_qhy,
          mu_ph,
          logvar_ph,
      )
  
file_path: cornac/cornac/models/cvaecf/cvaecf.py
imports: import numpy
  import torch
  import torch.nn
  import torch.nn.functional
  from tqdm.auto import trange
  from ...utils import estimate_batches
label_desc: Use image node_id 8 for calling the CVAE obj's underlying member method code with example usage: obj.forward(y, x) and returns: self,  mu_qz,  logvar_qz,  mu_qhx,  logvar_qhx,  mu_qhy,  logvar_qhy,  mu_ph,  logvar_ph