class_docstr: Bottleneck transformation: 1x1, 3x3 [+SE], 1x1.
class_docstr_tok: ["Bottleneck","transformation",":","1x1",",","3x3","[","+SE","]",",","1x1","."]
code: def complexity(cx, w_in, w_out, stride, params):
      w_b = int(round(w_out * params["bot_mul"]))
      w_se = int(round(w_in * params["se_r"]))
      groups = w_b // params["group_w"]
      cx = conv2d_cx(cx, w_in, w_b, 1)
      cx = norm2d_cx(cx, w_b)
      cx = conv2d_cx(cx, w_b, w_b, 3, stride=stride, groups=groups)
      cx = norm2d_cx(cx, w_b)
      cx = SE.complexity(cx, w_b, w_se) if w_se else cx
      cx = conv2d_cx(cx, w_b, w_out, 1)
      cx = norm2d_cx(cx, w_out)
      return cx
  
imports: from pycls.core.config import cfg
  from pycls.models.blocks import activation, conv2d, conv2d_cx, gap2d, gap2d_cx, init_weights, linear, linear_cx, norm2d, norm2d_cx, pool2d, pool2d_cx, SE
  from torch.nn import Module
label_desc: Use image node_id 3 for calling the BottleneckTransform obj's underlying member method code with example usage: obj.complexity(cx, w_in, w_out, stride, params) and returns: cx