# gpflow.expectations¶

## gpflow.expectations.expectation¶

gpflow.expectations.expectation(p, obj1, obj2=None, nghp=None)[source]

Compute the expectation <obj1(x) obj2(x)>_p(x) Uses multiple-dispatch to select an analytical implementation, if one is available. If not, it falls back to quadrature.

Parameters

nghp (int) – passed to _quadrature_expectation to set the number of Gauss-Hermite points used: num_gauss_hermite_points

Returns

a 1-D, 2-D, or 3-D tensor containing the expectation

Allowed combinations

• Psi statistics:
>>> eKdiag = expectation(p, kernel)  (N)  # Psi0
>>> eKxz = expectation(p, (kernel, inducing_variable))  (NxM)  # Psi1
>>> exKxz = expectation(p, identity_mean, (kernel, inducing_variable))  (NxDxM)
>>> eKzxKxz = expectation(p, (kernel, inducing_variable), (kernel, inducing_variable))  (NxMxM)  # Psi2

• kernels and mean functions:
>>> eKzxMx = expectation(p, (kernel, inducing_variable), mean)  (NxMxQ)
>>> eMxKxz = expectation(p, mean, (kernel, inducing_variable))  (NxQxM)

• only mean functions:
>>> eMx = expectation(p, mean)  (NxQ)
>>> eM1x_M2x = expectation(p, mean1, mean2)  (NxQ1xQ2)
.. note:: mean(x) is 1xQ (row vector)

• different kernels. This occurs, for instance, when we are calculating Psi2 for Sum kernels:
>>> eK1zxK2xz = expectation(p, (kern1, inducing_variable), (kern2, inducing_variable))  (NxMxM)


gpflow.expectations.quadrature_expectation(p, obj1, obj2=None, nghp=None)[source]

Compute the expectation <obj1(x) obj2(x)>_p(x) Uses Gauss-Hermite quadrature for approximate integration.

Parameters

num_gauss_hermite_points (int) – passed to _quadrature_expectation to set the number of Gauss-Hermite points used

Returns

a 1-D, 2-D, or 3-D tensor containing the expectation