class_docstr: DepthwiseSeparable block
  Used for DS convs in MobileNet-V1 and in the place of IR blocks with an expansion
  factor of 1.0. This is an alternative to having a IR with optional first pw conv.
class_docstr_tok: ["DepthwiseSeparable","block","Used","for","DS","convs","in","MobileNet-V1","and","in","the","place","of","IR","blocks","with","an","expansion","factor","of","1.0",".","This","is","an","alternative","to","having","a","IR","with","optional","first","pw","conv","."]
code: def forward(self, x):
      residual = x
  
      x = self.conv_dw(x)
      x = self.bn1(x)
      x = self.act1(x)
  
      x = self.se(x)
  
      x = self.conv_pw(x)
      x = self.bn2(x)
      x = self.act2(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 DepthwiseSeparableConv obj's underlying member method code with example usage: obj.forward(x) and returns: x