code: def forward(self, x):
      x = self.conv1(x)
      x = self.max_pool(x)
      x = self.blocks(x)
      x = self.conv2(x)
      x = self.avg_pool(x)
      x = self.last_conv(x)
      x = self.hardswish(x)
      x = self.dropout(x)
      x = self.flatten(x)
      x = self.fc(x)
      return x
  
imports: import math
  from typing import Any
  from typing import Callable
  from typing import Dict
  from typing import List
  from typing import Tuple
  from typing import Union
  import paddle
  import paddle.nn
  from paddle import concat
  from paddle import ParamAttr
  from paddle import reshape
  from paddle import split
  from paddle import transpose
  from paddle.nn import AdaptiveAvgPool2D
  from paddle.nn import BatchNorm
  from paddle.nn import Conv2D
  from paddle.nn import Dropout
  from paddle.nn import Linear
  from paddle.nn import MaxPool2D
  from paddle.nn.initializer import KaimingNormal
  from paddle.regularizer import L2Decay
label_desc: Use image node_id 2 for calling the ESNet obj's underlying member method code with example usage: obj.forward(x) and returns: x