index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
<title>GPflow — GPflow 2.7.0 documentation</title>
<script>
document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
document.documentElement.dataset.theme = localStorage.getItem("theme") || "light"
</script>
<!-- Loaded before other Sphinx assets -->
<link href="_static/styles/theme.css?digest=92025949c220c2e29695" rel="stylesheet">
<link href="_static/styles/pydata-sphinx-theme.css?digest=92025949c220c2e29695" rel="stylesheet">
<link rel="stylesheet"
href="_static/vendor/fontawesome/5.13.0/css/all.min.css">
<link rel="preload" as="font" type="font/woff2" crossorigin
href="_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.woff2">
<link rel="preload" as="font" type="font/woff2" crossorigin
href="_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.woff2">
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="_static/pydata-custom.css" />
<!-- Pre-loaded scripts that we'll load fully later -->
<link rel="preload" as="script" href="_static/scripts/pydata-sphinx-theme.js?digest=92025949c220c2e29695">
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/doctools.js"></script>
<script src="_static/sphinx_highlight.js"></script>
<script crossorigin="anonymous" integrity="sha256-Ae2Vz/4ePdIu6ZyI/5ZGsYnb+m0JlOmKPjt6XZ9JJkA=" src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@jupyter-widgets/html-manager@^1.0.1/dist/embed-amd.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="Getting Started" href="getting_started.html" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="docsearch:language" content="en">
</head>
<body data-spy="scroll" data-target="#bd-toc-nav" data-offset="180" data-default-mode="">
<div class="bd-header-announcement container-fluid" id="banner">
</div>
<nav class="bd-header navbar navbar-light navbar-expand-lg bg-light fixed-top bd-navbar" id="navbar-main"><div class="bd-header__inner container-xl">
<div id="navbar-start">
<a class="navbar-brand logo" href="#">
<p class="title logo__title">GPflow 2.7.0 documentation</p>
</a>
</div>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar-collapsible" aria-controls="navbar-collapsible" aria-expanded="false" aria-label="Toggle navigation">
<span class="fas fa-bars"></span>
</button>
<div id="navbar-collapsible" class="col-lg-9 collapse navbar-collapse">
<div id="navbar-center" class="mr-auto">
<div class="navbar-center-item">
<ul id="navbar-main-elements" class="navbar-nav">
<li class="toctree-l1 nav-item">
<a class="reference internal nav-link" href="getting_started.html">
Getting Started
</a>
</li>
<li class="toctree-l1 nav-item">
<a class="reference internal nav-link" href="user_guide.html">
User Guide
</a>
</li>
<li class="toctree-l1 nav-item">
<a class="reference internal nav-link" href="api/gpflow/index.html">
API reference
</a>
</li>
<li class="toctree-l1 nav-item">
<a class="reference internal nav-link" href="benchmarks.html">
Benchmarks
</a>
</li>
<li class="toctree-l1 nav-item">
<a class="reference internal nav-link" href="bibliography.html">
Bibliography
</a>
</li>
</ul>
</div>
</div>
<div id="navbar-end">
<div class="navbar-end-item">
<div class="dropdown" id="version_switcher">
<button type="button" class="btn btn-sm navbar-btn dropdown-toggle" id="version_switcher_button" data-toggle="dropdown">
2.7.0 <!-- this text may get changed later by javascript -->
<span class="caret"></span>
</button>
<div id="version_switcher_menu" class="dropdown-menu list-group-flush py-0" aria-labelledby="version_switcher_button">
<!-- dropdown will be populated by javascript on page load -->
</div>
</div>
<!-- NOTE: this JS must live here (not in our global JS file) because it relies
on being processed by Jinja before it is run (specifically for replacing
variables index and {'json_url': 'https://gpflow.github.io/GPflow/versions.json', 'version_match': '2.7.0'}.
-->
<script type="text/javascript">
// Check if corresponding page path exists in other version of docs
// and, if so, go there instead of the homepage of the other docs version
function checkPageExistsAndRedirect(event) {
const currentFilePath = "index.html",
tryUrl = event.target.getAttribute("href");
let otherDocsHomepage = tryUrl.replace(currentFilePath, "");
$.ajax({
type: 'HEAD',
url: tryUrl,
// if the page exists, go there
success: function() {
location.href = tryUrl;
}
}).fail(function() {
location.href = otherDocsHomepage;
});
// this prevents the browser from following the href of the clicked node
// (which is fine because this function takes care of redirecting)
return false;
}
// Populate the version switcher from the JSON config file
(function () {
$.getJSON("https://gpflow.github.io/GPflow/versions.json", function(data, textStatus, jqXHR) {
const currentFilePath = "index.html";
let btn = document.getElementById("version_switcher_button");
// Set empty strings by default so that these attributes exist and can be used in CSS selectors
btn.dataset["activeVersionName"] = "";
btn.dataset["activeVersion"] = "";
// create links to the corresponding page in the other docs versions
$.each(data, function(index, entry) {
// if no custom name specified (e.g., "latest"), use version string
if (!("name" in entry)) {
entry.name = entry.version;
}
// create the node
const node = document.createElement("a");
node.setAttribute("class", "list-group-item list-group-item-action py-1");
node.textContent = `${entry.name}`;
node.setAttribute("href", `${entry.url}${currentFilePath}`);
// on click, AJAX calls will check if the linked page exists before
// trying to redirect, and if not, will redirect to the homepage
// for that version of the docs.
node.onclick = checkPageExistsAndRedirect;
// Add dataset values for the version and name in case people want
// to apply CSS styling based on this information.
node.dataset["versionName"] = entry.name;
node.dataset["version"] = entry.version;
$("#version_switcher_menu").append(node);
// replace dropdown button text with the preferred display name of
// this version, rather than using sphinx's variable.
// also highlight the dropdown entry for the currently-viewed
// version's entry
if (entry.version == "2.7.0") {
node.classList.add("active");
btn.innerText = btn.dataset["activeVersionName"] = entry.name;
btn.dataset["activeVersion"] = entry.version;
}
});
});
})();
</script>
</div>
</div>
</div>
</div>
</nav>
<div class="bd-container container-xl">
<div class="bd-container__inner row">
<!-- Only show if we have sidebars configured, else just a small margin -->
<div class="bd-sidebar-primary col-12 col-md-3 bd-sidebar">
<div class="sidebar-start-items"><form class="bd-search d-flex align-items-center" action="search.html" method="get">
<i class="icon fas fa-search"></i>
<input type="search" class="form-control" name="q" id="search-input" placeholder="Search the docs ..." aria-label="Search the docs ..." autocomplete="off" >
</form><nav class="bd-links" id="bd-docs-nav" aria-label="Main navigation">
<div class="bd-toc-item active">
</div>
</nav>
</div>
<div class="sidebar-end-items">
</div>
</div>
<div class="bd-sidebar-secondary d-none d-xl-block col-xl-2 bd-toc">
<div class="toc-item">
<div class="tocsection onthispage mt-5 pt-1 pb-3">
<i class="fas fa-list"></i> On this page
</div>
<nav id="bd-toc-nav">
<ul class="visible nav section-nav flex-column">
<li class="toc-h2 nav-item toc-entry">
<a class="reference internal nav-link" href="#documentation">
Documentation
</a>
<ul class="nav section-nav flex-column">
</ul>
</li>
<li class="toc-h2 nav-item toc-entry">
<a class="reference internal nav-link" href="#what-models-are-implemented">
What models are implemented?
</a>
<ul class="nav section-nav flex-column">
<li class="toc-h3 nav-item toc-entry">
<a class="reference internal nav-link" href="#regression">
Regression
</a>
</li>
<li class="toc-h3 nav-item toc-entry">
<a class="reference internal nav-link" href="#mcmc">
MCMC
</a>
</li>
<li class="toc-h3 nav-item toc-entry">
<a class="reference internal nav-link" href="#variational-inference">
Variational inference
</a>
</li>
<li class="toc-h3 nav-item toc-entry">
<a class="reference internal nav-link" href="#interdomain-inference-and-multioutput-gps">
Interdomain inference and multioutput GPs
</a>
</li>
<li class="toc-h3 nav-item toc-entry">
<a class="reference internal nav-link" href="#gplvm">
GPLVM
</a>
</li>
<li class="toc-h3 nav-item toc-entry">
<a class="reference internal nav-link" href="#heteroskedastic-models">
Heteroskedastic models
</a>
</li>
</ul>
</li>
<li class="toc-h2 nav-item toc-entry">
<a class="reference internal nav-link" href="#contact">
Contact
</a>
</li>
<li class="toc-h2 nav-item toc-entry">
<a class="reference internal nav-link" href="#citing-gpflow">
Citing GPflow
</a>
</li>
<li class="toc-h2 nav-item toc-entry">
<a class="reference internal nav-link" href="#acknowledgements">
Acknowledgements
</a>
</li>
</ul>
</nav>
</div>
<div class="toc-item">
</div>
</div>
<div class="bd-content col-12 col-md-9 col-xl-7">
<article class="bd-article" role="main">
<section id="gpflow">
<h1>GPflow<a class="headerlink" href="#gpflow" title="Permalink to this heading">#</a></h1>
<p>GPflow is a package for building Gaussian Process models in python, using <a class="reference external" href="http://www.tensorflow.org">TensorFlow</a>. A Gaussian Process is a kind of supervised learning model.
Some advantages of Gaussian Processes are:</p>
<ul class="simple">
<li><p>Uncertainty is an inherent part of Gaussian Processes. A Gaussian Process can tell you when
it does not know the answer.</p></li>
<li><p>Works well with small datasets. If your data is limited Gaussian Procceses can get the most from
your data.</p></li>
<li><p>Can scale to large datasets. Although Gaussian Processes, admittedly, can be computationally
intensive there are ways to scale them to large datasets.</p></li>
</ul>
<p>GPflow was originally created by <a class="reference external" href="http://www.lancaster.ac.uk/staff/hensmanj/">James Hensman</a>
and <a class="reference external" href="http://mlg.eng.cam.ac.uk/?portfolio=alex-matthews">Alexander G. de G. Matthews</a>.
Today it is primarily maintained by the company <a class="reference external" href="https://www.secondmind.ai/">Secondmind</a>.</p>
<section id="documentation">
<h2>Documentation<a class="headerlink" href="#documentation" title="Permalink to this heading">#</a></h2>
<p>If you’re new to GPflow we suggest you continue to:</p>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="getting_started.html">Getting Started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="notebooks/getting_started/basic_usage.html">Basic Usage with GPR</a></li>
<li class="toctree-l2"><a class="reference internal" href="notebooks/getting_started/kernels.html">Kernels</a></li>
<li class="toctree-l2"><a class="reference internal" href="notebooks/getting_started/mean_functions.html">Mean Functions</a></li>
<li class="toctree-l2"><a class="reference internal" href="notebooks/getting_started/parameters_and_their_optimisation.html">Parameters and Their Optimisation</a></li>
<li class="toctree-l2"><a class="reference internal" href="notebooks/getting_started/large_data.html">Large Data with SGPR</a></li>
<li class="toctree-l2"><a class="reference internal" href="notebooks/getting_started/classification_and_other_data_distributions.html">Classification, other data distributions, VGP and SVGP</a></li>
<li class="toctree-l2"><a class="reference internal" href="notebooks/getting_started/monitoring.html">Monitoring</a></li>
<li class="toctree-l2"><a class="reference internal" href="notebooks/getting_started/saving_and_loading.html">Saving and Loading Models</a></li>
</ul>
</li>
</ul>
</div>
<p>For more in-depth documentation see:</p>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="user_guide.html">User Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="api/gpflow/index.html">API reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="benchmarks.html">Benchmarks</a></li>
<li class="toctree-l1"><a class="reference internal" href="bibliography.html">Bibliography</a></li>
</ul>
</div>
</section>
<section id="what-models-are-implemented">
<span id="implemented-models"></span><h2>What models are implemented?<a class="headerlink" href="#what-models-are-implemented" title="Permalink to this heading">#</a></h2>
<p>GPflow has a slew of kernels that can be combined in a straightforward way. As for inference, the options are currently:</p>
<section id="regression">
<h3>Regression<a class="headerlink" href="#regression" title="Permalink to this heading">#</a></h3>
<p>For GP regression with Gaussian noise, it’s possible to marginalize the function values exactly: you’ll find this in <a class="reference internal" href="api/gpflow/models/index.html#gpflow.models.GPR" title="gpflow.models.GPR"><code class="xref py py-class docutils literal notranslate"><span class="pre">gpflow.models.GPR</span></code></a>. You can do maximum likelihood or MCMC for the covariance function parameters.</p>
<p>It’s also possible to do Sparse GP regression using the <a class="reference internal" href="api/gpflow/models/index.html#gpflow.models.SGPR" title="gpflow.models.SGPR"><code class="xref py py-class docutils literal notranslate"><span class="pre">gpflow.models.SGPR</span></code></a> class. This is based on work by Michalis Titsias <span id="id1">[<a class="reference internal" href="bibliography.html#id19" title="Michalis K Titsias. Variational learning of inducing variables in sparse gaussian processes. In International Conference on Artificial Intelligence and Statistics, 567–574. 2009.">Tit09</a>]</span>.</p>
</section>
<section id="mcmc">
<h3>MCMC<a class="headerlink" href="#mcmc" title="Permalink to this heading">#</a></h3>
<p>For non-Gaussian likelihoods, GPflow has a model that can jointly sample over the function values and the covariance parameters: <a class="reference internal" href="api/gpflow/models/index.html#gpflow.models.GPMC" title="gpflow.models.GPMC"><code class="xref py py-class docutils literal notranslate"><span class="pre">gpflow.models.GPMC</span></code></a>. There’s also a sparse equivalent in <a class="reference internal" href="api/gpflow/models/index.html#gpflow.models.SGPMC" title="gpflow.models.SGPMC"><code class="xref py py-class docutils literal notranslate"><span class="pre">gpflow.models.SGPMC</span></code></a>, based on <span id="id2">Hensman <em>et al.</em> [<a class="reference internal" href="bibliography.html#id7" title="James Hensman, Alexander G. de G. Matthews, Maurizio Filippone, and Zoubin Ghahramani. Mcmc for variatinoally sparse gaussian processes. In Proceedings of NIPS. 2015. URL: https://proceedings.neurips.cc/paper/2015/file/6b180037abbebea991d8b1232f8a8ca9-Paper.pdf.">HMFG15</a>]</span>.</p>
</section>
<section id="variational-inference">
<h3>Variational inference<a class="headerlink" href="#variational-inference" title="Permalink to this heading">#</a></h3>
<p>It’s often sufficient to approximate the function values as a Gaussian, for which we follow <span id="id3">Opper and Archambeau [<a class="reference internal" href="bibliography.html#id14" title="Manfred Opper and Cedric Archambeau. The variational gaussian approximation revisited. Neural Comput., pages 786–792, 2009.">OA09</a>]</span> in <a class="reference internal" href="api/gpflow/models/index.html#gpflow.models.VGP" title="gpflow.models.VGP"><code class="xref py py-class docutils literal notranslate"><span class="pre">gpflow.models.VGP</span></code></a>. In addition, there is a sparse version based on <span id="id4">Hensman <em>et al.</em> [<a class="reference internal" href="bibliography.html#id6" title="James Hensman, Alexander G. de G. Matthews, and Zoubin Ghahramani. Scalable variational gaussian process classification. In Proceedings of AISTATS. 2015.">HMG15</a>]</span> in <a class="reference internal" href="api/gpflow/models/index.html#gpflow.models.SVGP" title="gpflow.models.SVGP"><code class="xref py py-class docutils literal notranslate"><span class="pre">gpflow.models.SVGP</span></code></a>. In the Gaussian likelihood case some of the optimization may be done analytically as discussed in <span id="id5">Titsias [<a class="reference internal" href="bibliography.html#id19" title="Michalis K Titsias. Variational learning of inducing variables in sparse gaussian processes. In International Conference on Artificial Intelligence and Statistics, 567–574. 2009.">Tit09</a>]</span> and implemented in <a class="reference internal" href="api/gpflow/models/index.html#gpflow.models.SGPR" title="gpflow.models.SGPR"><code class="xref py py-class docutils literal notranslate"><span class="pre">gpflow.models.SGPR</span></code></a> . All of the sparse methods in GPflow are solidified in <span id="id6">Matthews <em>et al.</em> [<a class="reference internal" href="bibliography.html#id10" title="Alexander G de G Matthews, James Hensman, Richard Turner, and Zoubin Ghahramani. On sparse variational methods and the kullback-leibler divergence between stochastic processes. In Artificial Intelligence and Statistics, 231–239. PMLR, 2016.">MHTG16</a>]</span>.</p>
<p>The following table summarizes the model options in GPflow.</p>
<table class="table">
<thead>
<tr class="row-odd"><th class="head"></th>
<th class="head"><p>Gaussian
Likelihood</p></th>
<th class="head"><p>Non-Gaussian (variational)</p></th>
<th class="head"><p>Non-Gaussian
(MCMC)</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p>Full-covariance</p></td>
<td><p><a class="reference internal" href="api/gpflow/models/index.html#gpflow.models.GPR" title="gpflow.models.GPR"><code class="xref py py-class docutils literal notranslate"><span class="pre">gpflow.models.GPR</span></code></a></p></td>
<td><p><a class="reference internal" href="api/gpflow/models/index.html#gpflow.models.VGP" title="gpflow.models.VGP"><code class="xref py py-class docutils literal notranslate"><span class="pre">gpflow.models.VGP</span></code></a></p></td>
<td><p><a class="reference internal" href="api/gpflow/models/index.html#gpflow.models.GPMC" title="gpflow.models.GPMC"><code class="xref py py-class docutils literal notranslate"><span class="pre">gpflow.models.GPMC</span></code></a></p></td>
</tr>
<tr class="row-odd"><td><p>Sparse approximation</p></td>
<td><p><a class="reference internal" href="api/gpflow/models/index.html#gpflow.models.SGPR" title="gpflow.models.SGPR"><code class="xref py py-class docutils literal notranslate"><span class="pre">gpflow.models.SGPR</span></code></a></p></td>
<td><p><a class="reference internal" href="api/gpflow/models/index.html#gpflow.models.SVGP" title="gpflow.models.SVGP"><code class="xref py py-class docutils literal notranslate"><span class="pre">gpflow.models.SVGP</span></code></a></p></td>
<td><p><a class="reference internal" href="api/gpflow/models/index.html#gpflow.models.SGPMC" title="gpflow.models.SGPMC"><code class="xref py py-class docutils literal notranslate"><span class="pre">gpflow.models.SGPMC</span></code></a></p></td>
</tr>
</tbody>
</table>
<p>A unified view of many of the relevant references, along with some extensions, and an early discussion of GPflow itself, is given in the PhD thesis of Matthews <span id="id7">[<a class="reference internal" href="bibliography.html#id11" title="Alexander Graeme de Garis Matthews. Scalable Gaussian process inference using variational methods. PhD thesis, University of Cambridge, 2017.">Mat17</a>]</span>.</p>
</section>
<section id="interdomain-inference-and-multioutput-gps">
<h3>Interdomain inference and multioutput GPs<a class="headerlink" href="#interdomain-inference-and-multioutput-gps" title="Permalink to this heading">#</a></h3>
<p>GPflow has an extensive and flexible framework for specifying interdomain inducing variables for variational approximations.
Interdomain variables can greatly improve the effectiveness of a variational approximation, and are used in e.g.
<a class="reference internal" href="notebooks/advanced/convolutional.html"><span class="doc">Convolutional Gaussian Processes</span></a>. In particular, they are crucial for defining sensible sparse
approximations for multioutput GPs (<a class="reference internal" href="notebooks/advanced/multioutput.html"><span class="doc">Multi-output Gaussian processes in GPflow</span></a>).</p>
<p>GPflow has a unifying design for using multioutput GPs and specifying interdomain approximations. A review of the
mathematical background and the resulting software design is described in <span id="id8">van der Wilk <em>et al.</em> [<a class="reference internal" href="bibliography.html#id4" title="Mark van der Wilk, Vincent Dutordoir, ST John, Artem Artemev, Vincent Adam, and James Hensman. A framework for interdomain and multioutput Gaussian processes. arXiv:2003.01115, 2020. URL: https://arxiv.org/abs/2003.01115.">vandWilkDJ+20</a>]</span>.</p>
</section>
<section id="gplvm">
<h3>GPLVM<a class="headerlink" href="#gplvm" title="Permalink to this heading">#</a></h3>
<p>For visualisation, the GPLVM <span id="id9">[<a class="reference internal" href="bibliography.html#id8" title="Neil Lawrence. Gaussian process latent variable models for visualisation of high dimensional data. Advances in neural information processing systems, 2003.">Law03</a>]</span> and Bayesian GPLVM <span id="id10">[<a class="reference internal" href="bibliography.html#id20" title="Michalis Titsias and Neil D Lawrence. Bayesian gaussian process latent variable model. In Proceedings of the thirteenth international conference on artificial intelligence and statistics, 844–851. JMLR Workshop and Conference Proceedings, 2010.">TL10</a>]</span> models are implemented
in GPflow (<a class="reference internal" href="notebooks/advanced/GPLVM.html"><span class="doc">Bayesian Gaussian process latent variable model (Bayesian GPLVM)</span></a>).</p>
</section>
<section id="heteroskedastic-models">
<h3>Heteroskedastic models<a class="headerlink" href="#heteroskedastic-models" title="Permalink to this heading">#</a></h3>
<p>GPflow supports heteroskedastic models by configuring a likelihood object. See examples in <a class="reference internal" href="notebooks/advanced/varying_noise.html"><span class="doc">Gaussian process regression with varying output noise</span></a> and <a class="reference internal" href="notebooks/advanced/heteroskedastic.html"><span class="doc">Heteroskedastic Likelihood and Multi-Latent GP</span></a></p>
</section>
</section>
<section id="contact">
<h2>Contact<a class="headerlink" href="#contact" title="Permalink to this heading">#</a></h2>
<ul class="simple">
<li><p>GPflow is an open source project, and you can find this project on <a class="reference external" href="https://github.com/GPflow/GPflow">GitHub</a>.</p></li>
<li><p>If you find any bugs, please <a class="reference external" href="https://github.com/GPflow/GPflow/issues/new/choose">file a ticket</a>.</p></li>
<li><p>If you need help, please use <a class="reference external" href="https://stackoverflow.com/tags/gpflow">Stack Overflow</a>.</p></li>
<li><p>If you otherwise need to contact us, the easiest way to get in touch is
through our <a class="reference external" href="https://join.slack.com/t/gpflow/shared_invite/enQtOTE5MDA0Nzg5NjA2LTYwZWI3MzhjYjNlZWI1MWExYzZjMGNhOWIwZWMzMGY0YjVkYzAyYjQ4NjgzNDUyZTgyNzcwYjAyY2QzMWRmYjE">Slack workspace</a>.</p></li>
</ul>
<p>If you feel you have some relevant skills and are interested in contributing then please read our
<a class="reference external" href="https://github.com/GPflow/GPflow/blob/develop/CONTRIBUTING.md">notes for contributors</a> and contact
us. We maintain a <a class="reference external" href="https://github.com/GPflow/GPflow/blob/develop/CONTRIBUTORS.md">full list of contributors</a>.</p>
</section>
<section id="citing-gpflow">
<h2>Citing GPflow<a class="headerlink" href="#citing-gpflow" title="Permalink to this heading">#</a></h2>
<p>To cite GPflow, please reference <span id="id11">Matthews <em>et al.</em> [<a class="reference internal" href="bibliography.html#id3" title="Alexander G. de G. Matthews, Mark van der Wilk, Tom Nickson, Keisuke. Fujii, Alexis Boukouvalas, Pablo León-Villagrá, Zoubin Ghahramani, and James Hensman. GPflow: A Gaussian process library using TensorFlow. Journal of Machine Learning Research, 18(40):1-6, apr 2017. URL: http://jmlr.org/papers/v18/16-537.html.">MvandWilkN+17</a>]</span>. Sample BibTeX is given below:</p>
<div class="highlight-bib notranslate"><div class="highlight"><pre><span></span><span class="nc">@ARTICLE</span><span class="p">{</span><span class="nl">GPflow2017</span><span class="p">,</span>
<span class="w"> </span><span class="na">author</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="s">{Matthews, Alexander G. de G. and</span>
<span class="s"> {van der Wilk}, Mark and</span>
<span class="s"> Nickson, Tom and</span>
<span class="s"> Fujii, Keisuke. and</span>
<span class="s"> {Boukouvalas}, Alexis and</span>
<span class="s"> {Le{\'o}n-Villagr{\'a}}, Pablo and</span>
<span class="s"> Ghahramani, Zoubin and</span>
<span class="s"> Hensman, James}</span><span class="p">,</span>
<span class="w"> </span><span class="na">title</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="s">"{{GP}flow: A {G}aussian process library using {T}ensor{F}low}"</span><span class="p">,</span>
<span class="w"> </span><span class="na">journal</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="s">{Journal of Machine Learning Research}</span><span class="p">,</span>
<span class="w"> </span><span class="na">year</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="s">{2017}</span><span class="p">,</span>
<span class="w"> </span><span class="na">month</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="s">{apr}</span><span class="p">,</span>
<span class="w"> </span><span class="na">volume</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="s">{18}</span><span class="p">,</span>
<span class="w"> </span><span class="na">number</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="s">{40}</span><span class="p">,</span>
<span class="w"> </span><span class="na">pages</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="s">{1-6}</span><span class="p">,</span>
<span class="w"> </span><span class="na">url</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="s">{http://jmlr.org/papers/v18/16-537.html}</span>
<span class="p">}</span>
</pre></div>
</div>
<p>Since the publication of the GPflow paper, the software has been significantly extended
with the framework for interdomain approximations and multioutput priors. We review the
framework and describe the design in <span id="id12">van der Wilk <em>et al.</em> [<a class="reference internal" href="bibliography.html#id4" title="Mark van der Wilk, Vincent Dutordoir, ST John, Artem Artemev, Vincent Adam, and James Hensman. A framework for interdomain and multioutput Gaussian processes. arXiv:2003.01115, 2020. URL: https://arxiv.org/abs/2003.01115.">vandWilkDJ+20</a>]</span>, which can be cited by users:</p>
<div class="highlight-bib notranslate"><div class="highlight"><pre><span></span><span class="nc">@article</span><span class="p">{</span><span class="nl">GPflow2020multioutput</span><span class="p">,</span>
<span class="w"> </span><span class="na">author</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="s">{{van der Wilk}, Mark and</span>
<span class="s"> Dutordoir, Vincent and</span>
<span class="s"> John, ST and</span>
<span class="s"> Artemev, Artem and</span>
<span class="s"> Adam, Vincent and</span>
<span class="s"> Hensman, James}</span><span class="p">,</span>
<span class="w"> </span><span class="na">title</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="s">{A Framework for Interdomain and Multioutput {G}aussian Processes}</span><span class="p">,</span>
<span class="w"> </span><span class="na">year</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="s">{2020}</span><span class="p">,</span>
<span class="w"> </span><span class="na">journal</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="s">{arXiv:2003.01115}</span><span class="p">,</span>
<span class="w"> </span><span class="na">url</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="s">{https://arxiv.org/abs/2003.01115}</span>
<span class="p">}</span>
</pre></div>
</div>
</section>
<section id="acknowledgements">
<h2>Acknowledgements<a class="headerlink" href="#acknowledgements" title="Permalink to this heading">#</a></h2>
<p>James Hensman was supported by an MRC fellowship and Alexander G. de G. Matthews was supported by EPSRC grants EP/I036575/1 and EP/N014162/1.</p>
</section>
</section>
</article>
</div>
</div>
</div>
<!-- Scripts loaded after <body> so the DOM is not blocked -->
<script src="_static/scripts/pydata-sphinx-theme.js?digest=92025949c220c2e29695"></script>
<footer class="bd-footer"><div class="bd-footer__inner container">
<div class="footer-item">
<p class="copyright">
© Copyright 2022, The GPflow Contributors.<br>
</p>
</div>
<div class="footer-item">
<p class="sphinx-version">
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 6.1.3.<br>
</p>
</div>
</div>
</footer>
</body>
</html>