code: def _apply_conv(self, inputs, w):
      
      w_dw, w_pw = w
      outputs = tf.nn.separable_conv2d(inputs,
                                       w_dw,
                                       w_pw,
                                       rate=self._rate,
                                       strides=self.stride,
                                       padding=self._conv_op_padding,
                                       data_format=self._data_format)
      return outputs
docs: Apply a `separable_conv2d` operation on `inputs` using `w`.
  
      Args:
        inputs: A Tensor of shape `data_format` and of type `tf.float16`,
            `tf.bfloat16` or `tf.float32`.
        w: A tuple of weight matrices of the same type as `inputs`, the first
          being the depthwise weight matrix, and the second being the pointwise
          weight matrix.
  
      Returns:
        outputs: The result of the convolution operation on `inputs`.