class_docstr: A causal depthwise convolution layer.
docstr: Executes this layer as part of a forward pass through the model.
  
  Args:
    x: Tensor of same shape and dtype as the input signature used to
        initialize this layer.
  
  Returns:
    Tensor of same shape and dtype as the input.
docstr_tok: ["Executes","this","layer","as","part","of","a","forward","pass","through","the","model",".","Args",":","x",":","Tensor","of","same","shape","and","dtype","as","the","input","signature","used","to","initialize","this","layer",".","Returns",":","Tensor","of","same","shape","and","dtype","as","the","input","."]
code: def forward(self, x):
      """Executes this layer as part of a forward pass through the model.
  
      Args:
        x: Tensor of same shape and dtype as the input signature used to
            initialize this layer.
  
      Returns:
        Tensor of same shape and dtype as the input.
      """
      w = self.weights
      res = x * w[0, :][None, None, :]
      for i in range(1, self._kernel_size):
          x = _zero_pad(x, (1, 0), 1)
          x = x[:, :-1, :]
          res += x * w[i, :][None, None, :]
      return res
  
imports: import functools
  import itertools
  import operator
  from trax import fastmath
  from trax.fastmath import numpy
  from trax.layers import base
  from trax.layers import initializers
label_desc: Use image node_id 2 for calling the CausalDepthwiseConv obj's underlying member method code with example usage: obj.forward(x) and returns: res