class_docstr: EdgeTPU Residual block with expansion convolution followed by pointwise-linear w/ stride
class_docstr_tok: ["EdgeTPU","Residual","block","with","expansion","convolution","followed","by","pointwise-linear","w\/","stride"]
code: def forward(self, x):
      residual = x
  
      # Expansion convolution
      x = self.conv_exp(x)
      x = self.bn1(x)
      x = self.act1(x)
  
      # Squeeze-and-excitation
      x = self.se(x)
  
      # Point-wise linear projection
      x = self.conv_pwl(x)
      x = self.bn2(x)
  
      if self.has_residual:
          if self.drop_connect_rate > 0.0:
              x = drop_connect(x, self.training, self.drop_connect_rate)
          x += residual
  
      return x
  
imports: import re
  from copy import deepcopy
  from .conv2d_layers import *
  from geffnet.activations import *
label_desc: Use image node_id 2 for calling the EdgeResidual obj's underlying member method code with example usage: obj.forward(x) and returns: x