class_docstr: A quasi-UNet block, using `PixelShuffle_ICNR upsampling`.
class_docstr_tok: ["A","quasi-UNet","block",",","using","`","PixelShuffle_ICNR","upsampling","`","."]
code: def __init__(
      self,
      up_in_c: int,
      x_in_c: int,
      # hook: Hook,
      final_div: bool = True,
      blur: bool = False,
      leaky: float = None,
      self_attention: bool = False,
      nf_factor: float = 1.0,
      **kwargs,
  ):
      super().__init__()
  
      self.shuf = CustomPixelShuffle_ICNR(
          up_in_c, up_in_c // 2, blur=blur, leaky=leaky, **kwargs
      )
      self.bn = nn.BatchNorm(x_in_c)
      ni = up_in_c // 2 + x_in_c
      nf = int((ni if final_div else ni // 2) * nf_factor)
      self.conv1 = custom_conv_layer(ni, nf, leaky=leaky, **kwargs)
      self.conv2 = custom_conv_layer(
          nf, nf, leaky=leaky, self_attention=self_attention, **kwargs
      )
      self.relu = relu(leaky=leaky)
  
imports: import numpy
  import paddle
  import paddle.nn
  import paddle.nn.functional
  from paddle.vision.models import resnet101
  from .None import utils
label_desc: Use image node_id 1 to create a new UnetBlockDeep object from inherited base classes: nn with example: obj = UnetBlockDeep(up_in_c, x_in_c, final_div, blur, leaky, _attention, nf_factor)