class_docstr: Implementation of Matern32 kernel:
  
      :math:`k(x, z) = \sigma^2\left(1 + \sqrt{3} \times \frac{|x-z|}{l}\right)
      \exp\left(-\sqrt{3} \times \frac{|x-z|}{l}\right).`
code: def forward(self, X, Z=None, diag=False):
      if diag:
          return self._diag(X)
  
      r = self._scaled_dist(X, Z)
      sqrt3_r = 3**0.5 * r
      return self.variance * (1 + sqrt3_r) * torch.exp(-sqrt3_r)
  
imports: import torch
  from torch.distributions import constraints
  from pyro.contrib.gp.kernels.kernel import Kernel
  from pyro.nn.module import PyroParam
label_desc: Use image node_id 2 for calling the Matern32 obj's underlying member method code with example usage: obj.forward(X, Z, diag) and returns: unknown, self