class_docstr: A time series model in which each output dimension is modeled as a linear combination
  of shared univariate Gaussian Processes with Matern kernels.
  
  In more detail, the generative process is:
  
      :math:`y_i(t) = \sum_j A_{ij} f_j(t) + \epsilon_i(t)`
  
  The targets :math:`y_i` are assumed to be evenly spaced in time. Training and inference
  are logarithmic in the length of the time series T.
  
  :param float nu: The order of the Matern kernel; one of 0.5, 1.5 or 2.5.
  :param float dt: The time spacing between neighboring observations of the time series.
  :param int obs_dim: The dimension of the targets at each time step.
  :param int num_gps: The number of independent GPs that are mixed to model the time series.
      Typical values might be :math:`N_{\rm gp} \in [\frac{D_{\rm obs}}{2}, D_{\rm obs}]`
  :param torch.Tensor length_scale_init: optional initial values for the kernel length scale
      given as a ``num_gps``-dimensional tensor
  :param torch.Tensor kernel_scale_init: optional initial values for the kernel scale
      given as a ``num_gps``-dimensional tensor
  :param torch.Tensor obs_noise_scale_init: optional initial values for the observation noise scale
      given as a ``obs_dim``-dimensional tensor
class_docstr_tok: ["A","time","series","model","in","which","each","output","dimension","is","modeled","as","a","linear","combination","of","shared","univariate","Gaussian","Processes","with","Matern","kernels",".","In","more","detail",",","the","generative","process","is",":",":","math",":","`","y_i","(","t",")","=","\\sum_j","A_","{","ij","}","f_j","(","t",")","+","\\epsilon_i","(","t",")","`","The","targets",":","math",":","`","y_i","`","are","assumed","to","be","evenly","spaced","in","time",".","Training","and","inference","are","logarithmic","in","the","length","of","the","time","series","T.",":","param","float","nu",":","The","order","of","the","Matern","kernel",";","one","of","0.5",",","1.5","or","2.5.",":","param","float","dt",":","The","time","spacing","between","neighboring","observations","of","the","time","series",".",":","param","int","obs_dim",":","The","dimension","of","the","targets","at","each","time","step",".",":","param","int","num_gps",":","The","number","of","independent","GPs","that","are","mixed","to","model","the","time","series",".","Typical","values","might","be",":","math",":","`","N_","{","\\rm","gp","}","\\in","[","\\frac","{","D_","{","\\rm","obs","}","}","{","2","}",",","D_","{","\\rm","obs","}","]","`",":","param","torch.Tensor","length_scale_init",":","optional","initial","values","for","the","kernel","length","scale","given","as","a","``","num_gps","``","-dimensional","tensor",":","param","torch.Tensor","kernel_scale_init",":","optional","initial","values","for","the","kernel","scale","given","as","a","``","num_gps","``","-dimensional","tensor",":","param","torch.Tensor","obs_noise_scale_init",":","optional","initial","values","for","the","observation","noise","scale","given","as","a","``","obs_dim","``","-dimensional","tensor"]
code: def _stationary_covariance(self):
      return block_diag_embed(self.kernel.stationary_covariance())
  
imports: import math
  import torch
  import torch.nn
  from torch.distributions import MultivariateNormal, constraints
  import pyro.distributions
  from pyro.contrib.timeseries.base import TimeSeriesModel
  from pyro.nn import PyroParam, pyro_method
  from pyro.ops.ssm_gp import MaternKernel
  from pyro.ops.tensor_utils import block_diag_embed
label_desc: Use image node_id 3 for calling the LinearlyCoupledMaternGP obj's underlying member method code with example usage: obj._stationary_covariance() and returns: block_diag_embed