<div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="../../"><img src="../../assets/logo.svg" alt="DynamicPPL logo"/></a><div class="docs-package-name"><span class="docs-autofit"><a href="../../">DynamicPPL</a></span></div><button class="docs-search-query input is-rounded is-small is-clickable my-2 mx-auto py-1 px-2" id="documenter-search-query">Search docs (Ctrl + /)</button><ul class="docs-menu"><li><a class="tocitem" href="../../">Home</a></li><li><a class="tocitem" href="../../api/">API</a></li><li><span class="tocitem">Internals</span><ul><li><a class="tocitem" href="../varinfo/">Design of <code>VarInfo</code></a></li><li class="is-active"><a class="tocitem" href>Transforming variables</a><ul class="internal"><li><a class="tocitem" href="#Motivation"><span>Motivation</span></a></li><li><a class="tocitem" href="#What-do-we-need?"><span>What do we need?</span></a></li><li><a class="tocitem" href="#Working-example"><span>Working example</span></a></li><li><a class="tocitem" href="#From-internal-representation-to-model-representation"><span>From internal representation to model representation</span></a></li><li><a class="tocitem" href="#From-*unconstrained*-internal-representation-to-model-representation"><span>From <em>unconstrained</em> internal representation to model representation</span></a></li><li><a class="tocitem" href="#Why-do-we-need-both-to_internal_transform-and-to_linked_internal_transform?"><span>Why do we need both <code>to_internal_transform</code> and <code>to_linked_internal_transform</code>?</span></a></li><li><a class="tocitem" href="#Other-functionalities"><span>Other functionalities</span></a></li><li class="toplevel"><a class="tocitem" href="#Supporting-a-new-distribution"><span>Supporting a new distribution</span></a></li><li class="toplevel"><a class="tocitem" href="#TL;DR"><span>TL;DR</span></a></li></ul></li></ul></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><a class="docs-sidebar-button docs-navbar-link fa-solid fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Internals</a></li><li class="is-active"><a href>Transforming variables</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href>Transforming variables</a></li></ul></nav><div class="docs-right"><a class="docs-navbar-link" href="https://github.com/TuringLang/DynamicPPL.jl" title="View the repository on GitHub"><span class="docs-icon fa-brands"></span><span class="docs-label is-hidden-touch">GitHub</span></a><a class="docs-navbar-link" href="https://github.com/TuringLang/DynamicPPL.jl/blob/master/docs/src/internals/transformations.md" title="Edit source on GitHub"><span class="docs-icon fa-solid"></span></a><a class="docs-settings-button docs-navbar-link fa-solid fa-gear" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-article-toggle-button fa-solid fa-chevron-up" id="documenter-article-toggle-button" href="javascript:;" title="Collapse all docstrings"></a></div></header><article class="content" id="documenter-page"><h1 id="Transforming-variables"><a class="docs-heading-anchor" href="#Transforming-variables">Transforming variables</a><a id="Transforming-variables-1"></a><a class="docs-heading-anchor-permalink" href="#Transforming-variables" title="Permalink"></a></h1><h2 id="Motivation"><a class="docs-heading-anchor" href="#Motivation">Motivation</a><a id="Motivation-1"></a><a class="docs-heading-anchor-permalink" href="#Motivation" title="Permalink"></a></h2><p>In a probabilistic programming language (PPL) such as DynamicPPL.jl, one crucial functionality for enabling a large number of inference algorithms to be implemented, in particular gradient-based ones, is the ability to work with "unconstrained" variables.</p><p>For example, consider the following model:</p><pre><code class="language-julia hljs">@model function demo()
0 commit comments