class_docstr: The upsampling bottlenecks upsample the feature map resolution using max
      pooling indices stored from the corresponding downsampling bottleneck.
  Main branch:
  1. 1x1 convolution with stride 1 that decreases the number of channels by
      ``internal_ratio``, also called a projection;
  2. max unpool layer using the max pool indices from the corresponding
      downsampling max pool layer.
  Extension branch:
  1. 1x1 convolution with stride 1 that decreases the number of channels by
      ``internal_ratio``, also called a projection;
  2. transposed convolution (by default, 3x3);
  3. 1x1 convolution which increases the number of channels to
      ``out_channels``, also called an expansion;
  4. dropout as a regularizer.
  
  Args:
      in_channels (int): the number of input channels.
      out_channels (int): the number of output channels.
      internal_ratio (int, optional): a scale factor applied to ``in_channels``
          used to compute the number of channels after the projection. eg. given
          ``in_channels`` equal to 128 and ``internal_ratio`` equal to 2 the number
          of channels after the projection is 64. Default: 4.
      dropout_prob (float, optional): probability of an element to be zeroed.
          Default: 0 (no dropout).
      bias (bool, optional): Adds a learnable bias to the output if ``True``.
          Default: False.
      relu (bool, optional): When ``True`` ReLU is used as the activation
          function; otherwise, PReLU is used. Default: True.
class_docstr_tok: ["The","upsampling","bottlenecks","upsample","the","feature","map","resolution","using","max","pooling","indices","stored","from","the","corresponding","downsampling","bottleneck",".","Main","branch",":","1",".","1x1","convolution","with","stride","1","that","decreases","the","number","of","channels","by","``","internal_ratio","``",",","also","called","a","projection",";","2.","max","unpool","layer","using","the","max","pool","indices","from","the","corresponding","downsampling","max","pool","layer",".","Extension","branch",":","1",".","1x1","convolution","with","stride","1","that","decreases","the","number","of","channels","by","``","internal_ratio","``",",","also","called","a","projection",";","2.","transposed","convolution","(","by","default",",","3x3",")",";","3",".","1x1","convolution","which","increases","the","number","of","channels","to","``","out_channels","``",",","also","called","an","expansion",";","4.","dropout","as","a","regularizer",".","Args",":","in_channels","(","int",")",":","the","number","of","input","channels",".","out_channels","(","int",")",":","the","number","of","output","channels",".","internal_ratio","(","int",",","optional",")",":","a","scale","factor","applied","to","``","in_channels","``","used","to","compute","the","number","of","channels","after","the","projection",".","eg",".","given","``","in_channels","``","equal","to","128","and","``","internal_ratio","``","equal","to","2","the","number","of","channels","after","the","projection","is","64",".","Default",":","4.","dropout_prob","(","float",",","optional",")",":","probability","of","an","element","to","be","zeroed",".","Default",":","0","(","no","dropout",")",".","bias","(","bool",",","optional",")",":","Adds","a","learnable","bias","to","the","output","if","``","True","``",".","Default",":","False",".","relu","(","bool",",","optional",")",":","When","``","True","``","ReLU","is","used","as","the","activation","function",";","otherwise",",","PReLU","is","used",".","Default",":","True","."]
code: def forward(self, x, max_indices, output_size):
      main = self.main_conv1(x)
      main = F.max_unpool2d(
          main, max_indices, kernel_size=2, output_size=output_size
      )
  
      ext = self.ext_conv1(x)
      ext = self.ext_tconv1(ext, output_size=output_size[2:])
      ext = self.ext_tconv1_bnorm(ext)
      ext = self.ext_tconv1_activation(ext)
      ext = self.ext_conv2(ext)
      ext = self.ext_regul(ext)
  
      out = main + ext
  
      return self.out_activation(out)
  
imports: import paddle
  import paddle.nn
  import paddle.nn.functional
  from paddleseg import utils
  from paddleseg.models import layers
  from paddleseg.cvlibs import manager, param_init
label_desc: Use image node_id 2 for calling the UpsamplingBottleneck obj's underlying member method code with example usage: obj.forward(x, max_indices, output_size) and returns: self