summaryrefslogtreecommitdiff
path: root/notebooks/plot_UOT_1D.ipynb
diff options
context:
space:
mode:
authorRémi Flamary <remi.flamary@gmail.com>2020-04-22 11:39:23 +0200
committerRémi Flamary <remi.flamary@gmail.com>2020-04-22 11:39:23 +0200
commit135c011092cb442b0b874b565b6a2ca3f09234c4 (patch)
tree06a1a5209ee090824ae74af76bd2426295edc424 /notebooks/plot_UOT_1D.ipynb
parent5f679247f64fa1c8e277f34165850caea311a084 (diff)
remove notebooks and cleanup readme and doc
Diffstat (limited to 'notebooks/plot_UOT_1D.ipynb')
-rw-r--r--notebooks/plot_UOT_1D.ipynb197
1 files changed, 0 insertions, 197 deletions
diff --git a/notebooks/plot_UOT_1D.ipynb b/notebooks/plot_UOT_1D.ipynb
deleted file mode 100644
index e0289d1..0000000
--- a/notebooks/plot_UOT_1D.ipynb
+++ /dev/null
@@ -1,197 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {
- "collapsed": false
- },
- "outputs": [],
- "source": [
- "%matplotlib inline"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "\n",
- "# 1D Unbalanced optimal transport\n",
- "\n",
- "\n",
- "This example illustrates the computation of Unbalanced Optimal transport\n",
- "using a Kullback-Leibler relaxation.\n",
- "\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {
- "collapsed": false
- },
- "outputs": [],
- "source": [
- "# Author: Hicham Janati <hicham.janati@inria.fr>\n",
- "#\n",
- "# License: MIT License\n",
- "\n",
- "import numpy as np\n",
- "import matplotlib.pylab as pl\n",
- "import ot\n",
- "import ot.plot\n",
- "from ot.datasets import make_1D_gauss as gauss"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Generate data\n",
- "-------------\n",
- "\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {
- "collapsed": false
- },
- "outputs": [],
- "source": [
- "n = 100 # nb bins\n",
- "\n",
- "# bin positions\n",
- "x = np.arange(n, dtype=np.float64)\n",
- "\n",
- "# Gaussian distributions\n",
- "a = gauss(n, m=20, s=5) # m= mean, s= std\n",
- "b = gauss(n, m=60, s=10)\n",
- "\n",
- "# make distributions unbalanced\n",
- "b *= 5.\n",
- "\n",
- "# loss matrix\n",
- "M = ot.dist(x.reshape((n, 1)), x.reshape((n, 1)))\n",
- "M /= M.max()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Plot distributions and loss matrix\n",
- "----------------------------------\n",
- "\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZAAAADCCAYAAABnjpSEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3dd3hU1dbA4d8mBBJ6tdGRcklCCBJ6sVwQUAQRERAkIIhYEOsVr36gIIoVLIhyEQEFqaLoVbmCIEVEWqQEwQiooUgMRQQCKfv7Y01iCEmYhEnOlPU+zzxkzpyZs3IyzJqzy9rGWotSSimVX8WcDkAppZRv0gSilFKqQDSBKKWUKhBNIEoppQpEE4hSSqkC0QSilFKqQIo7HUB2VapUsbVr13Y6DKWUUi6bNm36w1pbNft2r0sgtWvXZuPGjU6HoZRSysUY80tO27UJSymlVIG4lUCMMV2MMbuMMfHGmFE5PP6wMSbOGLPVGLPcGFMry2MxxpifXLcYTwavlFLKORdMIMaYIGAy0BUIA/oZY8Ky7bYFiLbWRgILgRddz60EjAFaAi2AMcaYip4LXymllFPc6QNpAcRba/cAGGPmAj2AuIwdrLUrsuz/HTDA9XNn4Ctr7RHXc78CugAf5ifIlJQUEhISSE5Ozs/TlJ8JCQmhevXqBAcHOx2KUgr3Ekg14Lcs9xOQK4rcDAG+yOO51fITIEBCQgJly5aldu3aGGPy+3TlB6y1JCUlkZCQQJ06dZwOx/ulpMDWrfDtt7B7NzRuDK1bQ1gYBAU5HZ3yEx4dhWWMGQBEA1fn83nDgGEANWvWPO/x5ORkTR4BzhhD5cqVSUxMdDoU73biBIwaBTNmwKlTsi00FE6flp/Ll4cHHoCnnoISJRwLU/kHdzrR9wM1styv7tp2DmNMR+BJoLu19kx+nmutnWqtjbbWRletet5Q44zXdyNU5c/0PXABK1ZAZCRMmQJ9+sDcufDrr3DyJPz0E8ycCZ06wbhx0Lw5bNnidMTKx7mTQDYA9Y0xdYwxJYC+wJKsOxhjmgLvIMnjcJaHlgLXG2MqujrPr3dt8znjx48nPDycyMhIoqKiWL9+vdMhnadMmTIAHDhwgFtvvTXX/Y4dO8Zbb72V52u1adMGgJUrV9KtW7d8xfHxxx8TF5fZRcbo0aNZtmxZvl5D5YO18OijcN11EBwMq1fD9OmSRGrUAGOgXj0YOBAWLIAlSyAxEVq0gFdecTp65custRe8ATcAu4GfgSdd28YiCQNgGfA7EOu6Lcny3DuBeNdt8IWO1axZM5tdXFzceduK0rfffmtbtWplk5OTrbXWJiYm2v3791/066akpFz0a2RVunRpt/bbu3evDQ8Pz/Gx7DGtWLHC3njjjfmKIyYmxi5YsCBfz3GX0+8FrzRqlLVg7T33WHvypHvPSUqytlcved7kyYUbn/J5wEabU27IaaOTN29MIIsWLbLdunXL8bFly5bZqKgoGxERYQcPHpyZZGrVqmUTExOttdZu2LDBXn311dZaa8eMGWMHDBhg27RpY/v27WtTU1PtI488YsPDw23jxo3t66+/bq21duPGjbZDhw72qquustdff709cODAecfes2ePbdWqlY2IiLBPPvlkZgLJmiC2b99umzdvbps0aWIbN25sd+/ebfv06WNDQkJskyZN7KOPPmpXrFhh27VrZ2+66SZbv359a+3fyWjFihW2ffv29oYbbrANGjSwd999t01LSztnH2utXbBggY2JibFr1661FStWtLVr17ZNmjSx8fHx5ySUvM7X6NGjbdOmTW1ERITduXNnjufb6feC13nlFflvPHy4tenp+XtuSoq13btba4y18+YVTnzKL+SWQLyulMmFPPggxMZ69jWjomDSpNwfv/766xk7diwNGjSgY8eO9OnTh6uvvprk5GQGDRrE8uXLadCgAQMHDmTKlCk8+OCDeR4vLi6ONWvWEBoaypQpU9i3bx+xsbEUL16cI0eOkJKSwogRI/jkk0+oWrUq8+bN48knn2T69OnnvM7IkSO55557GDhwIJMnT87xWG+//TYjR46kf//+nD17lrS0NCZMmMD27duJdZ3IlStXsnnzZrZv357jCKfvv/+euLg4atWqRZcuXfjoo49ybSJr06YN3bt3p1u3buftc6HzVaVKFTZv3sxbb73Fyy+/zLRp0/I8jwFv1ix45BG49VZ4801pqsqP4sWln+T662HAAKhYUfpIlHKTljJxQ5kyZdi0aRNTp06latWq9OnThxkzZrBr1y7q1KlDgwYNAIiJiWHVqlUXfL3u3bsTGhoKwLJly7j77rspXlxyeaVKldi1axfbt2+nU6dOREVF8eyzz5KQkHDe66xdu5Z+/foB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\n",
- "text/plain": [
- "<Figure size 460.8x216 with 1 Axes>"
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<Figure size 360x360 with 3 Axes>"
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "pl.figure(1, figsize=(6.4, 3))\n",
- "pl.plot(x, a, 'b', label='Source distribution')\n",
- "pl.plot(x, b, 'r', label='Target distribution')\n",
- "pl.legend()\n",
- "\n",
- "# plot distributions and loss matrix\n",
- "\n",
- "pl.figure(2, figsize=(5, 5))\n",
- "ot.plot.plot1D_mat(a, b, M, 'Cost matrix M')"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Solve Unbalanced Sinkhorn\n",
- "--------------\n",
- "\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<Figure size 360x360 with 3 Axes>"
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "# Sinkhorn\n",
- "\n",
- "epsilon = 0.1 # entropy parameter\n",
- "alpha = 1. # Unbalanced KL relaxation parameter\n",
- "Gs = ot.unbalanced.sinkhorn_unbalanced(a, b, M, epsilon, alpha, verbose=True)\n",
- "\n",
- "pl.figure(4, figsize=(5, 5))\n",
- "ot.plot.plot1D_mat(a, b, Gs, 'UOT matrix Sinkhorn')\n",
- "\n",
- "pl.show()"
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.6.9"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 0
-}