class_docstr: Provides the building blocks for representing univariate Gaussian Processes (GPs)
  with Matern kernels as state space models.
  
  :param float nu: The order of the Matern kernel (one of 0.5, 1.5 or 2.5)
  :param int num_gps: the number of GPs
  :param torch.Tensor length_scale_init: optional `num_gps`-dimensional vector of initializers
      for the length scale
  :param torch.Tensor kernel_scale_init: optional `num_gps`-dimensional vector of initializers
      for the kernel scale
  
  **References**
  
  [1] `Kalman Filtering and Smoothing Solutions to Temporal Gaussian Process Regression Models`,
      Jouni Hartikainen and Simo Sarkka.
  [2] `Stochastic Differential Equation Methods for Spatio-Temporal Gaussian Process Regression`,
      Arno Solin.
class_docstr_tok: ["Provides","the","building","blocks","for","representing","univariate","Gaussian","Processes","(","GPs",")","with","Matern","kernels","as","state","space","models",".",":","param","float","nu",":","The","order","of","the","Matern","kernel","(","one","of","0.5",",","1.5","or","2.5",")",":","param","int","num_gps",":","the","number","of","GPs",":","param","torch.Tensor","length_scale_init",":","optional","`","num_gps","`","-dimensional","vector","of","initializers","for","the","length","scale",":","param","torch.Tensor","kernel_scale_init",":","optional","`","num_gps","`","-dimensional","vector","of","initializers","for","the","kernel","scale","*","*","References","*","*","[","1","]","`","Kalman","Filtering","and","Smoothing","Solutions","to","Temporal","Gaussian","Process","Regression","Models","`",",","Jouni","Hartikainen","and","Simo","Sarkka",".","[","2","]","`","Stochastic","Differential","Equation","Methods","for","Spatio-Temporal","Gaussian","Process","Regression","`",",","Arno","Solin","."]
docstr: Given a transition matrix `A` computed with `transition_matrix` compute the
  the process covariance as described in Eqn. 3.11 in reference [2].
  
  :returns torch.Tensor: a batched covariance matrix of shape (num_gps, state_dim, state_dim)
docstr_tok: ["Given","a","transition","matrix","`","A","`","computed","with","`","transition_matrix","`","compute","the","the","process","covariance","as","described","in","Eqn",".","3.11","in","reference","[","2","]",".",":","returns","torch.Tensor",":","a","batched","covariance","matrix","of","shape","(","num_gps",",","state_dim",",","state_dim",")"]
code: def process_covariance(self, A):
      """
      Given a transition matrix `A` computed with `transition_matrix` compute the
      the process covariance as described in Eqn. 3.11 in reference [2].
  
      :returns torch.Tensor: a batched covariance matrix of shape (num_gps, state_dim, state_dim)
      """
      assert A.shape[-2:] == (self.state_dim, self.state_dim)
      p = self.stationary_covariance()
      q = p - torch.matmul(A.transpose(-1, -2), torch.matmul(p, A))
      return q
  
file_path: pyro/pyro/ops/ssm_gp.py
imports: import math
  import torch
  from torch.distributions import constraints
  from pyro.nn import PyroModule, PyroParam, pyro_method
label_desc: Use image node_id 4 for calling the MaternKernel obj's underlying member method code with example usage: obj.process_covariance(A) and returns: q