class_docstr: ## Spatial Depth Wise Convolution
  
  This is actually slower
class_docstr_tok: ["#","#","Spatial","Depth","Wise","Convolution","This","is","actually","slower"]
docstr: `x` has shape `[seq_len, batch_size, heads, d_k]`
docstr_tok: ["`","x","`","has","shape","`","[","seq_len",",","batch_size",",","heads",",","d_k","]","`"]
code: def forward(self, x: torch.Tensor):
      """
      `x` has shape `[seq_len, batch_size, heads, d_k]`
      """
  
      res = x * self.kernels[0].view(1, 1, 1, -1)
  
      for i in range(1, len(self.kernels)):
          res[i:] += x[:-i] * self.kernels[i].view(1, 1, 1, -1)
  
      return res
  
file_path: annotated_deep_learning_paper_implementations/labml_nn/transformers/primer_ez/efficient.py
imports: import math
  import torch
  from torch import nn
  from labml_helpers.module import Module
  from labml_nn.transformers import MultiHeadAttention
label_desc: Use image node_id 2 for calling the SpatialDepthWiseConvolution obj's underlying member method code with example usage: obj.forward(x) and returns: res