class_docstr: StudentTProcessRegressionModel.
  
  This is an analogue of the GaussianProcessRegressionModel, except
  we use a Student-T process here (i.e. this represents the posterior predictive
  of a Student-T process, where we assume that the kernel hyperparameters and
  degrees of freedom are constants, and hence do optimizations in the
  constructor).
  
  Specifically, we assume a Student-T Process prior, `f ~ StP(df, m, k)` along
  with a noise model whose mathematical implementation is similar to a Gaussian
  Process albeit whose interpretation is very different.
  
  In particular, this noise model takes the following form:
  
  ```none
    e ~ MVT(df + n, 0, 1 + v / df * (1 + f^T k(t, t)^-1 f^T))
  ```
  which can be interpreted as Multivariate T noise whose covariance depends on
  the data fit term.
  
  Using the conventions in the `GaussianProcessRegressionModel` class, we have
  the posterior predictive distribution as:
  
  ```none
    (f(t) | t, x, f(x)) ~ MVT(df + n, loc, cov)
  
    where
  
    n is the number of observation points
    b = (y - loc)^T @ inv(k(x, x) + v * I) @ (y - loc)
    v = observation noise variance
    loc = k(t, x) @ inv(k(x, x) + v * I) @ (y - loc)
    cov = (df + b - 2) / (df + n - 2) * (
      k(t, t) - k(t, x) @ inv(k(x, x) + v * I) @ k(x, t))
  ```
  
  Note that the posterior predictive mean is the same as a Gaussian Process,
  but the covariance is multiplied by a term that takes in to account
  observations.
  
  This distribution does precomputaiton in the constructor by assuming
  `observation_index_points`, `observations`, `kernel` and
  `observation_noise_variance` are fixed, and that `mean_fn` is the zero
  function. We do these precomputations in a non-tape safe way.
  
  #### References
  [1]: Amar Shah, Andrew Gordon Wilson, Zoubin Ghahramani.
       Student-t Processes as Alternatives to Gaussian Processes
       https://arxiv.org/abs/1402.4306
  
  [2]: Qingtao Tang, Yisen Wang, Shu-Tao Xia
       Student-T Process Regression with Dependent Student-t Noise
       https://www.ijcai.org/proceedings/2017/393
class_docstr_tok: ["StudentTProcessRegressionModel",".","This","is","an","analogue","of","the","GaussianProcessRegressionModel",",","except","we","use","a","Student-T","process","here","(","i.e",".","this","represents","the","posterior","predictive","of","a","Student-T","process",",","where","we","assume","that","the","kernel","hyperparameters","and","degrees","of","freedom","are","constants",",","and","hence","do","optimizations","in","the","constructor",")",".","Specifically",",","we","assume","a","Student-T","Process","prior",",","`","f","~","StP","(","df",",","m",",","k",")","`","along","with","a","noise","model","whose","mathematical","implementation","is","similar","to","a","Gaussian","Process","albeit","whose","interpretation","is","very","different",".","In","particular",",","this","noise","model","takes","the","following","form",":","``","`","none","e","~","MVT","(","df","+","n",",","0",",","1","+","v","\/","df","*","(","1","+","f^T","k","(","t",",","t",")","^-1","f^T",")",")","``","`","which","can","be","interpreted","as","Multivariate","T","noise","whose","covariance","depends","on","the","data","fit","term",".","Using","the","conventions","in","the","`","GaussianProcessRegressionModel","`","class",",","we","have","the","posterior","predictive","distribution","as",":","``","`","none","(","f","(","t",")","|","t",",","x",",","f","(","x",")",")","~","MVT","(","df","+","n",",","loc",",","cov",")","where","n","is","the","number","of","observation","points","b","=","(","y","-","loc",")","^T","@","inv","(","k","(","x",",","x",")","+","v","*","I",")","@","(","y","-","loc",")","v","=","observation","noise","variance","loc","=","k","(","t",",","x",")","@","inv","(","k","(","x",",","x",")","+","v","*","I",")","@","(","y","-","loc",")","cov","=","(","df","+","b","-","2",")","\/","(","df","+","n","-","2",")","*","(","k","(","t",",","t",")","-","k","(","t",",","x",")","@","inv","(","k","(","x",",","x",")","+","v","*","I",")","@","k","(","x",",","t",")",")","``","`","Note","that","the","posterior","predictive","mean","is","the","same","as","a","Gaussian","Process",",","but","the","covariance","is","multiplied","by","a","term","that","takes","in","to","account","observations",".","This","distribution","does","precomputaiton","in","the","constructor","by","assuming","`","observation_index_points","`",",","`","observations","`",",","`","kernel","`","and","`","observation_noise_variance","`","are","fixed",",","and","that","`","mean_fn","`","is","the","zero","function",".","We","do","these","precomputations","in","a","non-tape","safe","way",".","#","#","#","#","References","[","1","]",":","Amar","Shah",",","Andrew","Gordon","Wilson",",","Zoubin","Ghahramani",".","Student-t","Processes","as","Alternatives","to","Gaussian","Processes","https",":","\/\/arxiv.org\/abs\/1402.4306","[","2","]",":","Qingtao","Tang",",","Yisen","Wang",",","Shu-Tao","Xia","Student-T","Process","Regression","with","Dependent","Student-t","Noise","https",":","\/\/www.ijcai.org\/proceedings\/2017\/393"]
code: def predictive_noise_variance(self):
      return self._predictive_noise_variance
  
imports: import tensorflow.compat.v2
  from tensorflow_probability.python import util
  from tensorflow_probability.python.bijectors import softplus
  from tensorflow_probability.python.distributions import cholesky_util
  from tensorflow_probability.python.distributions import student_t_process
  from tensorflow_probability.python.distributions.internal import stochastic_process_util
  from tensorflow_probability.python.internal import dtype_util
  from tensorflow_probability.python.internal import nest_util
  from tensorflow_probability.python.internal import parameter_properties
  from tensorflow_probability.python.internal import prefer_static
  from tensorflow_probability.python.internal import tensor_util
  from tensorflow_probability.python.math.psd_kernels import positive_semidefinite_kernel
  from tensorflow_probability.python.math.psd_kernels import schur_complement
  from tensorflow.python.util import deprecation
label_desc: Use image node_id 7 for calling the StudentTProcessRegressionModel obj's underlying member method code with example usage: obj.predictive_noise_variance() and returns: self