<s> """<STR_LIT>""" <EOL> import numpy as np <EOL> from . . gaussian_markov_chain import GaussianMarkovChain <EOL> from . . gaussian_markov_chain import VaryingGaussianMarkovChain <EOL> from . . gaussian import Gaussian , GaussianMoments <EOL> from . . gaussian import GaussianARD <EOL> from . . wishart import Wishart , WishartMoments <EOL> from . . gamma import Gamma , GammaMoments <EOL> from bayespy . utils import random <EOL> from bayespy . utils import linalg <EOL> from bayespy . utils import misc <EOL> from bayespy . utils . misc import TestCase <EOL> def kalman_filter ( y , U , A , V , mu0 , Cov0 , out = None ) : <EOL> """<STR_LIT>""" <EOL> mu = mu0 <EOL> Cov = Cov0 <EOL> ( N , D ) = np . shape ( y ) <EOL> X = np . empty ( ( N , D ) ) <EOL> CovX = np . empty ( ( N , D , D ) ) <EOL> M = np . dot ( np . dot ( Cov , U [ <NUM_LIT:0> ] ) , Cov ) + Cov <EOL> L = linalg . chol ( M ) <EOL> mu = np . dot ( Cov , linalg . chol_solve ( L , np . dot ( Cov , y [ <NUM_LIT:0> ] ) + mu ) ) <EOL> Cov = np . dot ( Cov , linalg . chol_solve ( L , Cov ) ) <EOL> X [ <NUM_LIT:0> , : ] = mu <EOL> CovX [ <NUM_LIT:0> , : , : ] = Cov <EOL> for n in range ( len ( y ) - <NUM_LIT:1> ) : <EOL> mu = np . dot ( A [ n ] , mu ) <EOL> Cov = np . dot ( np . dot ( A [ n ] , Cov ) , A [ n ] . T ) + V [ n ] <EOL> M = np . dot ( np . dot ( Cov , U [ n + <NUM_LIT:1> ] ) , Cov ) + Cov <EOL> L = linalg . chol ( M ) <EOL> mu = np . dot ( Cov , linalg . chol_solve ( L , np . dot ( Cov , y [ n + <NUM_LIT:1> ] ) + mu ) ) <EOL> Cov = np . dot ( Cov , linalg . chol_solve ( L , Cov ) ) <EOL> Cov = <NUM_LIT:0.5> * Cov + <NUM_LIT:0.5> * Cov . T <EOL> X [ n + <NUM_LIT:1> , : ] = mu <EOL> CovX [ n + <NUM_LIT:1> , : , : ] = Cov <EOL> return ( X , CovX ) <EOL> def rts_smoother ( mu , Cov , A , V , removethis = None ) : <EOL> """<STR_LIT>""" <EOL> N = len ( mu ) <EOL> x = mu [ - <NUM_LIT:1> , : ] <EOL> Covx = Cov [ - <NUM_LIT:1> , : , : ] <EOL> for n in reversed ( range ( N - <NUM_LIT:1> ) ) : <EOL> x_p = np . dot ( A [ n ] , mu [ n , : ] ) <EOL> Cov_p = np . dot ( np . dot ( A [ n ] , Cov [ n , : , : ] ) , A [ n ] . T ) + V [ n ] <EOL> S = np . linalg . solve ( Cov_p , np . dot ( A [ n ] , Cov [ n , : , : ] ) ) <EOL> x = mu [ n , : ] + np . dot ( S . T , x - x_p ) <EOL> Covx = Cov [ n , : , : ] + np . dot ( np . dot ( S . T , Covx - Cov_p ) , S ) <EOL> Covx = <NUM_LIT:0.5> * Covx + <NUM_LIT:0.5> * Covx . T <EOL> mu [ n , : ] = x <EOL> Cov [ n , : ] = Covx <EOL> return ( mu , Cov ) <EOL> class TestGaussianMarkovChain ( TestCase ) : <EOL> def create_model ( self , N , D ) : <EOL> Mu = Gaussian ( np . random . randn ( D ) , <EOL> np . identity ( D ) ) <EOL> Lambda = Wishart ( D , <EOL> random . covariance ( D ) ) <EOL> A = Gaussian ( np . random . randn ( D , D ) , <EOL> np . identity ( D ) ) <EOL> V = Gamma ( D , <EOL> np . random . rand ( D ) ) <EOL> X = GaussianMarkovChain ( Mu , Lambda , A , V , n = N ) <EOL> Y = Gaussian ( X , np . identity ( D ) ) <EOL> return ( Y , X , Mu , Lambda , A , V ) <EOL> def test_plates ( self ) : <EOL> """<STR_LIT>""" <EOL> def test_message_to_mu0 ( self ) : <EOL> pass <EOL> def test_message_to_Lambda0 ( self ) : <EOL> pass <EOL> def test_message_to_A ( self ) : <EOL> pass <EOL> def test_message_to_v ( self ) : <EOL> pass <EOL> def test_message_to_child ( self ) : <EOL> """<STR_LIT>""" <EOL> D = <NUM_LIT:3> <EOL> N = <NUM_LIT:5> <EOL> ( Y , X , Mu , Lambda , A , V ) = self . create_model ( N , D ) <EOL> y = np . random . randn ( N , D ) <EOL> Y . observe ( y ) <EOL> X . update ( ) <EOL> ( x_vb , xnxn_vb , xpxn_vb ) = X . get_moments ( ) <EOL> ( mu0 , mumu0 ) = Mu . get_moments ( ) <EOL> ( icov0 , logdet0 ) = Lambda . get_moments ( ) <EOL> ( a , aa ) = A . get_moments ( ) <EOL> ( icov_x , logdetx ) = V . get_moments ( ) <EOL> icov_x = np . diag ( icov_x ) <EOL> Z = np . einsum ( '<STR_LIT>' , aa , icov_x ) <EOL> U_diag = [ icov0 + Z ] + ( N - <NUM_LIT:2> ) * [ icov_x + Z ] + [ icov_x ] <EOL> U_super = ( N - <NUM_LIT:1> ) * [ - np . dot ( a . T , icov_x ) ] <EOL> U = misc . block_banded ( U_diag , U_super ) <EOL> mu_prior = np . zeros ( D * N ) <EOL> mu_prior [ : D ] = np . dot ( icov0 , mu0 ) <EOL> Cov = np . linalg . inv ( U + np . identity ( D * N ) ) <EOL> mu = np . dot ( Cov , mu_prior + y . flatten ( ) ) <EOL> xx = mu [ : , np . newaxis ] * mu [ np . newaxis , : ] + Cov <EOL> mu = np . reshape ( mu , ( N , D ) ) <EOL> xx = np . reshape ( xx , ( N , D , N , D ) ) <EOL> self . assertAllClose ( x_vb , mu , <EOL> msg = "<STR_LIT>" ) <EOL> for n in range ( N ) : <EOL> self . assertAllClose ( xnxn_vb [ n , : , : ] , xx [ n , : , n , : ] , <EOL> msg = "<STR_LIT>" ) <EOL> for n in range ( N - <NUM_LIT:1> ) : <EOL> self . assertAllClose ( xpxn_vb [ n , : , : ] , xx [ n , : , n + <NUM_LIT:1> , : ] , <EOL> msg = "<STR_LIT>" ) <EOL> ldet = linalg . logdet_cov ( Cov ) <EOL> H = random . gaussian_entropy ( - ldet , N * D ) <EOL> xx = np . reshape ( xx , ( N * D , N * D ) ) <EOL> mu = np . reshape ( mu , ( N * D , ) ) <EOL> ldet = - logdet0 - np . sum ( np . ones ( ( N - <NUM_LIT:1> , D ) ) * logdetx ) <EOL> P = random . gaussian_logpdf ( np . einsum ( '<STR_LIT>' , <EOL> xx , <EOL> U ) , <EOL> np . einsum ( '<STR_LIT>' , <EOL> mu , <EOL> mu_prior ) , <EOL> np . einsum ( '<STR_LIT>' , <EOL> mumu0 , <EOL> icov0 ) , <EOL> - ldet , <EOL> N * D ) <EOL> l = X . lower_bound_contribution ( ) <EOL> self . assertAllClose ( l , H + P ) <EOL> def check ( N , D , plates = None , mu = None , Lambda = None , A = None , V = None ) : <EOL> if mu is None : <EOL> mu = np . random . randn ( D ) <EOL> if Lambda is None : <EOL> Lambda = random . covariance ( D ) <EOL> if A is None : <EOL> A = np . random . randn ( D , D ) <EOL> if V is None : <EOL> V = np . random . rand ( D ) <EOL> X = GaussianMarkovChain ( mu , <EOL> Lambda , <EOL> A , <EOL> V , <EOL> plates = plates , <EOL> n = N ) <EOL> ( u0 , u1 , u2 ) = X . _message_to_child ( ) <EOL> ( mu , mumu ) = Gaussian . _ensure_moments ( mu , GaussianMoments , ndim = <NUM_LIT:1> ) . get_moments ( ) <EOL> ( Lambda , _ ) = Wishart . _ensure_moments ( Lambda , WishartMoments , ndim = <NUM_LIT:1> ) . get_moments ( ) <EOL> ( a , aa ) = Gaussian . _ensure_moments ( A , GaussianMoments , ndim = <NUM_LIT:1> ) . get_moments ( ) <EOL> a = a * np . ones ( ( N - <NUM_LIT:1> , D , D ) ) <EOL> aa = aa * np . ones ( ( N - <NUM_LIT:1> , D , D , D ) ) <EOL> ( v , _ ) = Gamma . _ensure_moments ( V , GammaMoments ) . get_moments ( ) <EOL> v = v * np . ones ( ( N - <NUM_LIT:1> , D ) ) <EOL> plates_C = X . plates <EOL> plates_mu = X . plates <EOL> C = np . zeros ( plates_C + ( N , D , N , D ) ) <EOL> plates_mu = np . shape ( mu ) [ : - <NUM_LIT:1> ] <EOL> m = np . zeros ( plates_mu + ( N , D ) ) <EOL> m [ ... , <NUM_LIT:0> , : ] = np . einsum ( '<STR_LIT>' , Lambda , mu ) <EOL> C [ ... , <NUM_LIT:0> , : , <NUM_LIT:0> , : ] = Lambda + np . einsum ( '<STR_LIT>' , <EOL> aa [ ... , <NUM_LIT:0> , : , : , : ] , <EOL> v [ ... , <NUM_LIT:0> , : ] ) <EOL> for n in range ( <NUM_LIT:1> , N - <NUM_LIT:1> ) : <EOL> C [ ... , n , : , n , : ] = ( np . einsum ( '<STR_LIT>' , <EOL> aa [ ... , n , : , : , : ] , <EOL> v [ ... , n , : ] ) <EOL> + v [ ... , n , : , None ] * np . identity ( D ) ) <EOL> for n in range ( N - <NUM_LIT:1> ) : <EOL> C [ ... , n , : , n + <NUM_LIT:1> , : ] = - np . einsum ( '<STR_LIT>' , <EOL> a [ ... , n , : , : ] , <EOL> v [ ... , n , : ] ) <EOL> C [ ... , n + <NUM_LIT:1> , : , n , : ] = - np . einsum ( '<STR_LIT>' , <EOL> a [ ... , n , : , : ] , <EOL> v [ ... , n , : ] ) <EOL> C [ ... , - <NUM_LIT:1> , : , - <NUM_LIT:1> , : ] = v [ ... , - <NUM_LIT:1> , : , None ] * np . identity ( D ) <EOL> C = np . reshape ( C , plates_C + ( N * D , N * D ) ) <EOL> Cov = np . linalg . inv ( C ) <EOL> Cov = np . reshape ( Cov , plates_C + ( N , D , N , D ) ) <EOL> m0 = np . einsum ( '<STR_LIT>' , Cov , m ) <EOL> m1 = np . zeros ( plates_C + ( N , D , D ) ) <EOL> m2 = np . zeros ( plates_C + ( N - <NUM_LIT:1> , D , D ) ) <EOL> for n in range ( N ) : <EOL> m1 [ ... , n , : , : ] = Cov [ ... , n , : , n , : ] + np . einsum ( '<STR_LIT>' , <EOL> m0 [ ... , n , : ] , <EOL> m0 [ ... , n , : ] ) <EOL> for n in range ( N - <NUM_LIT:1> ) : <EOL> m2 [ ... , n , : , : ] = Cov [ ... , n , : , n + <NUM_LIT:1> , : ] + np . einsum ( '<STR_LIT>' , <EOL> m0 [ ... , n , : ] , <EOL> m0 [ ... , n + <NUM_LIT:1> , : ] ) <EOL> self . assertAllClose ( m0 , u0 * np . ones ( np . shape ( m0 ) ) ) <EOL> self . assertAllClose ( m1 , u1 * np . ones ( np . shape ( m1 ) ) ) <EOL> self . assertAllClose ( m2 , u2 * np . ones ( np . shape ( m2 ) ) ) <EOL> pass <EOL> check ( <NUM_LIT:4> , <NUM_LIT:1> ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <EOL> mu = Gaussian ( np . random . randn ( <NUM_LIT:3> ) , <EOL> random . covariance ( <NUM_LIT:3> ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <EOL> mu = Gaussian ( np . random . randn ( <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT:3> ) , <EOL> random . covariance ( <NUM_LIT:3> ) , <EOL> plates = ( <NUM_LIT:5> , <NUM_LIT:6> ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <EOL> mu = Gaussian ( np . random . randn ( <NUM_LIT:3> ) , <EOL> random . covariance ( <NUM_LIT:3> ) , <EOL> plates = ( <NUM_LIT:5> , ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <EOL> mu = Gaussian ( np . random . randn ( <NUM_LIT:1> , <NUM_LIT:3> ) , <EOL> random . covariance ( <NUM_LIT:3> ) , <EOL> plates = ( <NUM_LIT:5> , ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <EOL> plates = ( <NUM_LIT:5> , ) , <EOL> mu = Gaussian ( np . random . randn ( <NUM_LIT:3> ) , <EOL> random . covariance ( <NUM_LIT:3> ) , <EOL> plates = ( ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <EOL> plates = ( <NUM_LIT:5> , ) , <EOL> mu = Gaussian ( np . random . randn ( <NUM_LIT:1> , <NUM_LIT:3> ) , <EOL> random . covariance ( <NUM_LIT:3> ) , <EOL> plates = ( <NUM_LIT:1> , ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <EOL> Lambda = Wishart ( <NUM_LIT:10> + np . random . rand ( ) , <EOL> random . covariance ( <NUM_LIT:3> ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <EOL> Lambda = Wishart ( <NUM_LIT:10> + np . random . rand ( ) , <EOL> random . covariance ( <NUM_LIT:3> ) , <EOL> plates = ( <NUM_LIT:5> , <NUM_LIT:6> ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <EOL> Lambda = Wishart ( <NUM_LIT:10> + np . random . rand ( ) , <EOL> random . covariance ( <NUM_LIT:3> ) , <EOL> plates = ( <NUM_LIT:5> , ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <EOL> Lambda = Wishart ( <NUM_LIT:10> + np . random . rand ( <NUM_LIT:1> ) , <EOL> random . covariance ( <NUM_LIT:3> ) , <EOL> plates = ( <NUM_LIT:5> , ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <EOL> plates = ( <NUM_LIT:5> , ) , <EOL> Lambda = Wishart ( <NUM_LIT:10> + np . random . rand ( ) , <EOL> random . covariance ( <NUM_LIT:3> ) , <EOL> plates = ( ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <EOL> plates = ( <NUM_LIT:5> , ) , <EOL> Lambda = Wishart ( <NUM_LIT:10> + np . random . rand ( ) , <EOL> random . covariance ( <NUM_LIT:3> ) , <EOL> plates = ( <NUM_LIT:1> , ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <EOL> A = GaussianARD ( np . random . randn ( <NUM_LIT:3> , <NUM_LIT:3> ) , <EOL> np . random . rand ( <NUM_LIT:3> , <NUM_LIT:3> ) , <EOL> shape = ( <NUM_LIT:3> , ) , <EOL> plates = ( <NUM_LIT:3> , ) ) ) <EOL> check ( <NUM_LIT:5> , <NUM_LIT:3> , <EOL> A = GaussianARD ( np . random . randn ( <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:3> ) , <EOL> np . random . rand ( <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:3> ) , <EOL> shape = ( <NUM_LIT:3> , ) , <EOL> plates = ( <NUM_LIT:4> , <NUM_LIT:3> ) ) ) <EOL> check ( <NUM_LIT:5> , <NUM_LIT:3> , <EOL> A = GaussianARD ( np . random . randn ( <NUM_LIT:1> , <NUM_LIT:3> , <NUM_LIT:3> ) , <EOL> np . random . rand ( <NUM_LIT:1> , <NUM_LIT:3> , <NUM_LIT:3> ) , <EOL> shape = ( <NUM_LIT:3> , ) , <EOL> plates = ( <NUM_LIT:4> , <NUM_LIT:3> ) ) ) <EOL> check ( <NUM_LIT:5> , <NUM_LIT:3> , <EOL> A = GaussianARD ( np . random . randn ( <NUM_LIT:3> , <NUM_LIT:3> ) , <EOL> np . random . rand ( <NUM_LIT:3> , <NUM_LIT:3> ) , <EOL> shape = ( <NUM_LIT:3> , ) , <EOL> plates = ( <NUM_LIT:4> , <NUM_LIT:3> ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <EOL> A = GaussianARD ( np . random . randn ( <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT:1> , <NUM_LIT:3> , <NUM_LIT:3> ) , <EOL> np . random . rand ( <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT:1> , <NUM_LIT:3> , <NUM_LIT:3> ) , <EOL> shape = ( <NUM_LIT:3> , ) , <EOL> plates = ( <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT:1> , <NUM_LIT:3> ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <EOL> A = GaussianARD ( np . random . randn ( <NUM_LIT:3> , <NUM_LIT:3> ) , <EOL> np . random . rand ( <NUM_LIT:3> , <NUM_LIT:3> ) , <EOL> shape = ( <NUM_LIT:3> , ) , <EOL> plates = ( <NUM_LIT:5> , <NUM_LIT:1> , <NUM_LIT:3> ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <EOL> A = GaussianARD ( np . random . randn ( <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:3> , <NUM_LIT:3> ) , <EOL> np . random . rand ( <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:3> , <NUM_LIT:3> ) , <EOL> shape = ( <NUM_LIT:3> , ) , <EOL> plates = ( <NUM_LIT:5> , <NUM_LIT:1> , <NUM_LIT:3> ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <EOL> plates = ( <NUM_LIT:5> , ) , <EOL> A = GaussianARD ( np . random . randn ( <NUM_LIT:3> , <NUM_LIT:3> ) , <EOL> np . random . rand ( <NUM_LIT:3> , <NUM_LIT:3> ) , <EOL> shape = ( <NUM_LIT:3> , ) , <EOL> plates = ( <NUM_LIT:3> , ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <EOL> plates = ( <NUM_LIT:5> , ) , <EOL> A = GaussianARD ( np . random . randn ( <NUM_LIT:3> , <NUM_LIT:3> ) , <EOL> np . random . rand ( <NUM_LIT:3> , <NUM_LIT:3> ) , <EOL> shape = ( <NUM_LIT:3> , ) , <EOL> plates = ( <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:3> ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <EOL> V = Gamma ( np . random . rand ( <NUM_LIT:1> , <NUM_LIT:3> ) , <EOL> np . random . rand ( <NUM_LIT:1> , <NUM_LIT:3> ) , <EOL> plates = ( <NUM_LIT:1> , <NUM_LIT:3> ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <EOL> V = Gamma ( np . random . rand ( <NUM_LIT:3> ) , <EOL> np . random . rand ( <NUM_LIT:3> ) , <EOL> plates = ( <NUM_LIT:3> , ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <EOL> V = Gamma ( np . random . rand ( <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT:1> , <NUM_LIT:3> ) , <EOL> np . random . rand ( <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT:1> , <NUM_LIT:3> ) , <EOL> plates = ( <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT:1> , <NUM_LIT:3> ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <EOL> V = Gamma ( np . random . rand ( <NUM_LIT:1> , <NUM_LIT:3> ) , <EOL> np . random . rand ( <NUM_LIT:1> , <NUM_LIT:3> ) , <EOL> plates = ( <NUM_LIT:5> , <NUM_LIT:1> , <NUM_LIT:3> ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <EOL> V = Gamma ( np . random . rand ( <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:3> ) , <EOL> np . random . rand ( <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:3> ) , <EOL> plates = ( <NUM_LIT:5> , <NUM_LIT:1> , <NUM_LIT:3> ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <EOL> plates = ( <NUM_LIT:5> , ) , <EOL> V = Gamma ( np . random . rand ( <NUM_LIT:1> , <NUM_LIT:3> ) , <EOL> np . random . rand ( <NUM_LIT:1> , <NUM_LIT:3> ) , <EOL> plates = ( <NUM_LIT:1> , <NUM_LIT:3> ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <EOL> plates = ( <NUM_LIT:5> , ) , <EOL> V = Gamma ( np . random . rand ( <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:3> ) , <EOL> np . random . rand ( <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:3> ) , <EOL> plates = ( <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:3> ) ) ) <EOL> mu = <NUM_LIT:2> <EOL> Lambda = <NUM_LIT:3> <EOL> A = <NUM_LIT:4> <EOL> B = <NUM_LIT:5> <EOL> v = <NUM_LIT:6> <EOL> inputs = [ [ - <NUM_LIT:2> ] , [ <NUM_LIT:3> ] ] <EOL> X = GaussianMarkovChain ( [ mu ] , [ [ Lambda ] ] , [ [ A , B ] ] , [ v ] , inputs = inputs ) <EOL> V = ( np . array ( [ [ v * A ** <NUM_LIT:2> , - v * A , <NUM_LIT:0> ] , <EOL> [ - v * A , v * A ** <NUM_LIT:2> , - v * A ] , <EOL> [ <NUM_LIT:0> , - v * A , <NUM_LIT:0> ] ] ) + <EOL> np . array ( [ [ Lambda , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:0> , v , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:0> , <NUM_LIT:0> , v ] ] ) ) <EOL> m = ( np . array ( [ Lambda * mu , <NUM_LIT:0> , <NUM_LIT:0> ] ) + <EOL> np . array ( [ <NUM_LIT:0> , v * B * inputs [ <NUM_LIT:0> ] [ <NUM_LIT:0> ] , v * B * inputs [ <NUM_LIT:1> ] [ <NUM_LIT:0> ] ] ) - <EOL> np . array ( [ v * A * B * inputs [ <NUM_LIT:0> ] [ <NUM_LIT:0> ] , v * A * B * inputs [ <NUM_LIT:1> ] [ <NUM_LIT:0> ] , <NUM_LIT:0> ] ) ) <EOL> Cov = np . linalg . inv ( V ) <EOL> mean = np . dot ( Cov , m ) <EOL> X . update ( ) <EOL> u = X . get_moments ( ) <EOL> self . assertAllClose ( u [ <NUM_LIT:0> ] , mean [ : , None ] ) <EOL> self . assertAllClose ( u [ <NUM_LIT:1> ] - u [ <NUM_LIT:0> ] [ ... , None , : ] * u [ <NUM_LIT:0> ] [ ... , : , None ] , <EOL> Cov [ ( <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:2> ) , ( <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:2> ) , None , None ] ) <EOL> self . assertAllClose ( u [ <NUM_LIT:2> ] - u [ <NUM_LIT:0> ] [ ... , : - <NUM_LIT:1> , : , None ] * u [ <NUM_LIT:0> ] [ ... , <NUM_LIT:1> : , None , : ] , <EOL> Cov [ ( <NUM_LIT:0> , <NUM_LIT:1> ) , ( <NUM_LIT:1> , <NUM_LIT:2> ) , None , None ] ) <EOL> pass <EOL> def test_smoothing ( self ) : <EOL> """<STR_LIT>""" <EOL> N = <NUM_LIT> <EOL> D = <NUM_LIT:2> <EOL> A0 = np . array ( [ [ <NUM_LIT> , - <NUM_LIT> ] , [ <NUM_LIT> , <NUM_LIT> ] ] ) <EOL> A1 = np . array ( [ [ <NUM_LIT> , - <NUM_LIT> ] , [ <NUM_LIT> , <NUM_LIT> ] ] ) <EOL> l = np . linspace ( <NUM_LIT:0> , <NUM_LIT:1> , N - <NUM_LIT:1> ) . reshape ( ( - <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:1> ) ) <EOL> A = ( <NUM_LIT:1> - l ) * A0 + l * A1 <EOL> v = np . random . rand ( D ) <EOL> V = np . diag ( v ) <EOL> C = np . identity ( D ) <EOL> X = np . empty ( ( N , D ) ) <EOL> Y = np . empty ( ( N , D ) ) <EOL> x = np . array ( [ <NUM_LIT:0.5> , - <NUM_LIT:0.5> ] ) <EOL> X [ <NUM_LIT:0> , : ] = x <EOL> Y [ <NUM_LIT:0> , : ] = x + np . random . multivariate_normal ( np . zeros ( D ) , C ) <EOL> for n in range ( N - <NUM_LIT:1> ) : <EOL> x = np . dot ( A [ n , : , : ] , x ) + np . random . multivariate_normal ( np . zeros ( D ) , V ) <EOL> X [ n + <NUM_LIT:1> , : ] = x <EOL> Y [ n + <NUM_LIT:1> , : ] = x + np . random . multivariate_normal ( np . zeros ( D ) , C ) <EOL> Xh = GaussianMarkovChain ( np . zeros ( D ) , np . identity ( D ) , A , <NUM_LIT:1> / v , n = N ) <EOL> Yh = Gaussian ( Xh , np . identity ( D ) , plates = ( N , ) ) <EOL> Yh . observe ( Y ) <EOL> Xh . update ( ) <EOL> Xh_vb = Xh . u [ <NUM_LIT:0> ] <EOL> CovXh_vb = Xh . u [ <NUM_LIT:1> ] - Xh_vb [ ... , np . newaxis , : ] * Xh_vb [ ... , : , np . newaxis ] <EOL> V = N * ( V , ) <EOL> UY = Y <EOL> U = N * ( C , ) <EOL> ( Xh , CovXh ) = kalman_filter ( UY , U , A , V , np . zeros ( D ) , np . identity ( D ) ) <EOL> ( Xh , CovXh ) = rts_smoother ( Xh , CovXh , A , V ) <EOL> self . assertTrue ( np . allclose ( Xh_vb , Xh ) ) <EOL> self . assertTrue ( np . allclose ( CovXh_vb , CovXh ) ) <EOL> class TestVaryingGaussianMarkovChain ( TestCase ) : <EOL> def test_plates_from_parents ( self ) : <EOL> """<STR_LIT>""" <EOL> def check ( plates_X , <EOL> plates_mu = ( ) , <EOL> plates_Lambda = ( ) , <EOL> plates_B = ( ) , <EOL> plates_S = ( ) , <EOL> plates_v = ( ) ) : <EOL> D = <NUM_LIT:3> <EOL> K = <NUM_LIT:2> <EOL> N = <NUM_LIT:4> <EOL> np . random . seed ( <NUM_LIT> ) <EOL> mu = Gaussian ( np . random . randn ( * ( plates_mu + ( D , ) ) ) , <EOL> random . covariance ( D ) ) <EOL> Lambda = Wishart ( D + np . ones ( plates_Lambda ) , <EOL> random . covariance ( D ) ) <EOL> B = GaussianARD ( np . random . randn ( * ( plates_B + ( D , D , K ) ) ) , <EOL> <NUM_LIT:1> + np . random . rand ( * ( plates_B + ( D , D , K ) ) ) , <EOL> shape = ( D , K ) , <EOL> plates = plates_B + ( D , ) ) <EOL> S = GaussianARD ( np . random . randn ( * ( plates_S + ( N , K ) ) ) , <EOL> <NUM_LIT:1> + np . random . rand ( * ( plates_S + ( N , K ) ) ) , <EOL> shape = ( K , ) , <EOL> plates = plates_S + ( N , ) ) <EOL> v = Gamma ( <NUM_LIT:1> + np . random . rand ( * ( plates_v + ( <NUM_LIT:1> , D ) ) ) , <EOL> <NUM_LIT:1> + np . random . rand ( * ( plates_v + ( <NUM_LIT:1> , D ) ) ) ) <EOL> X = VaryingGaussianMarkovChain ( mu , Lambda , B , S , v , name = "<STR_LIT:X>" ) <EOL> self . assertEqual ( plates_X , X . plates , <EOL> msg = "<STR_LIT>" ) <EOL> pass <EOL> check ( ( ) ) <EOL> check ( ( <NUM_LIT:2> , <NUM_LIT:3> ) , <EOL> plates_mu = ( <NUM_LIT:2> , <NUM_LIT:3> ) ) <EOL> check ( ( <NUM_LIT:6> , <NUM_LIT:7> ) , <EOL> plates_Lambda = ( <NUM_LIT:6> , <NUM_LIT:7> ) ) <EOL> check ( ( <NUM_LIT:2> , <NUM_LIT:3> ) , <EOL> plates_B = ( <NUM_LIT:2> , <NUM_LIT:3> ) ) <EOL> check ( ( <NUM_LIT:2> , <NUM_LIT:3> ) , <EOL> plates_S = ( <NUM_LIT:2> , <NUM_LIT:3> ) ) <EOL> check ( ( <NUM_LIT:2> , <NUM_LIT:3> ) , <EOL> plates_v = ( <NUM_LIT:2> , <NUM_LIT:3> ) ) <EOL> pass <EOL> def test_message_to_child ( self ) : <EOL> m = <NUM_LIT:1.0> <EOL> l = <NUM_LIT> <EOL> b = <NUM_LIT> <EOL> s = [ <NUM_LIT> , <NUM_LIT> ] <EOL> v = <NUM_LIT> <EOL> X = VaryingGaussianMarkovChain ( [ m ] , <EOL> [ [ l ] ] , <EOL> [ [ [ b ] ] ] , <EOL> [ [ s [ <NUM_LIT:0> ] ] , [ s [ <NUM_LIT:1> ] ] ] , <EOL> [ v ] ) <EOL> ( u0 , u1 , u2 ) = X . _message_to_child ( ) <EOL> C = np . array ( [ [ l + b ** <NUM_LIT:2> * s [ <NUM_LIT:0> ] ** <NUM_LIT:2> * v , - b * s [ <NUM_LIT:0> ] * v , <NUM_LIT:0> ] , <EOL> [ - b * s [ <NUM_LIT:0> ] * v , v + b ** <NUM_LIT:2> * s [ <NUM_LIT:1> ] ** <NUM_LIT:2> * v , - b * s [ <NUM_LIT:1> ] * v ] , <EOL> [ <NUM_LIT:0> , - b * s [ <NUM_LIT:1> ] * v , v ] ] ) <EOL> Cov = np . linalg . inv ( C ) <EOL> m0 = np . dot ( Cov , [ [ l * m ] , [ <NUM_LIT:0> ] , [ <NUM_LIT:0> ] ] ) <EOL> m1 = np . diag ( Cov ) [ : , None , None ] + m0 [ : , : , None ] ** <NUM_LIT:2> <EOL> m2 = np . diag ( Cov , k = <NUM_LIT:1> ) [ : , None , None ] + m0 [ <NUM_LIT:1> : , : , None ] * m0 [ : - <NUM_LIT:1> , : , None ] <EOL> self . assertAllClose ( m0 , u0 ) <EOL> self . assertAllClose ( m1 , u1 ) <EOL> self . assertAllClose ( m2 , u2 ) <EOL> def check ( N , D , K , plates = None , mu = None , Lambda = None , B = None , S = None , V = None ) : <EOL> if mu is None : <EOL> mu = np . random . randn ( D ) <EOL> if Lambda is None : <EOL> Lambda = random . covariance ( D ) <EOL> if B is None : <EOL> B = np . random . randn ( D , D , K ) <EOL> if S is None : <EOL> S = np . random . randn ( N - <NUM_LIT:1> , K ) <EOL> if V is None : <EOL> V = np . random . rand ( D ) <EOL> X = VaryingGaussianMarkovChain ( mu , <EOL> Lambda , <EOL> B , <EOL> S , <EOL> V , <EOL> plates = plates , <EOL> n = N ) <EOL> ( u0 , u1 , u2 ) = X . _message_to_child ( ) <EOL> ( mu , mumu ) = X . parents [ <NUM_LIT:0> ] . get_moments ( ) <EOL> ( Lambda , _ ) = X . parents [ <NUM_LIT:1> ] . get_moments ( ) <EOL> ( b , bb ) = X . parents [ <NUM_LIT:2> ] . get_moments ( ) <EOL> ( s , ss ) = X . parents [ <NUM_LIT:3> ] . get_moments ( ) <EOL> ( v , _ ) = X . parents [ <NUM_LIT:4> ] . get_moments ( ) <EOL> v = v * np . ones ( ( N - <NUM_LIT:1> , D ) ) <EOL> plates_C = X . plates <EOL> plates_mu = X . plates <EOL> C = np . zeros ( plates_C + ( N , D , N , D ) ) <EOL> plates_mu = np . shape ( mu ) [ : - <NUM_LIT:1> ] <EOL> m = np . zeros ( plates_mu + ( N , D ) ) <EOL> m [ ... , <NUM_LIT:0> , : ] = np . einsum ( '<STR_LIT>' , Lambda , mu ) <EOL> A = np . einsum ( '<STR_LIT>' , b , s ) <EOL> AA = np . einsum ( '<STR_LIT>' , bb , ss ) <EOL> C [ ... , <NUM_LIT:0> , : , <NUM_LIT:0> , : ] = Lambda + np . einsum ( '<STR_LIT>' , <EOL> AA [ ... , <NUM_LIT:0> , : , : , : ] , <EOL> v [ ... , <NUM_LIT:0> , : ] ) <EOL> for n in range ( <NUM_LIT:1> , N - <NUM_LIT:1> ) : <EOL> C [ ... , n , : , n , : ] = ( np . einsum ( '<STR_LIT>' , <EOL> AA [ ... , n , : , : , : ] , <EOL> v [ ... , n , : ] ) <EOL> + v [ ... , n , : , None ] * np . identity ( D ) ) <EOL> for n in range ( N - <NUM_LIT:1> ) : <EOL> C [ ... , n , : , n + <NUM_LIT:1> , : ] = - np . einsum ( '<STR_LIT>' , <EOL> A [ ... , n , : , : ] , <EOL> v [ ... , n , : ] ) <EOL> C [ ... , n + <NUM_LIT:1> , : , n , : ] = - np . einsum ( '<STR_LIT>' , <EOL> A [ ... , n , : , : ] , <EOL> v [ ... , n , : ] ) <EOL> C [ ... , - <NUM_LIT:1> , : , - <NUM_LIT:1> , : ] = v [ ... , - <NUM_LIT:1> , : , None ] * np . identity ( D ) <EOL> C = np . reshape ( C , plates_C + ( N * D , N * D ) ) <EOL> Cov = np . linalg . inv ( C ) <EOL> Cov = np . reshape ( Cov , plates_C + ( N , D , N , D ) ) <EOL> m0 = np . einsum ( '<STR_LIT>' , Cov , m ) <EOL> m1 = np . zeros ( plates_C + ( N , D , D ) ) <EOL> m2 = np . zeros ( plates_C + ( N - <NUM_LIT:1> , D , D ) ) <EOL> for n in range ( N ) : <EOL> m1 [ ... , n , : , : ] = Cov [ ... , n , : , n , : ] + np . einsum ( '<STR_LIT>' , <EOL> m0 [ ... , n , : ] , <EOL> m0 [ ... , n , : ] ) <EOL> for n in range ( N - <NUM_LIT:1> ) : <EOL> m2 [ ... , n , : , : ] = Cov [ ... , n , : , n + <NUM_LIT:1> , : ] + np . einsum ( '<STR_LIT>' , <EOL> m0 [ ... , n , : ] , <EOL> m0 [ ... , n + <NUM_LIT:1> , : ] ) <EOL> self . assertAllClose ( m0 , u0 * np . ones ( np . shape ( m0 ) ) ) <EOL> self . assertAllClose ( m1 , u1 * np . ones ( np . shape ( m1 ) ) ) <EOL> self . assertAllClose ( m2 , u2 * np . ones ( np . shape ( m2 ) ) ) <EOL> pass <EOL> check ( <NUM_LIT:2> , <NUM_LIT:1> , <NUM_LIT:1> ) <EOL> check ( <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:1> ) <EOL> check ( <NUM_LIT:2> , <NUM_LIT:1> , <NUM_LIT:3> ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <EOL> mu = Gaussian ( np . random . randn ( <NUM_LIT:3> ) , <EOL> random . covariance ( <NUM_LIT:3> ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <EOL> mu = Gaussian ( np . random . randn ( <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT:3> ) , <EOL> random . covariance ( <NUM_LIT:3> ) , <EOL> plates = ( <NUM_LIT:5> , <NUM_LIT:6> ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <EOL> mu = Gaussian ( np . random . randn ( <NUM_LIT:3> ) , <EOL> random . covariance ( <NUM_LIT:3> ) , <EOL> plates = ( <NUM_LIT:5> , ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <EOL> mu = Gaussian ( np . random . randn ( <NUM_LIT:1> , <NUM_LIT:3> ) , <EOL> random . covariance ( <NUM_LIT:3> ) , <EOL> plates = ( <NUM_LIT:5> , ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <EOL> plates = ( <NUM_LIT:5> , ) , <EOL> mu = Gaussian ( np . random . randn ( <NUM_LIT:3> ) , <EOL> random . covariance ( <NUM_LIT:3> ) , <EOL> plates = ( ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <EOL> plates = ( <NUM_LIT:5> , ) , <EOL> mu = Gaussian ( np . random . randn ( <NUM_LIT:1> , <NUM_LIT:3> ) , <EOL> random . covariance ( <NUM_LIT:3> ) , <EOL> plates = ( <NUM_LIT:1> , ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <EOL> Lambda = Wishart ( <NUM_LIT:10> + np . random . rand ( ) , <EOL> random . covariance ( <NUM_LIT:3> ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <EOL> Lambda = Wishart ( <NUM_LIT:10> + np . random . rand ( ) , <EOL> random . covariance ( <NUM_LIT:3> ) , <EOL> plates = ( <NUM_LIT:5> , <NUM_LIT:6> ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <EOL> Lambda = Wishart ( <NUM_LIT:10> + np . random . rand ( ) , <EOL> random . covariance ( <NUM_LIT:3> ) , <EOL> plates = ( <NUM_LIT:5> , ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <EOL> Lambda = Wishart ( <NUM_LIT:10> + np . random . rand ( <NUM_LIT:1> ) , <EOL> random . covariance ( <NUM_LIT:3> ) , <EOL> plates = ( <NUM_LIT:5> , ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <EOL> plates = ( <NUM_LIT:5> , ) , <EOL> Lambda = Wishart ( <NUM_LIT:10> + np . random . rand ( ) , <EOL> random . covariance ( <NUM_LIT:3> ) , <EOL> plates = ( ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <EOL> plates = ( <NUM_LIT:5> , ) , <EOL> Lambda = Wishart ( <NUM_LIT:10> + np . random . rand ( ) , <EOL> random . covariance ( <NUM_LIT:3> ) , <EOL> plates = ( <NUM_LIT:1> , ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <EOL> B = GaussianARD ( np . random . randn ( <NUM_LIT:3> , <NUM_LIT:3> , <NUM_LIT:2> ) , <EOL> np . random . rand ( <NUM_LIT:3> , <NUM_LIT:3> , <NUM_LIT:2> ) , <EOL> shape = ( <NUM_LIT:3> , <NUM_LIT:2> ) , <EOL> plates = ( <NUM_LIT:3> , ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <EOL> B = GaussianARD ( np . random . randn ( <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT:3> , <NUM_LIT:3> , <NUM_LIT:2> ) , <EOL> np . random . rand ( <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT:3> , <NUM_LIT:3> , <NUM_LIT:2> ) , <EOL> shape = ( <NUM_LIT:3> , <NUM_LIT:2> ) , <EOL> plates = ( <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT:3> ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <EOL> B = GaussianARD ( np . random . randn ( <NUM_LIT:3> , <NUM_LIT:3> , <NUM_LIT:2> ) , <EOL> np . random . rand ( <NUM_LIT:3> , <NUM_LIT:3> , <NUM_LIT:2> ) , <EOL> shape = ( <NUM_LIT:3> , <NUM_LIT:2> ) , <EOL> plates = ( <NUM_LIT:5> , <NUM_LIT:3> ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <EOL> B = GaussianARD ( np . random . randn ( <NUM_LIT:1> , <NUM_LIT:3> , <NUM_LIT:3> , <NUM_LIT:2> ) , <EOL> np . random . rand ( <NUM_LIT:1> , <NUM_LIT:3> , <NUM_LIT:3> , <NUM_LIT:2> ) , <EOL> shape = ( <NUM_LIT:3> , <NUM_LIT:2> ) , <EOL> plates = ( <NUM_LIT:5> , <NUM_LIT:3> ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <EOL> plates = ( <NUM_LIT:5> , ) , <EOL> B = GaussianARD ( np . random . randn ( <NUM_LIT:3> , <NUM_LIT:3> , <NUM_LIT:2> ) , <EOL> np . random . rand ( <NUM_LIT:3> , <NUM_LIT:3> , <NUM_LIT:2> ) , <EOL> shape = ( <NUM_LIT:3> , <NUM_LIT:2> ) , <EOL> plates = ( <NUM_LIT:3> , ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <EOL> plates = ( <NUM_LIT:5> , ) , <EOL> B = GaussianARD ( np . random . randn ( <NUM_LIT:3> , <NUM_LIT:3> , <NUM_LIT:2> ) , <EOL> np . random . rand ( <NUM_LIT:3> , <NUM_LIT:3> , <NUM_LIT:2> ) , <EOL> shape = ( <NUM_LIT:3> , <NUM_LIT:2> ) , <EOL> plates = ( <NUM_LIT:1> , <NUM_LIT:3> ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <EOL> S = GaussianARD ( np . random . randn ( <NUM_LIT:4> - <NUM_LIT:1> , <NUM_LIT:2> ) , <EOL> np . random . rand ( <NUM_LIT:4> - <NUM_LIT:1> , <NUM_LIT:2> ) , <EOL> shape = ( <NUM_LIT:2> , ) , <EOL> plates = ( <NUM_LIT:4> - <NUM_LIT:1> , ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <EOL> S = GaussianARD ( np . random . randn ( <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT:4> - <NUM_LIT:1> , <NUM_LIT:2> ) , <EOL> np . random . rand ( <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT:4> - <NUM_LIT:1> , <NUM_LIT:2> ) , <EOL> shape = ( <NUM_LIT:2> , ) , <EOL> plates = ( <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT:4> - <NUM_LIT:1> , ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <EOL> S = GaussianARD ( np . random . randn ( <NUM_LIT:4> - <NUM_LIT:1> , <NUM_LIT:2> ) , <EOL> np . random . rand ( <NUM_LIT:4> - <NUM_LIT:1> , <NUM_LIT:2> ) , <EOL> shape = ( <NUM_LIT:2> , ) , <EOL> plates = ( <NUM_LIT:5> , <NUM_LIT:4> - <NUM_LIT:1> , ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <EOL> S = GaussianARD ( np . random . randn ( <NUM_LIT:1> , <NUM_LIT:4> - <NUM_LIT:1> , <NUM_LIT:2> ) , <EOL> np . random . rand ( <NUM_LIT:1> , <NUM_LIT:4> - <NUM_LIT:1> , <NUM_LIT:2> ) , <EOL> shape = ( <NUM_LIT:2> , ) , <EOL> plates = ( <NUM_LIT:5> , <NUM_LIT:4> - <NUM_LIT:1> , ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <EOL> plates = ( <NUM_LIT:5> , ) , <EOL> S = GaussianARD ( np . random . randn ( <NUM_LIT:4> - <NUM_LIT:1> , <NUM_LIT:2> ) , <EOL> np . random . rand ( <NUM_LIT:4> - <NUM_LIT:1> , <NUM_LIT:2> ) , <EOL> shape = ( <NUM_LIT:2> , ) , <EOL> plates = ( <NUM_LIT:4> - <NUM_LIT:1> , ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <EOL> plates = ( <NUM_LIT:5> , ) , <EOL> S = GaussianARD ( np . random . randn ( <NUM_LIT:4> - <NUM_LIT:1> , <NUM_LIT:2> ) , <EOL> np . random . rand ( <NUM_LIT:4> - <NUM_LIT:1> , <NUM_LIT:2> ) , <EOL> shape = ( <NUM_LIT:2> , ) , <EOL> plates = ( <NUM_LIT:1> , <NUM_LIT:4> - <NUM_LIT:1> , ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <EOL> V = Gamma ( np . random . rand ( <NUM_LIT:1> , <NUM_LIT:3> ) , <EOL> np . random . rand ( <NUM_LIT:1> , <NUM_LIT:3> ) , <EOL> plates = ( <NUM_LIT:1> , <NUM_LIT:3> ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <EOL> V = Gamma ( np . random . rand ( <NUM_LIT:3> ) , <EOL> np . random . rand ( <NUM_LIT:3> ) , <EOL> plates = ( <NUM_LIT:3> , ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <EOL> V = Gamma ( np . random . rand ( <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT:1> , <NUM_LIT:3> ) , <EOL> np . random . rand ( <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT:1> , <NUM_LIT:3> ) , <EOL> plates = ( <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT:1> , <NUM_LIT:3> ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <EOL> V = Gamma ( np . random . rand ( <NUM_LIT:1> , <NUM_LIT:3> ) , <EOL> np . random . rand ( <NUM_LIT:1> , <NUM_LIT:3> ) , <EOL> plates = ( <NUM_LIT:5> , <NUM_LIT:1> , <NUM_LIT:3> ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <EOL> V = Gamma ( np . random . rand ( <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:3> ) , <EOL> np . random . rand ( <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:3> ) , <EOL> plates = ( <NUM_LIT:5> , <NUM_LIT:1> , <NUM_LIT:3> ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <EOL> plates = ( <NUM_LIT:5> , ) , <EOL> V = Gamma ( np . random . rand ( <NUM_LIT:1> , <NUM_LIT:3> ) , <EOL> np . random . rand ( <NUM_LIT:1> , <NUM_LIT:3> ) , <EOL> plates = ( <NUM_LIT:1> , <NUM_LIT:3> ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <EOL> plates = ( <NUM_LIT:5> , ) , <EOL> V = Gamma ( np . random . rand ( <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:3> ) , <EOL> np . random . rand ( <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:3> ) , <EOL> plates = ( <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:3> ) ) ) <EOL> check ( <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <EOL> B = GaussianARD ( np . random . randn ( <NUM_LIT:3> , <NUM_LIT:3> , <NUM_LIT:2> ) , <EOL> np . random . rand ( <NUM_LIT:3> , <NUM_LIT:3> , <NUM_LIT:2> ) , <EOL> shape = ( <NUM_LIT:3> , <NUM_LIT:2> ) , <EOL> plates = ( <NUM_LIT:3> , ) ) , <EOL> S = GaussianARD ( np . random . randn ( <NUM_LIT:4> - <NUM_LIT:1> , <NUM_LIT:2> ) , <EOL> np . random . rand ( <NUM_LIT:4> - <NUM_LIT:1> , <NUM_LIT:2> ) , <EOL> shape = ( <NUM_LIT:2> , ) , <EOL> plates = ( <NUM_LIT:4> - <NUM_LIT:1> , ) ) ) <EOL> pass <EOL> def test_message_to_mu ( self ) : <EOL> pass <EOL> def test_message_to_Lambda ( self ) : <EOL> pass <EOL> def test_message_to_B ( self ) : <EOL> pass <EOL> def test_message_to_S ( self ) : <EOL> pass <EOL> def test_message_to_v ( self ) : <EOL> pass </s>
