code: def forward(self, x, y):
      means = torch.mean(x, dim=(2, 3))
      m = torch.mean(means, dim=-1, keepdim=True)
      v = torch.var(means, dim=-1, keepdim=True)
      means = (means - m) / (torch.sqrt(v + 1e-5))
      h = self.instance_norm(x)
  
      if self.bias:
          gamma, alpha, beta = self.embed(y).chunk(3, dim=-1)
          h = h + means[..., None, None] * alpha[..., None, None]
          out = gamma.view(-1, self.num_features, 1, 1) * h + beta.view(
              -1, self.num_features, 1, 1
          )
      else:
          gamma, alpha = self.embed(y).chunk(2, dim=-1)
          h = h + means[..., None, None] * alpha[..., None, None]
          out = gamma.view(-1, self.num_features, 1, 1) * h
      return out
  
imports: import functools
  import torch
  import torch.nn
label_desc: Use image node_id 2 for calling the ConditionalInstanceNorm2dPlus obj's underlying member method code with example usage: obj.forward(x, y) and returns: out