code: def forward(
      self,
      net: Tensor,
      s1: Tensor,
      s2: Tensor,
      user_noise: bool = False,
  ) -> Tensor:
      if self.conv_1 is not None:
          net = self.conv_1(net)
          net = self.blur(net)
  
      net = self.noise(net, self.noise_weight_1, user_noise)
      net = net + self.bias_1
      if self.instance_norm_1 is not None:
          net = self.instance_norm_1(net)
      net = self.activation(net)
      net = style_mod(net, self.style_1(s1))
      net = self.conv_2(net)
  
      net = self.noise(net, self.noise_weight_2, user_noise)
      net = net + self.bias_2
      if self.instance_norm_2 is not None:
          net = self.instance_norm_2(net)
      net = self.activation(net)
      net = style_mod(net, self.style_2(s2))
  
      return net
  
imports: import math
  import torch
  from typing import *
  from torch import nn
  from torch import Tensor
  from torch.nn import init
  from cftool.types import tensor_dict_type
  from .schema import Decoder1DMixin
  from ....constants import INPUT_KEY
  from ....constants import LABEL_KEY
  from ....constants import LATENT_KEY
  from ....misc.toolkit import auto_num_layers
  from ....modules.blocks import Conv2d
  from ....modules.blocks import Linear
  from ....modules.blocks import GaussianBlur3
  from ....modules.blocks import Activation
  from ....modules.blocks import NormFactory
  from ....modules.blocks import UpsampleConv2d
label_desc: Use image node_id 3 for calling the DecodeBlock obj's underlying member method code with example usage: obj.forward(net, s1, s2, user_noise) and returns: net