class_docstr: Squeeze-and-excite layer.
  
  We can't use the op from ``torchvision.ops`` because it's not (yet) properly wrapped,
  and ValueChoice couldn't be processed.
  
  Reference:
  
  - https://github.com/rwightman/pytorch-image-models/blob/b7cb8d03/timm/models/efficientnet_blocks.py#L26
  - https://github.com/d-li14/mobilenetv3.pytorch/blob/3e6938cedcbbc5ee5bc50780ea18e644702d85fc/mobilenetv3.py#L53
class_docstr_tok: ["Squeeze-and-excite","layer",".","We","ca","n't","use","the","op","from","``","torchvision.ops","``","because","it","'s","not","(","yet",")","properly","wrapped",",","and","ValueChoice","could","n't","be","processed",".","Reference",":","-","https",":","\/\/github.com\/rwightman\/pytorch-image-models\/blob\/b7cb8d03\/timm\/models\/efficientnet_blocks.py","#","L26","-","https",":","\/\/github.com\/d-li14\/mobilenetv3.pytorch\/blob\/3e6938cedcbbc5ee5bc50780ea18e644702d85fc\/mobilenetv3.py","#","L53"]
code: def forward(self, x):
      x_se = x.mean((2, 3), keepdim=True)
      x_se = self.conv_reduce(x_se)
      x_se = self.act1(x_se)
      x_se = self.conv_expand(x_se)
      return x * self.gate(x_se)
  
imports: from functools import partial
  from typing import Tuple, Optional, Callable, Union, List, Type, cast
  from typing_extensions import Literal
  import torch
  from torch import nn
  import nni
  from nni.nas.nn.pytorch import ModelSpace, Repeat, LayerChoice, MutableLinear, MutableConv2d
  from .proxylessnas import ConvBNReLU, InvertedResidual, DepthwiseSeparableConv, MaybeIntChoice, make_divisible, reset_parameters
  from .utils.pretrained import load_pretrained_weight
label_desc: Use image node_id 2 for calling the SqueezeExcite obj's underlying member method code with example usage: obj.forward(x) and returns: unknown