Commit 94171dce authored by Philipp Arras's avatar Philipp Arras
Browse files

NIFTy7 -> NIFTy8

parent f09ee1b4
......@@ -66,7 +66,7 @@ switching to the NIFTy_8 branch:
In the following, we assume a Debian-based distribution. For other
distributions, the "apt" lines will need slight changes.
NIFTy7 and its mandatory dependencies can be installed via:
NIFTy8 and its mandatory dependencies can be installed via:
sudo apt-get install git python3 python3-pip python3-dev
pip3 install --user git+https://gitlab.mpcdf.mpg.de/ift/nifty.git@NIFTy_8
......
......@@ -38,7 +38,7 @@ Abstract base class
.. currentmodule:: nifty8.domains.domain
One of the fundamental building blocks of the NIFTy7 framework is the *domain*.
One of the fundamental building blocks of the NIFTy8 framework is the *domain*.
Its required capabilities are expressed by the abstract :py:class:`Domain` class.
A domain must be able to answer the following queries:
......@@ -242,7 +242,7 @@ Linear Operators
.. currentmodule:: nifty8.operators
A linear operator (represented by NIFTy7's abstract
A linear operator (represented by NIFTy8's abstract
:class:`~linear_operator.LinearOperator` class) is derived from
:class:`~operator.Operator` and can be interpreted as an (implicitly defined)
matrix. Since its operation is linear, it can provide some additional
......@@ -354,7 +354,7 @@ high-dimensional functions, which are often nonlinear.
Energy functionals
------------------
In NIFTy7 such functions are represented by objects of type
In NIFTy8 such functions are represented by objects of type
:class:`~energy.Energy`. These hold the prescription how to calculate the
function's :attr:`~energy.Energy.value`, :attr:`~energy.Energy.gradient` and
(optionally) :attr:`~energy.Energy.metric` at any given
......@@ -366,7 +366,7 @@ position domain, and metrics are represented by linear operator objects.
Energies are classes that typically have to be provided by the user when
tackling new IFT problems. An example of concrete energy classes delivered with
NIFTy7 is :class:`~minimization.quadratic_energy.QuadraticEnergy` (with
NIFTy8 is :class:`~minimization.quadratic_energy.QuadraticEnergy` (with
position-independent metric, mainly used with conjugate gradient minimization).
For MGVI and GeoVI, NIFTy provides :func:`~minimization.kl_energies.MetricGaussianKL`
......@@ -400,7 +400,7 @@ checking the quality of the current solution estimate and stopping once
it is sufficiently accurate. In case of numerical problems, the iteration needs
to be terminated as well, returning a suitable error description.
In NIFTy7, this functionality is encapsulated in the abstract
In NIFTy8, this functionality is encapsulated in the abstract
:class:`IterationController` class, which is provided with the initial energy
object before starting the minimization, and is updated with the improved
energy after every iteration. Based on this information, it can either continue
......
......@@ -15,7 +15,7 @@ napoleon_use_admonition_for_examples = True
napoleon_use_admonition_for_references = True
napoleon_include_special_with_doc = True
project = u'NIFTy7'
project = u'NIFTy8'
copyright = u'2013-2021, Max-Planck-Society'
author = u'Martin Reinecke'
......
......@@ -173,7 +173,7 @@ It only requires minimizing the information Hamiltonian, e.g. by a gradient desc
\frac{\partial \mathcal{H}(d,\xi)}{\partial \xi} = 0.
NIFTy7 automatically calculates the necessary gradient from a generative model of the signal and the data and uses this to minimize the Hamiltonian.
NIFTy8 automatically calculates the necessary gradient from a generative model of the signal and the data and uses this to minimize the Hamiltonian.
However, MAP often provides unsatisfactory results in cases of deep hierarchical Bayesian networks.
The reason for this is that MAP ignores the volume factors in parameter space, which are not to be neglected in deciding whether a solution is reasonable or not.
......@@ -224,7 +224,7 @@ Thus, only the gradient of the KL is needed with respect to this, which can be e
We stochastically estimate the KL-divergence and gradients with a set of samples drawn from the approximate posterior distribution.
The particular structure of the covariance allows us to draw independent samples solving a certain system of equations.
This KL-divergence for MGVI is implemented by
:func:`~nifty8.minimization.kl_energies.MetricGaussianKL` within NIFTy7.
:func:`~nifty8.minimization.kl_energies.MetricGaussianKL` within NIFTy8.
Note that MGVI typically provides only a lower bound on the variance.
......@@ -254,7 +254,7 @@ where :math:`\delta` denotes the Kronecker-delta.
GeoVI obtains the optimal expansion point :math:`\bar{\xi}` such that :math:`\mathcal{Q}_{\bar{\xi}}` matches the posterior as good as possible.
Analogous to the MGVI algorithm, :math:`\bar{\xi}` is obtained by minimization of the KL-divergence between :math:`\mathcal{P}` and :math:`\mathcal{Q}_{\bar{\xi}}` w.r.t. :math:`\bar{\xi}`.
Furthermore the KL is represented as a stochastic estimate using a set of samples drawn from :math:`\mathcal{Q}_{\bar{\xi}}` which is implemented in NIFTy7 via :func:`~nifty8.minimization.kl_energies.GeoMetricKL`.
Furthermore the KL is represented as a stochastic estimate using a set of samples drawn from :math:`\mathcal{Q}_{\bar{\xi}}` which is implemented in NIFTy8 via :func:`~nifty8.minimization.kl_energies.GeoMetricKL`.
A visual comparison of the MGVI and GeoVI algorithm can be found in `variational_inference_visualized.py <https://gitlab.mpcdf.mpg.de/ift/nifty/-/blob/NIFTy_8/demos/variational_inference_visualized.py>`_.
......
......@@ -5,7 +5,7 @@ Installation
In the following, we assume a Debian-based Linux distribution. For other
distributions, the "apt" lines will need slight changes.
NIFTy7 and its mandatory dependencies can be installed via::
NIFTy8 and its mandatory dependencies can be installed via::
sudo apt-get install git python3 python3-pip python3-dev
pip3 install --user git+https://gitlab.mpcdf.mpg.de/ift/nifty.git@NIFTy_8
......
......@@ -18,7 +18,7 @@
def _logger_init():
import logging
res = logging.getLogger('NIFTy7')
res = logging.getLogger('NIFTy8')
res.setLevel(logging.DEBUG)
res.propagate = False
ch = logging.StreamHandler()
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment