diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 758d32078..d400020f4 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -43,7 +43,7 @@ jobs: - name: Run all tests if: ${{ matrix.test_mark == 'all' }} run: | - pytest --cov=ott --cov-append --cov-report=xml --cov-report=term-missing --cov-config=setup.cfg --memray + pytest --cov=ott --cov-append --cov-report=xml --cov-report=term-missing --cov-config=setup.cfg --memray -n 0 - name: Upload coverage uses: codecov/codecov-action@v3 diff --git a/docs/conf.py b/docs/conf.py index ad588546a..fd00e79fd 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -54,6 +54,7 @@ 'sphinx.ext.mathjax', 'sphinx.ext.napoleon', 'sphinx.ext.viewcode', + 'sphinxcontrib.bibtex', 'nbsphinx', 'IPython.sphinxext.ipython_console_highlighting', 'sphinx_autodoc_typehints', @@ -75,6 +76,11 @@ pygments_lexer = 'ipython3' nbsphinx_execute = 'never' +# bibliography +bibtex_bibfiles = ["references.bib"] +bibtex_reference_style = "author_year" +bibtex_default_style = "alpha" + # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] diff --git a/docs/core.rst b/docs/core.rst index c39d9d3a6..efb98c9b9 100644 --- a/docs/core.rst +++ b/docs/core.rst @@ -52,6 +52,7 @@ Gromov-Wasserstein (Entropic and LR) :toctree: _autosummary gromov_wasserstein.gromov_wasserstein + gromov_wasserstein.GromovWasserstein gromov_wasserstein.GWOutput Neural Potentials diff --git a/docs/index.rst b/docs/index.rst index e5d2ba2ef..4eb9f4f2e 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -70,6 +70,7 @@ There are currently three packages, ``geometry``, ``core`` and ``tools``, playin geometry core tools + references Indices and tables ================== diff --git a/docs/notebooks/GWLRSinkhorn.ipynb b/docs/notebooks/GWLRSinkhorn.ipynb index 01ca9a716..fd8e71e90 100644 --- a/docs/notebooks/GWLRSinkhorn.ipynb +++ b/docs/notebooks/GWLRSinkhorn.ipynb @@ -1,260 +1,283 @@ { - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "name": "GWLRSinkhorn.ipynb", - "provenance": [ - { - "file_id": "1AYbnnVVudg2LCcmepy2CL8g00EzOx4Jx", - "timestamp": 1642072748057 - } - ], - "collapsed_sections": [], - "last_runtime": { - "build_target": "//learning/deepmind/public/tools/ml_python:ml_notebook", - "kind": "private" - } - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - }, - "language_info": { - "name": "python" - } + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "E_-S77MmiOou" + }, + "source": [ + "# Low-Rank Gromov-Wasserstein\n", + "\n", + "We try in this colab the low-rank (LR) Gromov-Wasserstein Solver, proposed by [Scetbon et. al'21b](https://arxiv.org/abs/2106.01128), a follow up to the LR Sinkhorn solver in [Scetbon et. al'21a](http://proceedings.mlr.press/v139/scetbon21a/scetbon21a.pdf).\n" + ] }, - "cells": [ - { - "cell_type": "markdown", - "source": [ - "# Low-Rank Gromov-Wasserstein\n", - "\n", - "We try in this colab the low-rank (LR) Gromov-Wasserstein Solver, proposed by [Scetbon et. al'21b](https://arxiv.org/abs/2106.01128), a follow up to the LR Sinkhorn solver in [Scetbon et. al'21a](http://proceedings.mlr.press/v139/scetbon21a/scetbon21a.pdf).\n" - ], - "metadata": { - "id": "E_-S77MmiOou" - } - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "id": "q9wY2bCeUIB0", - "executionInfo": { - "status": "ok", - "timestamp": 1642798297986, - "user_tz": -60, - "elapsed": 1, - "user": { - "displayName": "Marco Cuturi", - "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14Gj0UBKLFbdRpYhnFiILEQ2AgXibacTBJBwmBsE4=s64", - "userId": "04861232750708981029" - } - } - }, - "outputs": [], - "source": [ - "import jax.numpy as jnp\n", - "import jax\n", - "import matplotlib.pyplot as plt" - ] + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "executionInfo": { + "elapsed": 1, + "status": "ok", + "timestamp": 1642798297986, + "user": { + "displayName": "Marco Cuturi", + "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14Gj0UBKLFbdRpYhnFiILEQ2AgXibacTBJBwmBsE4=s64", + "userId": "04861232750708981029" + }, + "user_tz": -60 }, - { - "cell_type": "code", - "source": [ - "def create_points(rng, n, m, d1, d2):\n", - " rngs = jax.random.split(rng, 5)\n", - " x = jax.random.uniform(rngs[0], (n, d1))\n", - " y = jax.random.uniform(rngs[1], (m, d2))\n", - " a = jax.random.uniform(rngs[2], (n,))\n", - " b = jax.random.uniform(rngs[3], (m,))\n", - " a = a / jnp.sum(a)\n", - " b = b / jnp.sum(b)\n", - " z = jax.random.uniform(rngs[4], (m, d1))\n", - " return x, y, a, b, z\n", - "\n", - "rng = jax.random.PRNGKey(0)\n", - "n, m, d1, d2 = 24, 17, 2, 3\n", - "x, y, a, b, z = create_points(rng, n, m, d1, d2)" - ], - "metadata": { - "id": "PfiRNdhVW8hT", - "executionInfo": { - "status": "ok", - "timestamp": 1642798306380, - "user_tz": -60, - "elapsed": 3060, - "user": { - "displayName": "Marco Cuturi", - "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14Gj0UBKLFbdRpYhnFiILEQ2AgXibacTBJBwmBsE4=s64", - "userId": "04861232750708981029" - } - } - }, - "execution_count": 3, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "Create two toy point clouds of heterogeneous size, and add a third geometry to provide a fused problem (see [Vayer et al.'20](https://www.mdpi.com/1999-4893/13/9/212)).\n" - ], - "metadata": { - "id": "y4aQGprB_oeW" - } + "id": "q9wY2bCeUIB0" + }, + "outputs": [], + "source": [ + "import jax.numpy as jnp\n", + "import jax\n", + "import ott\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "executionInfo": { + "elapsed": 3060, + "status": "ok", + "timestamp": 1642798306380, + "user": { + "displayName": "Marco Cuturi", + "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14Gj0UBKLFbdRpYhnFiILEQ2AgXibacTBJBwmBsE4=s64", + "userId": "04861232750708981029" + }, + "user_tz": -60 }, + "id": "PfiRNdhVW8hT" + }, + "outputs": [ { - "cell_type": "code", - "source": [ - "geom_xx = ott.geometry.pointcloud.PointCloud(x)\n", - "geom_yy = ott.geometry.pointcloud.PointCloud(y)\n", - "geom_xy = ott.geometry.pointcloud.PointCloud(x, z) # here z is there only to create n x m geometry\n", - "prob = ott.core.quad_problems.QuadraticProblem(geom_xx, geom_yy, geom_xy=geom_xy, a=a, b=b)" - ], - "metadata": { - "id": "pN_f36ACALET", - "executionInfo": { - "status": "ok", - "timestamp": 1642798306574, - "user_tz": -60, - "elapsed": 53, - "user": { - "displayName": "Marco Cuturi", - "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14Gj0UBKLFbdRpYhnFiILEQ2AgXibacTBJBwmBsE4=s64", - "userId": "04861232750708981029" - } - } - }, - "execution_count": 4, - "outputs": [] + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING:absl:No GPU/TPU found, falling back to CPU. (Set TF_CPP_MIN_LOG_LEVEL=0 and rerun for more info.)\n" + ] + } + ], + "source": [ + "def create_points(rng, n, m, d1, d2):\n", + " rngs = jax.random.split(rng, 5)\n", + " x = jax.random.uniform(rngs[0], (n, d1))\n", + " y = jax.random.uniform(rngs[1], (m, d2))\n", + " a = jax.random.uniform(rngs[2], (n,))\n", + " b = jax.random.uniform(rngs[3], (m,))\n", + " a = a / jnp.sum(a)\n", + " b = b / jnp.sum(b)\n", + " z = jax.random.uniform(rngs[4], (m, d1))\n", + " return x, y, a, b, z\n", + "\n", + "rng = jax.random.PRNGKey(0)\n", + "n, m, d1, d2 = 24, 17, 2, 3\n", + "x, y, a, b, z = create_points(rng, n, m, d1, d2)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "y4aQGprB_oeW" + }, + "source": [ + "Create two toy point clouds of heterogeneous size, and add a third geometry to provide a fused problem (see [Vayer et al.'20](https://www.mdpi.com/1999-4893/13/9/212)).\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "executionInfo": { + "elapsed": 53, + "status": "ok", + "timestamp": 1642798306574, + "user": { + "displayName": "Marco Cuturi", + "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14Gj0UBKLFbdRpYhnFiILEQ2AgXibacTBJBwmBsE4=s64", + "userId": "04861232750708981029" + }, + "user_tz": -60 }, - { - "cell_type": "markdown", - "source": [ - "Solve the problem using the Low-Rank Sinkhorn solver." - ], - "metadata": { - "id": "dS49krqd_weJ" - } + "id": "pN_f36ACALET" + }, + "outputs": [], + "source": [ + "geom_xx = ott.geometry.pointcloud.PointCloud(x)\n", + "geom_yy = ott.geometry.pointcloud.PointCloud(y)\n", + "geom_xy = ott.geometry.pointcloud.PointCloud(x, z) # here z is there only to create n x m geometry\n", + "prob = ott.core.quad_problems.QuadraticProblem(geom_xx, geom_yy, geom_xy=geom_xy, a=a, b=b)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "dS49krqd_weJ" + }, + "source": [ + "Solve the problem using the Low-Rank Sinkhorn solver." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "executionInfo": { + "elapsed": 10229, + "status": "ok", + "timestamp": 1642798316999, + "user": { + "displayName": "Marco Cuturi", + "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14Gj0UBKLFbdRpYhnFiILEQ2AgXibacTBJBwmBsE4=s64", + "userId": "04861232750708981029" + }, + "user_tz": -60 }, - { - "cell_type": "code", - "source": [ - "solver = ott.core.gromov_wasserstein.GromovWasserstein(rank=6)\n", - "ot_gwlr = solver(prob)" - ], - "metadata": { - "id": "bVmhqrCdkXxw", - "executionInfo": { - "status": "ok", - "timestamp": 1642798316999, - "user_tz": -60, - "elapsed": 10229, - "user": { - "displayName": "Marco Cuturi", - "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14Gj0UBKLFbdRpYhnFiILEQ2AgXibacTBJBwmBsE4=s64", - "userId": "04861232750708981029" - } - } - }, - "execution_count": 5, - "outputs": [] + "id": "bVmhqrCdkXxw" + }, + "outputs": [], + "source": [ + "solver = ott.core.gromov_wasserstein.GromovWasserstein(rank=6)\n", + "ot_gwlr = solver(prob)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "vxDoBrusUHmq" + }, + "source": [ + "Run it with entropic-GW for the sake of comparison" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "executionInfo": { + "elapsed": 5119, + "status": "ok", + "timestamp": 1642798322374, + "user": { + "displayName": "Marco Cuturi", + "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14Gj0UBKLFbdRpYhnFiILEQ2AgXibacTBJBwmBsE4=s64", + "userId": "04861232750708981029" + }, + "user_tz": -60 }, - { - "cell_type": "markdown", - "source": [ - "Run it with entropic-GW for the sake of comparison" - ], - "metadata": { - "id": "vxDoBrusUHmq" - } + "id": "i6viNhAp8txm" + }, + "outputs": [], + "source": [ + "solver = ott.core.gromov_wasserstein.GromovWasserstein(epsilon=0.05)\n", + "ot_gw = solver(prob)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "w35fLv3oIwLW" + }, + "source": [ + "One can notice that their outputs are quantitatively similar." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "colab": { + "height": 545 }, - { - "cell_type": "code", - "source": [ - "solver = ott.core.gromov_wasserstein.GromovWasserstein(epsilon=0.05)\n", - "ot_gw = solver(prob)" - ], - "metadata": { - "id": "i6viNhAp8txm", - "executionInfo": { - "status": "ok", - "timestamp": 1642798322374, - "user_tz": -60, - "elapsed": 5119, - "user": { - "displayName": "Marco Cuturi", - "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14Gj0UBKLFbdRpYhnFiILEQ2AgXibacTBJBwmBsE4=s64", - "userId": "04861232750708981029" - } - } - }, - "execution_count": 6, - "outputs": [] + "executionInfo": { + "elapsed": 785, + "status": "ok", + "timestamp": 1642798323297, + "user": { + "displayName": "Marco Cuturi", + "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14Gj0UBKLFbdRpYhnFiILEQ2AgXibacTBJBwmBsE4=s64", + "userId": "04861232750708981029" + }, + "user_tz": -60 }, + "id": "HMfUh6uE8kdG", + "outputId": "3feef227-b93c-4783-fba0-09e366f416ea" + }, + "outputs": [ { - "cell_type": "markdown", - "source": [ - "One can notice that their outputs are quantitatively similar." - ], - "metadata": { - "id": "w35fLv3oIwLW" - } + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPsAAAEICAYAAACZA4KlAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAAAfvElEQVR4nO2de7QcVZ3vP9/zyDshJCcJMSARiKPAQBzia2TxEIng44LjvTyGJXpHxbnAXXqdYRbOiAKiMjoj6tLLCMrwcEAZhJEZeYgZkGFGkETDGwQhXBISQsSQkPfjd/+o3aHSp6v3PufUOae7+vdZq1Z31/7Vrl3d/au9a9evfl+ZGY7jVJ+u0W6A4zgjgzu743QI7uyO0yG4sztOh+DO7jgdgju743QI7uwFSPqIpHtGux2OUxbD6uySlkl613Duo4oM5kQjaaykKyStk7RK0qeb2H5Y0pJgu1zSVyT15Or5nqRnJa2XtFTS8XXbf0zSU5JekXSbpNfkym4N62vLVkkPNWjDkZJM0kV1x72jbvujcuVzJd0paaOkx/P/rWbH5GRUtmfvwB/6fGAesC9wNPBXko4rsJ0AfAroA94KHAP8ZSjrAZ4DjgT2AD4LXC9pLkBwvi8BJwDTgGeA62oVm9nxZjaptgD/BfxzfueSeoFvAPc1aNsv8tub2V25suuAXwPTgb8BbpA0I+GYHAAzG7YFWAa8q8H6scDXgefD8nVgbCj7OfDB8P4dgAHvDZ+PAZYW7Ot84Abg+8A64GPAW4BfAGuBlcC3gDG5bQz4c+DJYPNtQKHsI8A9OduvAvcAezTYdzfw18BvgfXAEmCfUPbHwP3Ay+H1j3PbfQR4OmzzDHAa8EZgM7ADeAVYm/hdPw8szH3+AvCDxG0/Dfxrk/IHc7/J3wHfzpW9JnyP+zfYbm44jrl1688FvgJcCVxU933cU9CG1wNbgMm5df8B/PlgjqkTl9Hq2f8GeBswHziUzCk/G8p+DhwV3h9J5gxH5D7/vEm9J5A5/FTgn8j+aP+H7Gz/drKTxZl127wPeDNwCHAS8O58oaQuSZeH8oVm9nKD/X4aOBV4DzAF+DNgo6RpwE+Ab5L1Rl8DfiJpuqSJYf3xZjaZ7KSw1MweIzsB1Xq4qaEdfyrpwUYHLWlPYDbwQG71A8BBhd/U7hwBPFJQ9ywyR8uXq8H7gxtsfjrwH2a2LFffvmTfz4UFbXmTpDWSfiPpvNwI7SDgaTNbn7NtdoyFx9SpjJaznwZcaGarzexF4ALgQ6Hs52RODdkP9uXc55iz/8LM/sXMdprZJjNbYmb3mtn28If7Tq6uGheb2Voz+3/AnWQnoBq9ZEPHacD7zWxjwX4/BnzWzJ6wjAfM7HfAe4Enzeya0IbrgMeB94ftdgIHSxpvZivNrPDPaWbXmtkhBcWTwmv+RPQyMLmovhqS/gxYQNZj15f1kp00rzKzx8Pq24CTJB0iaTzwObKefUKD6k8n673zfBM4z8xeaWB/N9lJYybwQbIT6DmhbFLd8UHBMTY7pk5mtJz9NcCzuc/PhnWQDbtfH3qU+cDVwD6S+shGAHc3qfe5/AdJr5f0b2HCah3ZtWZf3Tarcu838qrjABxANlq4wMy2NtnvPmRD+Hrqj5PweY6ZbQBOJuvFV0r6iaQ3NNlHM2qOMyW3bgrZ5UEhkk4kO5keb2Zr6sq6gGuArcDZtfVm9jPg88CPyC7TloX9LK/b/nBgL7KRVm3d+8mG4T9s1B4ze9rMngkn64fIev//njvGKXWb9DvGZsfU6YyWsz9PNpFU47VhHaH3XAJ8Eng4ONl/kQ2Vfxv5Aesf4buUrCedZ2ZTyK6r1W+rYh4D/idwq6Q/aGL3HLB/g/X1xwnZsa4AMLPbzexYsiH448DlBcfRFDP7PdmcxKG51YfSZBgbJu8uJxuxPFRXJuB7wCyya/Vtdfv7tpnNM7NZZE7fAzxct4sPAzfW9eDHAAvCyXcV2cnuU5J+XHRovPp7PQLsJynfk+92jM2OyWFEJuiOB8bllh7gIjIHnkHW097D7hM1XyKbZDsvfD4rfP52k32dD3y/bt0vyYaZAt4APMHuk24GHJD7fGWtHeQmi8j+uM/RYBIqlJ9DNok1L+zrELJr9OlkE39/Go775PC5j8yRTgAmkp10LwB+Huo7Lnx3Y2Lfca4NF5Nd4uwZjnUlcFyB7TuB3wFHFJT/A3AvMKlB2TiyobbITlx3AV+qsxlPNsR+Z936yWS9fW35IXAJMC2UHw/MCu/fQHYC+Xxu+3vJhubjgA+E73JGyjH5YiPi7Fa3XBR+rG+GP+TK8H5cbrt3B9sjw+eDw+eTm+zrfPo7+xFkPeYrZDO3FzIIZw+fP042BJ/bYN/dZBOMz5ANK+8H9g5lh5ONVF4Or4eH9bODc74c/rR3AQeGsjFkE3svAWvCutOAR5oc/1jgCrKT4gvAp3Nlrw3fwWvD5zuB7WFdbbk1lO0bvpfNdeWnhfKpZCe2DWSXQF8Guuvacmr4rhT5f+z6vsPnvwtt30A2MXsh0Jsrnxu+p01kJ+535coKj8mXbKndZnIcp+JUNqjGcZzdcWd3nA7Bnd1xOgR3dsfpEEb0YZG+vj6bu+/cpjZbt+2I1jOmt7ukFlWXdes3R22mTB4XtdmZOIHbpYGELwwvy55dxpo1a4bUoGk6wLZRFDC5O6+w8nYzK3roqGUYUWefu+9c7rvvl01tVjzfKPR8d+a8Zo+ymlRZ7lj0VNTm2GMOiNps3rwtagMwblxvkt1I8Na3vmXIdWxjIwv08STbu+zC+qjMlmRIw3hJx0l6IjzbfG5ZjXKclkCJS5sw6J5dUjfZI6HHksVF3y/pZjN7tKzGOc5oIUBdiZ68c1ibUhpD6dnfAjxl2cMLW4EfkIV/Ok77I1Di0i4MxdnnsPtTZsvDut2QdIakxZIWv7jmxSHsznFGFnUpaWkXhv3Wm5ldZmYLzGzBjL4Z8Q0cpyVIc/R2cvahzMavIHuOu8beYZ3jtD+ivcboCQylZ78fmCfpdZLGAKcAN5fTLMcZfap2zT7ont3Mtks6G7id7BHPK6xJWqVUUu6h79wZD/RYty4eVDJ16vikNpXFAw+ujNrsM6c+GUt/pk2fGLVJuYeeQpn3z597bm3UZs6c+O9/yy2PNy1f+/Km1CYVknXsbeTJCQwpqMbMbgFuKaktjtNaVMvXPTbecRoi6OpW0hKtKhJ8FoQ5fhjK78vl6H9LEOlYKukBSR/IbbNM0kOhbHHKIXWakILjpFPCMD4x+OyjwO/N7ABJpwB/S5bC7GFgQbhkng08IOlfzWx72O5oG0BSTe/ZHaeAkiboUoLPTgCuCu9vAI6RJDPbmHPscQwwEWk97uyO0wgN6D57Xy1wLCxn5GpKCT7bZROc+2WyZKVIequkR4CHyNRvas5vwE+Dvt0ZJODDeMcpIn0Yv8bMFgxHE8zsPuAgSW8ErpJ0q5ltJktcukLSTOAOSY+bWTNNBe/ZHacRArq6lLRESAk+22UT5K72IEuLvQvLZMFeIchsmVlNe2A1cBPZ5UJT3Nkdp4hyHnFNCT67mUybADIFnH83Mwvb1KS09yXLpb9M0sSaWEbQDFxIf5GOfrTcMH7Dhi1Rm4kTx0ZtRjpgJoVDD5k9YvtauXJd1Gb27HgAz/bt8cxBAD098exB++wzNamuGO973xubln/hCyX89hrAI65NKAo+k3QhsNjMbiZT37lG0lNkWgGnhM0PB86VtI3sQdozzWyNpP2Am0LQTw9wrZndFmtLyzm747QMJQXVNAo+M7PP5d5vBv5Hg+2uIdPbq1//NLtLfSXhzu44BXi4rON0BHJnd5xOQAIlhMK2E+7sjlNAxTp2d3bHKaRi3u7O7jiNaLPEFCm4sztOAe2UXy6FlnP2lICZFFKUTEZaxWTTpq1Rm21b40EsU/aIB42kBMykkBIsk8q6hAwyEyfFf/9fLX2+afmGjfHvOYmKde0t5+yO0wpISXHvbYU7u+MUUbEnR9zZHacAD6pxnA7Bnd1xOgGBfBjvONVnQCqubYI7u+M0oqTn2VsJd3bHaUj1QuhG1Nl3mrFly/amNmPHxpv0+5c2Rm32mDouarN5UzzwBuDLFyyK2nzuiwvjFSUkAh4/YUzUJiV7TMo94pdeige59PXFpaYAbr45rvz13vc2zzADae2eH8n4M2F8OcFSFfN179kdpwgfxjtOJ1BByWZ3dsdpgCBJx62dqNidRMcpkXJSSQ+XsGPTOhvhzu44jVAWQZeyNK3mVWHH44EDgVMlHVhntkvYEbiETNgRXhV2nA8cB3xHUk9inf1wZ3echgxI660ZwyHsmFJnP9zZHaeAAai4jrSwY0qd/fAJOscpokWFHQdb14g6uwS9vUMfTPSOiWdPsYQAlu07dibt74z//faoTUowyK8fXBW1OWx+XCKqd0z8Z7OEL2DKlHKyAgEcccR+caOE3yTlSbPu7sh/qIRbZlJps/EDEXZc3kzYUVJN2DGlzn74MN5xihjAOL4JpQs7JtbZjyH17JKWAeuBHcD24RrKOM5oUMbz7MMh7Bja1q/OWFvKGMYfXWuA41SGEp9nL1vYsajOGD5B5zgNqd5Tb0M9dxnwU0lL6m437ELSGbVbEmvW+ADAaRPCBF3K0i4M1dkPN7M/IovkOUvSEfUGZnaZmS0wswV9fX1D3J3jjCDlTNC1DENydjNbEV5XAzeRRfY4TttTe+itQr4+eGeXNFHS5Np7YCFZLK/jVIKSwmVbhqFM0M0Cbgq3J3qAa83stmYbCNHVNfQpzkkJEkEbNmwppZ6B2MU49OBZUZu1azdHbWbtNTlhbyUEpwyAqVPjklSrV6+P2uy554SozY03PNi0PCWTUZR267YTGLSzm9nTwKEltsVxWoqK+brfenOchgi6Shz5tALu7I5ThPfsjlN9XCTCcToI13pznE5AAu/ZHaczqFjH7s7uOA0RyGfjHacz8J59mFl052+jNsccvX/UZuLEeNRbSuomKG+iZmJCJF6KTQqfPPW6qM03rjs1arN2bVwPDtIi6GbOTIn8i3PyqW9qWv61r8ej8GL4bLzjdBIV69rd2R2nEQkCEO2GO7vjFNBOiSlScGd3nCIq1rNX696C45RFSDiZskSrGryw47Eh5dtD4fWduW3uCnXWhB9nxtrhPbvjNCDLVFOG2MQuEcZjyWSa7pd0s5k9mjPbJewo6RQyYceTgTXA+83seUkHk6WOzss8nWZmi1Pb4j274xTRpbSlOUMRdvy1mT0f1j8CjJc06Huz7uyO04hEuebQ+w+bsGOODwK/MrN8CqZ/DEP485QwDGm5YXxvb1zHrSyqdmslz7g9xpVST8XiSgaE0mfjh03YEUDSQWRD+4W51aeZ2YqQB/JHwIeAq5vV4z274xQwgJ69GQMRdqRe2FHS3mSZm083s13hpbnMzuuBa0nI7OzO7jiNSEwjnTA4HIqw41TgJ8C5Zvafu5om9UjqC+97gfeRkNm55YbxjtMylHANM0Rhx7OBA4DPSappwy0ENgC3B0fvBn4GXB5rizu74zSgrFtvMCRhx4uAiwqqPWyg7XBnd5xGqL0EIFJwZ3ecAtzZHadDcGd3nE5A1YvDaDlnP+LwuVGbLZu3RW3GjuuN2qRkc4G0jC4p7NwZz4zTVVJvcs5FC+NGCUzZI56BprJUy9dbz9kdpxUocza+VXBnd5wCShAcbinc2R2nEZ6WynE6h4r5uju74zTCr9kdp4OomK+7sztOEd6zO04nIOhyZx88hrF9+46mNj098Uw1OxNlm2KkBsvcseipqE2KJFVKwEyKJFVKcE5f38SozYYNW6I2KTJaAE8+tSZqM++AvqS6WoHsmn20W1Eu0TuJkq6QtFrSw7l10yTdIenJ8Lrn8DbTcUaekpJXtAwpYQNXAsfVrTsXWGRm84BF4bPjVIqS0lK1DFFnN7O7ybJn5Mmnvr0KOLHcZjnO6FO1nn2w1+yzzGxleL8KmFVkGNLqngGwzz6vHeTuHGeEqWDyiiFH/1o2o1Q4Y2Rml5nZAjNbMGNG+0zQOJ1NLaimo4bxBbwgaTZAeF1dXpMcpzWo2jB+sM6eT337YeDH5TTHcVqHsnr2YRJ2PCysf0rSN1MUYVJuvV0H/AL4A0nLJX0UuBg4VtKTwLvCZ8epDiXljc8JOx4PHAicKunAOrNdwo7AJWTqL/CqsOMfknWq1+S2uRT4ODAvLPV3zPoRnaAzs6LIk2Ni29YjlBQ0E2Pb1uaBOQA93dujNnf8LB4sA/Ce97whyS7GV758Z9TmzLPfHrWZNDku7bRxw9aoTWrATAopATObUzIMjY3PGcfqKSvoqqQR+i5hRwBJNWHHvIrrCcD54f0NwLdqwo45m7yw4zRgipndG+q8muyO2K3NGlKxx/MdpxxEFvGYsjDywo5zQj3N6uyHx8Y7TgEDmGkfDWHHAeM9u+MUUNJs/HAIO64I9TSrsx/u7I7TiIHpszejdGHHENC2TtLbwiz86STcEXNnd5wG1J56G2rPHq7Ba8KOjwHX14QdJf23YPY9YHoQdvw0rz5rkhd2XBqWmaHsTOC7wFPAb4lMzoFfsztOIWUFzAyHsKOZLQYOHkg73Nkdp4CyBDtaBXd2x2mEyz8NP9/9zr1Rm4994m2l7KusYJlU/uozR4/Yvt4/9UtRm0Xbzo/avLBqfdL+Zu01OWozLkGSK4Xx48c0LS8tnVS1fL31nN1xWgFPJe04HYQ7u+N0ApJP0DlOJ1DF7LLu7I5TgA/jHadDcGd3nE6gzVJOpeDO7jgFeM8+BHaasSWSZSQlYGbt2k1Rmz32iGdzSf0xz/n4jVGbi//hxKhNd3f8uaMdO3ZGbVLkn1ICZlavjgfMpATLAFz/g6VRm5NOmZ9UVysgoKvbnd1xqk+bpYlOwZ3dcQqomK+7sztOEd6zO04H4LHxjtNBVMzX3dkdpyECdVUra5s7u+MU4D2743QE1ZNsHlFn75IYW0K2kvHj43W8sn5L1GbylHjgDcBXL/+TJLsYl37rP6M2J586P2ozbfrEEloDM2emBcykkBIwk5L1ZuasSVGbBx9a1bR846a4zFSMMhVaJR0HfAPoBr5rZhfXlY8FrgYOI8sXf7KZLZM0nUwO6s3AlWZ2dm6bu4DZQC3CbKGZNVVT9p7dcQooYzY+J+x4LJlM0/2SbjazvNbbLmFHSaeQqb+cDGwGziPLItsok+xpIctsEtWagXCcEhmA1lszdgk7mtlWoCbsmOcE4Krw/gbgmCDsuMHM7iFz+qEfTxmVOE4VGYAizEgIOzbiH4NwxHkp+uw+jHecBmhgqaSHVdixgNPMbIWkycCPgA+RXfcX4j274xTQCsKORZjZivC6HriW7HKhKe7sjtOQ0Rd2LGyZ1COpL7zvBd4HPBxriA/jHaeAMmbjzWy7pJqwYzdwRU3YEVhsZjeTCTteE4QdXyI7IdTasAyYAoyRdCKZRvuzwO3B0buBnwGXx9rizu44DZDKS14xWGHHUDa3oNrDBtqOtnT2MWO6ozZjx8YPbdPGrUn7Gz+hudxQKv/r7HeUUk8KO3fGM950jXDsd2rWmxiHHjK7afmEhKCrFDxc1nE6BFVM7C16apd0haTVkh7OrTtf0oqcQPx7hreZjjMKKHFpE1LGcVcCxzVYf4mZzQ/LLQ3KHaetKWk2vmWIDuPN7G5Jc0egLY7TOlQwb/xQZmjOlvRgGObvWWQk6YxaGOGLa14cwu4cZ+QQaXHx7ST+OFhnvxTYH5gPrAT+vsjQzC4zswVmtmBG34xB7s5xRp6OG8Y3wsxeqL2XdDnwb6W1yHFahDby4yQG1bNLyt/o/AAJoXqO01aoA3t2SdcBR5E9xrcc+DxwlKT5gAHLgE8MXxMHR4pEUlnBMqls27o9atPdEw8YSrlOHOmAmRRSpK1SJLK2b9/RtNyI//YxOlKf3cxObbD6e8PQFsdpKboq5u0eQec4BVTM193ZHaeIdroeT8Gd3XEaUGZ22VbBnd1xGtJeM+0puLM7TgEV83V3dscpwhVhHKcTGFh22bagLZ09JWBm44Z4FppU+aeyuPf+5VGbPzxwZtRm6p4TymjOiLN69StRm70SstncF/keNyT89jE6MqjGcTqVqvXsrRdT6TgtQlmJaiQdJ+kJSU9JOrdB+VhJPwzl99XyR0iaLulOSa9I+lbdNodJeihs880URRh3dscpoIzn2XPCjscDBwKnSjqwzmyXsCNwCZmwI7wq7PiXDaq+FPg4MC8sjbJJ7X48MQPH6URSn3hL6FBLF3YMT51OMbN7g5jE1cCJsYa4sztOASXJPw2HsOOcUE+zOvvhE3SOU8AA5uf6JOV10i8zs8vKb9HQcGd3nAJKUnEdiLDj8kRhxxWhnmZ19sOH8Y5TQEnD+NKFHc1sJbBO0tvCLPzpwI9jDRnRnt3M2LateZaR3t54ppZX1m+J2kyYGM9C0+T73I3vX7U4anPa6XF57tfMjgeMjBkT/0l2bE/I+NITP4+vX7c5apMaeHT/knjA0CEH75VUV4xDD57VtHx8CfJPA9RnL2Q4hB3N7FHgTDJNh/HArWFpig/jHaeAsoJqhkPY0cwWAwcPpB3u7I5TQMUC6Pya3XE6Be/ZHaeAqvXs7uyOU0DVJJvd2R2nARKoYhe57uyO0xB5z+44HUO1fN2d3XGKqJivj6yzS4pGyG3ZvC1aT29v/GKqJyGC7IP7FSpN78aNzzR6nHjg7DVrUtRmXEL0V4rW25JfR0OlOexN0QelkvTZAN582N5Rm5SIxZRAlkmTm0f1dZekc1e1TDXesztOARXzdXd2x2lElnCyWt5esZsLjuMU4T274zTCtd4cp3PwYbzjOG2J9+yO0xDRVbGe3Z3dcYqolq+3nrOPHRcPKkkJzvjdmg1Rm7KCZVJZuSqudTZ2bDwt1z57T43apATMpNDdXd6V3m+eXBO12X+/aVGbr3317qblq1atT25TEVXUeov+kpL2CRI0j0p6RNInw/ppku6Q9GR43XP4m+s4I0dZ8k+tQsppezvwF2Z2IPA24KwgX3MusMjM5gGLwmfHqQa1rr2E9LKtQtTZzWylmf0qvF8PPEamPpGXrLmKBPkZx2knOrFn30VQl3wTcB8wK+SvBlgFNMzvK+kMSYslLX5xzYtDaavjjCjqUtISrWeQKq6h7DNh/ROS3p1bvyyouC6tU6MpJNnZJU0CfgR8yszW5ctCQvuGs2ZmdpmZLTCzBTP6ZqTuznFGnTJ69qGouAa7U4CDyFRa/2+or8bRZja/iRrNbiQ5u6ReMkf/JzO7Max+IahJ1lQlV6fU5TjtQImX7INWcQ3rf2BmW8zsGeCpUN+gSJmNF5lixWNm9rVcUV6y5sMkyM84TnuR3Lf31S5Vw3JGrpKhqLg229aAn0paUre/QlLus78D+BDwkKSlYd1fAxcD10v6KPAscFLKDh2nXRjARHszYcfh4nAzWyFpJnCHpMfNrGkAQtTZgxh80WEfM5DWGRbNfJISxLE9Qetset/E5HbFWL785ajNnDlTojYpASMpAUM7d8ZtUrLZbN26PWqToj0HsHbtpqjN6+f1RW1SHj75i3OObFp+w7/EMwLFG1LaXbWhqLgWbmtmtdfVkm4iG943dXZ/EMZxCinl5ttQVFxvBk4Js/WvA+YBv5Q0UdJkAEkTgYXAw7GGtFy4rOO0CmX07ENRcQ121wOPkgW3nWVmOyTNAm4Ko6Ae4Fozuy3WFnd2xxlmhqji+kXgi3XrngYOHWg73Nkdp4h2Co9LwJ3dcRogV4RxnM6hjZ5xScJn4x2nQ/Ce3XEaUcHsFSMr/4RKyXySEgzS3R3PeHP+Z25P2t8FFx+XZBfjid/En/rb73XxwJsU+au1v98YtZm654SoTSpTp46P2qRISXV3xx2sK2pTjpNWy9W9Z3ecYirm7e7sjlNAxXzdnd1xCvFrdsfpDKrl6u7sjlNMxbzdnd1xGpA9z1Ytb3dnd5wiquXr7uyO05D2SgmfRFs6+4QJY6I2mzdti9qUFSyTyt4J2WzWrdsctZk+PZ6Fp8yAmbJ4+eX4sU2ZMjZq8+93Pt20POU7TKNa3t6Wzu44I0G1XN2d3XGKqZi3u7M7TgEV83V3dsdpTPVm6NzZHaeAivm6J69wnOFmmIQdm9bZCHd2x2lAlrtCSUvTeoZB2DGxzn64szvO8DIcwo4pdfZjRK/Zl/xqyZqe3u5nc6v6gDUj2YaSaMd2d1Kb9x3qjpf8asntPb3dcb2qjHF1GumXmdll4X0jcca31m2/m7CjpLyw471129aEHWN19mNEnd3MdhNol7R4FATxhkw7ttvbPDDMbGTDK0cAH8Y7zvAyEGFHEoUdU+rshzu74wwvpQs7JtbZj9G+z35Z3KQlacd2e5tHgeEQdgRoVGesLUrRA3ccp/3xYbzjdAju7I7TIYyasw8m3G+0kbRM0kOSltbdV20pJF0habWkh3Prpkm6Q9KT4XXP0WxjPQVtPl/SivB9L5X0ntFsY7szKs4+2HC/FuFoM5vf4vesryQLr8xzLrDIzOYBi8LnVuJK+rcZ4JLwfc83s1tGuE2VYrR69kGF+zlpmNndZLO6efIhmVcBJ45km2IUtNkpkdFy9kYhhHMKbFsJA34qaYmkM0a7MQNklpmtDO9XAbNGszED4GxJD4ZhfktderQbPkE3MA43sz8iu/w4S9IRo92gwRACNtrhnuulwP7AfGAl8Pej2po2Z7ScfVDhfqONma0Ir6uBm8guR9qFFyTNBgivq0e5PVHM7AUz22FmO4HLaa/vu+UYLWcfVLjfaCJpoqTJtffAQuDh5lu1FPmQzA8DPx7FtiRROzkFPkB7fd8tx6iEyxaFEI5GWwbALOCmkKygB7jWzG4b3SY1RtJ1wFFAn6TlwOeBi4HrJX0UeBY4afRa2J+CNh8laT7ZJccy4BOj1b4q4OGyjtMh+ASd43QI7uyO0yG4sztOh+DO7jgdgju743QI7uyO0yG4sztOh/D/AY3P7fWj3IGbAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" }, { - "cell_type": "code", - "source": [ - "def plot_ot(ot, leg):\n", - " plt.imshow(ot.matrix, cmap='Purples')\n", - " plt.colorbar()\n", - " plt.title(leg + \" cost: \" + str(ot.costs[ot.costs > 0][-1]))\n", - " plt.show()\n", - "\n", - "plot_ot(ot_gwlr, 'Low rank')\n", - "plot_ot(ot_gw, 'Entropic')" - ], - "metadata": { - "colab": { - "height": 545 - }, - "id": "HMfUh6uE8kdG", - "executionInfo": { - "status": "ok", - "timestamp": 1642798323297, - "user_tz": -60, - "elapsed": 785, - "user": { - "displayName": "Marco Cuturi", - "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14Gj0UBKLFbdRpYhnFiILEQ2AgXibacTBJBwmBsE4=s64", - "userId": "04861232750708981029" - } - }, - "outputId": "3feef227-b93c-4783-fba0-09e366f416ea" - }, - "execution_count": 7, - "outputs": [ - { - "output_type": "display_data", - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {} - }, - { - "output_type": "display_data", - "data": { - "image/png": "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\nTkSuQmCC\n", - "text/plain": [ - "
" - ] - }, - "metadata": {} - } + "data": { + "image/png": "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\n", + "text/plain": [ + "
" ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" } - ] + ], + "source": [ + "def plot_ot(ot, leg):\n", + " plt.imshow(ot.matrix, cmap='Purples')\n", + " plt.colorbar()\n", + " plt.title(leg + \" cost: \" + str(ot.costs[ot.costs > 0][-1]))\n", + " plt.show()\n", + "\n", + "plot_ot(ot_gwlr, 'Low rank')\n", + "plot_ot(ot_gw, 'Entropic')" + ] + } + ], + "metadata": { + "colab": { + "collapsed_sections": [], + "last_runtime": { + "build_target": "//learning/deepmind/public/tools/ml_python:ml_notebook", + "kind": "private" + }, + "name": "GWLRSinkhorn.ipynb", + "provenance": [ + { + "file_id": "1AYbnnVVudg2LCcmepy2CL8g00EzOx4Jx", + "timestamp": 1642072748057 + } + ] + }, + "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.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 1 } diff --git a/docs/notebooks/LRSinkhorn.ipynb b/docs/notebooks/LRSinkhorn.ipynb index f83e4cf41..3b8a4c9bd 100644 --- a/docs/notebooks/LRSinkhorn.ipynb +++ b/docs/notebooks/LRSinkhorn.ipynb @@ -1,346 +1,375 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "TIY5iqnMT3Wr" - }, - "source": [ - "#Low-Rank Sinkhorn" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "E_-S77MmiOou" - }, - "source": [ - "We experiment with the low-rank (LR) Sinkhorn solver, proposed by [Scetbon et. al](http://proceedings.mlr.press/v139/scetbon21a/scetbon21a.pdf) as an alternative to the Sinkhorn algorithm. \n", - "\n", - "The idea of that solver is to compute optimal transport couplings that are low-rank, by design. Rather than look for a $n\\times m$ matrix $P_\\varepsilon$ that has a factorization $D(u)\\exp(-C/\\varepsilon)D(v)$ (as computed by the Sinkhorn algorithm) when solving a problem with cost $C$, the set of feasible plans is restricted to those adopting a factorization of the form $P_r = Q D(1/g) R^T$, where $Q$ is $n\\times r$, $R$ is $r \\times m$ are two thin matrices, and $g$ is a $r$-dimensional probability vector." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "q9wY2bCeUIB0" - }, - "outputs": [], - "source": [ - "import jax.numpy as jnp\n", - "import jax\n", - "import matplotlib.pyplot as plt\n", - "plt.rcParams.update({'font.size': 18})" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "PfiRNdhVW8hT" - }, - "outputs": [], - "source": [ - "import ott\n", - "\n", - "def create_points(rng, n, m, d):\n", - " rngs = jax.random.split(rng, 4)\n", - " x = jax.random.normal(rngs[0], (n,d)) + 1\n", - " y = jax.random.uniform(rngs[1], (m,d))\n", - " a = jax.random.uniform(rngs[2], (n,))\n", - " b = jax.random.uniform(rngs[3], (m,))\n", - " a = a / jnp.sum(a)\n", - " b = b / jnp.sum(b)\n", - " return x, y, a, b" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "y4aQGprB_oeW" - }, - "source": [ - "Create an OT problem comparing two point clouds\n" - ] - }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "TIY5iqnMT3Wr" + }, + "source": [ + "# Low-Rank Sinkhorn" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "E_-S77MmiOou" + }, + "source": [ + "We experiment with the low-rank (LR) Sinkhorn solver, proposed by [Scetbon et. al](http://proceedings.mlr.press/v139/scetbon21a/scetbon21a.pdf) as an alternative to the Sinkhorn algorithm. \n", + "\n", + "The idea of that solver is to compute optimal transport couplings that are low-rank, by design. Rather than look for a $n\\times m$ matrix $P_\\varepsilon$ that has a factorization $D(u)\\exp(-C/\\varepsilon)D(v)$ (as computed by the Sinkhorn algorithm) when solving a problem with cost $C$, the set of feasible plans is restricted to those adopting a factorization of the form $P_r = Q D(1/g) R^T$, where $Q$ is $n\\times r$, $R$ is $r \\times m$ are two thin matrices, and $g$ is a $r$-dimensional probability vector." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "id": "q9wY2bCeUIB0" + }, + "outputs": [], + "source": [ + "import jax.numpy as jnp\n", + "import jax\n", + "import ott\n", + "import matplotlib.pyplot as plt\n", + "plt.rcParams.update({'font.size': 18})" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "id": "PfiRNdhVW8hT" + }, + "outputs": [], + "source": [ + "import ott\n", + "\n", + "def create_points(rng, n, m, d):\n", + " rngs = jax.random.split(rng, 4)\n", + " x = jax.random.normal(rngs[0], (n,d)) + 1\n", + " y = jax.random.uniform(rngs[1], (m,d))\n", + " a = jax.random.uniform(rngs[2], (n,))\n", + " b = jax.random.uniform(rngs[3], (m,))\n", + " a = a / jnp.sum(a)\n", + " b = b / jnp.sum(b)\n", + " return x, y, a, b" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "y4aQGprB_oeW" + }, + "source": [ + "Create an OT problem comparing two point clouds\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "id": "pN_f36ACALET" + }, + "outputs": [ { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "pN_f36ACALET" - }, - "outputs": [], - "source": [ - "rng = jax.random.PRNGKey(0)\n", - "n, m, d = 19, 35, 2\n", - "x, y, a, b = create_points(rng, n=n, m=m, d=d)\n", - "\n", - "geom = ott.geometry.pointcloud.PointCloud(x, y, epsilon=0.1)\n", - "ot_prob = ott.core.linear_problems.LinearProblem(geom, a, b)" - ] + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING:absl:No GPU/TPU found, falling back to CPU. (Set TF_CPP_MIN_LOG_LEVEL=0 and rerun for more info.)\n" + ] + } + ], + "source": [ + "rng = jax.random.PRNGKey(0)\n", + "n, m, d = 19, 35, 2\n", + "x, y, a, b = create_points(rng, n=n, m=m, d=d)\n", + "\n", + "geom = ott.geometry.pointcloud.PointCloud(x, y, epsilon=0.1)\n", + "ot_prob = ott.core.linear_problems.LinearProblem(geom, a, b)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "3RIn0E22ekGj" + }, + "source": [ + "## Solve it with Sinkhorn and plot plan/map" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "colab": { + "height": 515 }, - { - "cell_type": "markdown", - "metadata": { - "id": "3RIn0E22ekGj" - }, - "source": [ - "## Solve it with Sinkhorn and plot plan/map" - ] + "executionInfo": { + "elapsed": 11478, + "status": "ok", + "timestamp": 1641811696722, + "user": { + "displayName": "", + "photoUrl": "", + "userId": "" + }, + "user_tz": -60 }, + "id": "Qxiswt7wc2b9", + "outputId": "ceed2473-301c-4622-f2ca-981913162dc4" + }, + "outputs": [ { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "height": 515 - }, - "executionInfo": { - "elapsed": 11478, - "status": "ok", - "timestamp": 1641811696722, - "user": { - "displayName": "", - "photoUrl": "", - "userId": "" - }, - "user_tz": -60 - }, - "id": "Qxiswt7wc2b9", - "outputId": "ceed2473-301c-4622-f2ca-981913162dc4" - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "solver = ott.core.sinkhorn.Sinkhorn()\n", - "ot_sink = solver(ot_prob)\n", - "\n", - "transp_cost = jnp.sum(ot_sink.matrix * geom.cost_matrix)\n", - "plt.imshow(ot_sink.matrix, cmap='Purples')\n", - "plt.title('Sinkhorn, Cost: ' + str(transp_cost))\n", - "plt.colorbar()\n", - "plt.show()\n", - "plott = ott.tools.plot.Plot()\n", - "_ = plott(ot_sink)" + "data": { + "image/png": "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\n", + "text/plain": [ + "
" ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" }, { - "cell_type": "markdown", - "metadata": { - "id": "dS49krqd_weJ" - }, - "source": [ - "## Experimentations with the Low-Rank approach\n", - "Solve that problem using the Low-Rank Sinkhorn solver, with a rank parameterized to be equal to the half of $r=\\min(n,m)/2$" + "data": { + "image/png": "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\n", + "text/plain": [ + "
" ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "solver = ott.core.sinkhorn.Sinkhorn()\n", + "ot_sink = solver(ot_prob)\n", + "\n", + "transp_cost = jnp.sum(ot_sink.matrix * geom.cost_matrix)\n", + "plt.imshow(ot_sink.matrix, cmap='Purples')\n", + "plt.title('Sinkhorn, Cost: ' + str(transp_cost))\n", + "plt.colorbar()\n", + "plt.show()\n", + "plott = ott.tools.plot.Plot()\n", + "_ = plott(ot_sink)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "dS49krqd_weJ" + }, + "source": [ + "## Experimentations with the Low-Rank approach\n", + "Solve that problem using the Low-Rank Sinkhorn solver, with a rank parameterized to be equal to the half of $r=\\min(n,m)/2$" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "colab": { + "height": 515 }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "height": 515 - }, - "executionInfo": { - "elapsed": 19407, - "status": "ok", - "timestamp": 1641811725402, - "user": { - "displayName": "", - "photoUrl": "", - "userId": "" - }, - "user_tz": -60 - }, - "id": "bVmhqrCdkXxw", - "outputId": "3069e613-e18b-482b-a69f-d66c17d321bd" - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "solver = ott.core.sinkhorn_lr.LRSinkhorn(rank=int(min(n,m)/2))\n", - "ot_lr = solver(ot_prob)\n", - "\n", - "transp_cost = ot_lr.compute_reg_ot_cost(ot_prob)\n", - "plt.imshow(ot_lr.matrix, cmap='Purples')\n", - "plt.colorbar()\n", - "plt.title('LR, Cost: ' + str(transp_cost))\n", - "plt.show()\n", - "plott = ott.tools.plot.Plot()\n", - "_ = plott(ot_lr)" - ] + "executionInfo": { + "elapsed": 19407, + "status": "ok", + "timestamp": 1641811725402, + "user": { + "displayName": "", + "photoUrl": "", + "userId": "" + }, + "user_tz": -60 }, + "id": "bVmhqrCdkXxw", + "outputId": "3069e613-e18b-482b-a69f-d66c17d321bd" + }, + "outputs": [ { - "cell_type": "markdown", - "metadata": { - "id": "mJiWDwV-euTc" - }, - "source": [ - "## Play with larger scales\n", - "One of the interesting features of the low-rank approach lies in its ability to scale, since its iterations are of complexity $O( (n+m) r)$ rather than $O(nm)$. We consider this by sampling two points clouds of size 1 million in $d=7$. " + "data": { + "image/png": "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\n", + "text/plain": [ + "
" ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" }, { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "CRTAJb8ae9Je" - }, - "outputs": [], - "source": [ - "n, m, d =10^6, 10^6+1, 7\n", - "x, y, a, b = create_points(rng, n=n, m=m, d=d)" + "data": { + "image/png": "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\n", + "text/plain": [ + "
" ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "solver = ott.core.sinkhorn_lr.LRSinkhorn(rank=int(min(n,m)/2))\n", + "ot_lr = solver(ot_prob)\n", + "\n", + "transp_cost = ot_lr.compute_reg_ot_cost(ot_prob)\n", + "plt.imshow(ot_lr.matrix, cmap='Purples')\n", + "plt.colorbar()\n", + "plt.title('LR, Cost: ' + str(transp_cost))\n", + "plt.show()\n", + "plott = ott.tools.plot.Plot()\n", + "_ = plott(ot_lr)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "mJiWDwV-euTc" + }, + "source": [ + "## Play with larger scales\n", + "One of the interesting features of the low-rank approach lies in its ability to scale, since its iterations are of complexity $O( (n+m) r)$ rather than $O(nm)$. We consider this by sampling two points clouds of size 1 million in $d=7$. " + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "id": "CRTAJb8ae9Je" + }, + "outputs": [], + "source": [ + "n, m, d =10^6, 10^6+1, 7\n", + "x, y, a, b = create_points(rng, n=n, m=m, d=d)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "BV7wO_Dcijc3" + }, + "source": [ + "We compute plans satisfy a rank constraint $r$, for various values of $r$," + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "id": "GPWnpdoZfGWc" + }, + "outputs": [], + "source": [ + "geom = ott.geometry.pointcloud.PointCloud(x, y, epsilon=0.1)\n", + "ot_prob = ott.core.linear_problems.LinearProblem(geom, a, b)\n", + "costs = []\n", + "ranks = [1, 5, 10, 15, 20, 35, 50, 100, 500, 1000]\n", + "for rank in ranks:\n", + " solver = ott.core.sinkhorn_lr.LRSinkhorn(rank=rank)\n", + " ot_lr = solver(ot_prob)\n", + " costs.append(ot_lr.compute_reg_ot_cost(ot_prob))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "lrzFjEM8hbVp" + }, + "source": [ + "As expected, the optimal cost decreases with rank, as shown in the plot below. Recall that, because of the non-convexity of the original problem, there may be small bumps along the way. \n", + "\n", + "For these two fairly concentrated distributions, it seems possible to produce plans that have relatively small rank yet low cost." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "colab": { + "height": 319 }, - { - "cell_type": "markdown", - "metadata": { - "id": "BV7wO_Dcijc3" - }, - "source": [ - "We compute plans satisfy a rank constraint $r$, for various values of $r$," - ] + "executionInfo": { + "elapsed": 534, + "status": "ok", + "timestamp": 1641811786233, + "user": { + "displayName": "", + "photoUrl": "", + "userId": "" + }, + "user_tz": -60 }, + "id": "SRs1WMONfXRe", + "outputId": "6f32954b-4139-4e77-a359-59e0476bebb4" + }, + "outputs": [ { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "GPWnpdoZfGWc" - }, - "outputs": [], - "source": [ - "geom = ott.geometry.pointcloud.PointCloud(x, y, epsilon=0.1)\n", - "ot_prob = ott.core.linear_problems.LinearProblem(geom, a, b)\n", - "costs = []\n", - "ranks = [1, 5, 10, 15, 20, 35, 50, 100, 500, 1000]\n", - "for rank in ranks:\n", - " solver = ott.core.sinkhorn_lr.LRSinkhorn(rank=rank)\n", - " ot_lr = solver(ot_prob)\n", - " costs.append(ot_lr.compute_reg_ot_cost(ot_prob))" + "data": { + "image/png": "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\n", + "text/plain": [ + "
" ] - }, + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(ranks, costs)\n", + "plt.xscale('log')\n", + "plt.xlabel('rank')\n", + "plt.ylabel('cost')\n", + "plt.title('Transport cost as a function of rank')\n", + "plt.show()" + ] + } + ], + "metadata": { + "colab": { + "collapsed_sections": [], + "last_runtime": { + "build_target": "//learning/deepmind/public/tools/ml_python:ml_notebook", + "kind": "private" + }, + "name": "Copy of LRSinkhorn.ipynb", + "provenance": [ { - "cell_type": "markdown", - "metadata": { - "id": "lrzFjEM8hbVp" - }, - "source": [ - "As expected, the optimal cost decreases with rank, as shown in the plot below. Recall that, because of the non-convexity of the original problem, there may be small bumps along the way. \n", - "\n", - "For these two fairly concentrated distributions, it seems possible to produce plans that have relatively small rank yet low cost." - ] + "file_id": "/piper/depot/google3/third_party/py/ott/oss/docs/notebooks/LRSinkhorn.ipynb", + "timestamp": 1641811997488 }, { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "height": 319 - }, - "executionInfo": { - "elapsed": 534, - "status": "ok", - "timestamp": 1641811786233, - "user": { - "displayName": "", - "photoUrl": "", - "userId": "" - }, - "user_tz": -60 - }, - "id": "SRs1WMONfXRe", - "outputId": "6f32954b-4139-4e77-a359-59e0476bebb4" - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.plot(ranks, costs)\n", - "plt.xscale('log')\n", - "plt.xlabel('rank')\n", - "plt.ylabel('cost')\n", - "plt.title('Transport cost as a function of rank')\n", - "plt.show()\n" - ] - } - ], - "metadata": { - "colab": { - "collapsed_sections": [], - "last_runtime": { - "build_target": "//learning/deepmind/public/tools/ml_python:ml_notebook", - "kind": "private" - }, - "name": "Copy of LRSinkhorn.ipynb", - "provenance": [ - { - "file_id": "/piper/depot/google3/third_party/py/ott/oss/docs/notebooks/LRSinkhorn.ipynb", - "timestamp": 1641811997488 - }, - { - "file_id": "1AYbnnVVudg2LCcmepy2CL8g00EzOx4Jx", - "timestamp": 1641482847528 - } - ] - }, - "kernelspec": { - "display_name": "Python 3", - "name": "python3" - }, - "language_info": { - "name": "python" + "file_id": "1AYbnnVVudg2LCcmepy2CL8g00EzOx4Jx", + "timestamp": 1641482847528 } + ] + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" }, - "nbformat": 4, - "nbformat_minor": 0 + "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.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 1 } diff --git a/docs/references.bib b/docs/references.bib new file mode 100644 index 000000000..edcaff805 --- /dev/null +++ b/docs/references.bib @@ -0,0 +1,29 @@ +@InProceedings{indyk:19, + title = {Sample-Optimal Low-Rank Approximation of Distance Matrices}, + author = {Indyk, Pitor and Vakilian, Ali and Wagner, Tal and Woodruff, David P}, + booktitle = {Proceedings of the Thirty-Second Conference on Learning Theory}, + pages = {1723--1751}, + year = {2019}, + editor = {Beygelzimer, Alina and Hsu, Daniel}, + volume = {99}, + series = {Proceedings of Machine Learning Research}, + month = {25--28 Jun}, + publisher = {PMLR}, + pdf = {http://proceedings.mlr.press/v99/indyk19a/indyk19a.pdf}, + url = {https://proceedings.mlr.press/v99/indyk19a.html}, +} + +@InProceedings{scetbon:21, + title = {Low-Rank Sinkhorn Factorization}, + author = {Scetbon, Meyer and Cuturi, Marco and Peyr{\'e}, Gabriel}, + booktitle = {Proceedings of the 38th International Conference on Machine Learning}, + pages = {9344--9354}, + year = {2021}, + editor = {Meila, Marina and Zhang, Tong}, + volume = {139}, + series = {Proceedings of Machine Learning Research}, + month = {18--24 Jul}, + publisher = {PMLR}, + pdf = {http://proceedings.mlr.press/v139/scetbon21a/scetbon21a.pdf}, + url = {https://proceedings.mlr.press/v139/scetbon21a.html}, +} diff --git a/docs/references.rst b/docs/references.rst new file mode 100644 index 000000000..52d4c0fb7 --- /dev/null +++ b/docs/references.rst @@ -0,0 +1,5 @@ +References +========== + +.. bibliography:: + :cited: diff --git a/ott/core/gromov_wasserstein.py b/ott/core/gromov_wasserstein.py index fde19983f..73b07045c 100644 --- a/ott/core/gromov_wasserstein.py +++ b/ott/core/gromov_wasserstein.py @@ -29,7 +29,7 @@ sinkhorn_lr, was_solver, ) -from ott.geometry import epsilon_scheduler, geometry, low_rank, pointcloud +from ott.geometry import epsilon_scheduler, geometry, pointcloud LinearOutput = Union[sinkhorn.SinkhornOutput, sinkhorn_lr.LRSinkhornOutput] @@ -138,30 +138,52 @@ def update( @jax.tree_util.register_pytree_node_class class GromovWasserstein(was_solver.WassersteinSolver): - """A Gromov Wasserstein solver, built on generic template.""" + """A Gromov Wasserstein solver, built on generic template. + + Args: + args: Positional arguments for + :class:`~ott.core.was_solver.WassersteinSolver`. + cost_rank: Rank of the cost matrix, see + :meth:`~ott.geometry.geometry.Geometry.to_LRCGeometry`. Used when + geometries are *not* :class:`~ott.geometry.pointcloud.PointCloud` with + `'sqeucl'` cost function. If `-1`, these geometries will not be converted + to low-rank. + cost_tol: Tolerance used when converting geometries to low-rank. Used when + geometries are *not* :class:`~ott.geometry.pointcloud.PointCloud` with + `'sqeucl'` cost function. + kwargs: Keyword arguments for + :class:`~ott.core.was_solver.WassersteinSolver`. + """ + + def __init__( + self, + *args: Any, + cost_rank: int = -1, + cost_tol: float = 1e-2, + **kwargs: Any + ): + super().__init__(*args, **kwargs) + self.cost_rank = cost_rank + self.cost_tol = cost_tol def __call__(self, prob: quad_problems.QuadraticProblem) -> GWOutput: # Consider converting problem first if using low-rank solver - if self.is_low_rank: - convert = ( - isinstance(prob.geom_xx, pointcloud.PointCloud) and - prob.geom_xx.is_squared_euclidean and - isinstance(prob.geom_yy, pointcloud.PointCloud) and - prob.geom_yy.is_squared_euclidean + if self.is_low_rank and self._convert_geoms_to_lr(prob): + prob.geom_xx = prob.geom_xx.to_LRCGeometry( + rank=self.cost_rank, tol=self.cost_tol ) - # Consider converting - if convert: - if not prob.is_fused or isinstance(prob.geom_xy, low_rank.LRCGeometry): - prob.geom_xx = prob.geom_xx.to_LRCGeometry() - prob.geom_yy = prob.geom_yy.to_LRCGeometry() + prob.geom_yy = prob.geom_yy.to_LRCGeometry( + rank=self.cost_rank, tol=self.cost_tol + ) + if prob.geom_xy is not None: + if isinstance( + prob.geom_xy, pointcloud.PointCloud + ) and prob.geom_xy.is_squared_euclidean: + prob.geom_xy = prob.geom_xy.to_LRCGeometry(prob.fused_penalty) else: - if ( - isinstance(prob.geom_xy, pointcloud.PointCloud) and - prob.geom_xy.is_squared_euclidean - ): - prob.geom_xy = prob.geom_xy.to_LRCGeometry(prob.fused_penalty) - prob.geom_xx = prob.geom_xx.to_LRCGeometry() - prob.geom_yy = prob.geom_yy.to_LRCGeometry() + prob.geom_xy = prob.geom_xy.to_LRCGeometry( + rank=self.cost_rank, tol=self.cost_tol + ) # Possibly jit iteration functions and run. Closure on rank to # avoid jitting issues, since rank value will be used to branch between @@ -226,6 +248,19 @@ def output_from_state(self, state: GWState) -> GWOutput: old_transport_mass=state.old_transport_mass ) + def _convert_geoms_to_lr(self, prob: quad_problems.QuadraticProblem) -> bool: + + def is_sqeucl_pc(geom: geometry.Geometry) -> bool: + return isinstance( + geom, pointcloud.PointCloud + ) and geom.is_squared_euclidean + + geom_xx, geom_yy, geom_xy = prob.geom_xx, prob.geom_yy, prob.geom_xy + return self.cost_rank != -1 or ( + is_sqeucl_pc(geom_xx) and is_sqeucl_pc(geom_yy) and + (geom_xy is None or is_sqeucl_pc(geom_xy)) + ) + def iterations( solver: GromovWasserstein, prob: quad_problems.QuadraticProblem, rank: int diff --git a/ott/core/sinkhorn_lr.py b/ott/core/sinkhorn_lr.py index af99e69b6..586106219 100644 --- a/ott/core/sinkhorn_lr.py +++ b/ott/core/sinkhorn_lr.py @@ -116,14 +116,18 @@ def set(self, **kwargs: Any) -> 'LRSinkhornOutput': return self._replace(**kwargs) def set_cost( - self, ot_prob: linear_problems.LinearProblem, lse_mode: bool, - use_danskin: bool + self, + ot_prob: linear_problems.LinearProblem, + lse_mode: bool, + use_danskin: bool = False ) -> 'LRSinkhornOutput': del lse_mode return self.set(reg_ot_cost=self.compute_reg_ot_cost(ot_prob, use_danskin)) def compute_reg_ot_cost( - self, ot_prob: linear_problems.LinearProblem, use_danskin: bool + self, + ot_prob: linear_problems.LinearProblem, + use_danskin: bool = False, ) -> float: return compute_reg_ot_cost(self.q, self.r, self.g, ot_prob, use_danskin) @@ -533,7 +537,9 @@ def run( ) -> LRSinkhornOutput: """Run loop of the solver, outputting a state upgraded to an output.""" out = sinkhorn.iterations(ot_prob, solver, init) - out = out.set_cost(ot_prob, solver.lse_mode, solver.use_danskin) + out = out.set_cost( + ot_prob, lse_mode=solver.lse_mode, use_danskin=solver.use_danskin + ) return out.set(ot_prob=ot_prob) diff --git a/ott/core/was_solver.py b/ott/core/was_solver.py index 8b4d9c3c3..1b9e4adf0 100644 --- a/ott/core/was_solver.py +++ b/ott/core/was_solver.py @@ -76,6 +76,7 @@ def __init__( @property def is_low_rank(self) -> bool: + """Whether the solver is low-rank.""" return self.rank > 0 def tree_flatten(self): diff --git a/ott/geometry/geometry.py b/ott/geometry/geometry.py index 54806772e..7cb79d9f4 100644 --- a/ott/geometry/geometry.py +++ b/ott/geometry/geometry.py @@ -15,10 +15,14 @@ # Lint as: python3 """A class describing operations used to instantiate and use a geometry.""" import functools -from typing import Any, Callable, Optional, Tuple, Union +from typing import TYPE_CHECKING, Any, Callable, Optional, Tuple, Union + +if TYPE_CHECKING: + from ott.geometry import low_rank import jax import jax.numpy as jnp +import jax.scipy as jsp from typing_extensions import Literal from ott.geometry import epsilon_scheduler, ops @@ -212,7 +216,7 @@ def _set_scale_cost( aux_data["scale_cost"] = scale_cost return type(self).tree_unflatten(aux_data, children) - def copy_epsilon(self, other: epsilon_scheduler.Epsilon) -> "Geometry": + def copy_epsilon(self, other: 'Geometry') -> "Geometry": """Copy the epsilon parameters from another geometry.""" scheduler = other._epsilon self._epsilon_init = scheduler._target_init @@ -614,6 +618,128 @@ def prepare_divergences( for arg1, arg2, _ in zip(cost_matrices, kernel_matrices, range(size)) ) + def to_LRCGeometry( + self, + rank: int, + tol: float = 1e-2, + seed: int = 0 + ) -> 'low_rank.LRCGeometry': + r"""Factorize the cost matrix in sublinear time :cite:`indyk:19`. + + Uses the implementation of :cite:`scetbon:21`, algorithm 4. + + It holds that with probability *0.99*, + :math:`||A - UV||_F^2 \leq || A - A_k ||_F^2 + tol \cdot ||A||_F^2`, + where :math:`A` is ``n x m`` cost matrix, :math:`UV` the factorization + computed in sublinear time and :math:`A_k` the best rank-k approximation. + + Args: + rank: Target rank of the :attr:`cost_matrix`. + tol: Tolerance of the error. The total number of sampled points is + :math:`min(n, m,\frac{rank}{tol})`. + seed: Random seed. + + Returns: + Low-rank geometry. + """ + from ott.geometry import low_rank + + assert rank > 0, f"Rank must be positive, got {rank}." + rng = jax.random.PRNGKey(seed) + key1, key2, key3, key4, key5 = jax.random.split(rng, 5) + n, m = self.shape + n_subset = min(int(rank / tol), n, m) + + i_star = jax.random.randint(key1, shape=(), minval=0, maxval=n) + j_star = jax.random.randint(key2, shape=(), minval=0, maxval=m) + + # force `batch_size=None` since `cost_matrix` would be `None` + ci_star = self.subset( + i_star, None, batch_size=None + ).cost_matrix.ravel() ** 2 # (m,) + cj_star = self.subset( + None, j_star, batch_size=None + ).cost_matrix.ravel() ** 2 # (n,) + + p_row = cj_star + ci_star[j_star] + jnp.mean(ci_star) # (n,) + p_row /= jnp.sum(p_row) + row_ixs = jax.random.choice(key3, n, shape=(n_subset,), p=p_row) + # (n_subset, m) + S = self.subset(row_ixs, None, batch_size=None).cost_matrix + S /= jnp.sqrt(n_subset * p_row[row_ixs][:, None]) + + p_col = jnp.sum(S ** 2, axis=0) # (m,) + p_col /= jnp.sum(p_col) + # (n_subset,) + col_ixs = jax.random.choice(key4, m, shape=(n_subset,), p=p_col) + # (n_subset, n_subset) + W = S[:, col_ixs] / jnp.sqrt(n_subset * p_col[col_ixs][None, :]) + + U, _, V = jsp.linalg.svd(W) + U = U[:, :rank] # (n_subset, rank) + U = (S.T @ U) / jnp.linalg.norm(W.T @ U, axis=0) # (m, rank) + + # lls + d, v = jnp.linalg.eigh(U.T @ U) # (k,), (k, k) + v /= jnp.sqrt(d)[None, :] + + inv_scale = (1. / jnp.sqrt(n_subset)) + col_ixs = jax.random.choice(key5, m, shape=(n_subset,)) # (n_subset,) + + # (n, n_subset) + A_trans = self.subset( + None, col_ixs, batch_size=None + ).cost_matrix * inv_scale + B = (U[col_ixs, :] @ v * inv_scale) # (n_subset, k) + M = jnp.linalg.inv(B.T @ B) # (k, k) + V = jnp.linalg.multi_dot([A_trans, B, M.T, v.T]) # (n, k) + + return low_rank.LRCGeometry( + cost_1=V, + cost_2=U, + epsilon=self._epsilon_init, + relative_epsilon=self._relative_epsilon, + scale=self._scale_epsilon, + scale_cost=self._scale_cost, + **self._kwargs + ) + + def subset( + self, + src_ixs: Optional[jnp.ndarray], + tgt_ixs: Optional[jnp.ndarray], + **kwargs: Any, + ) -> "Geometry": + """Subset rows and/or columns of a geometry. + + Args: + src_ixs: Source indices. If ``None``, use all rows. + tgt_ixs: Target indices. If ``None``, use all columns. + kwargs: Keyword arguments for :class:`ott.geometry.geometry.Geometry`. + + Returns: + Subset of a geometry. + """ + + def sub( + arr: jnp.ndarray, src_ixs: Optional[jnp.ndarray], + tgt_ixs: Optional[jnp.ndarray] + ) -> jnp.ndarray: + if src_ixs is not None: + arr = arr[jnp.atleast_1d(src_ixs), :] + if tgt_ixs is not None: + arr = arr[:, jnp.atleast_1d(tgt_ixs)] + return arr + + (cost, kernel, *children), aux_data = self.tree_flatten() + if cost is not None: + cost = sub(cost, src_ixs, tgt_ixs) + if kernel is not None: + kernel = sub(kernel, src_ixs, tgt_ixs) + + aux_data = {**aux_data, **kwargs} + return type(self).tree_unflatten(aux_data, [cost, kernel] + children) + def tree_flatten(self): return ( self._cost_matrix, self._kernel_matrix, self._epsilon_init, diff --git a/ott/geometry/grid.py b/ott/geometry/grid.py index 325b2a49b..0f646b84b 100644 --- a/ott/geometry/grid.py +++ b/ott/geometry/grid.py @@ -309,6 +309,11 @@ def transport_from_scalings( ' cloud geometry instead' ) + def subset( + self, src_ixs: Optional[jnp.ndarray], tgt_ixs: Optional[jnp.ndarray] + ) -> NoReturn: + raise NotImplementedError("Subsetting grid is not implemented.") + @classmethod def prepare_divergences( cls, diff --git a/ott/geometry/low_rank.py b/ott/geometry/low_rank.py index b99901691..e2337cf99 100644 --- a/ott/geometry/low_rank.py +++ b/ott/geometry/low_rank.py @@ -221,6 +221,35 @@ def finalize(carry): max_value = jnp.max(jnp.concatenate((out, last_slice.reshape(-1)))) return max_value + self._bias + def to_LRCGeometry( + self, rank: int, tol: float = 1e-2, seed: int = 0 + ) -> 'LRCGeometry': + """Return self.""" + return self + + def subset( + self, src_ixs: Optional[jnp.ndarray], tgt_ixs: Optional[jnp.ndarray], + **kwargs: Any + ) -> "LRCGeometry": + """Subset rows and/or columns of a geometry. + + Args: + src_ixs: Source indices. If ``None``, use all rows. + tgt_ixs: Target indices. If ``None``, use all columns. + kwargs: Keyword arguments for :class:`ott.geometry.low_rank.LRCGeometry`. + + Returns: + The subsetted geometry. + """ + (c1, c2, *children), aux_data = self.tree_flatten() + if src_ixs is not None: + c1 = c1[jnp.atleast_1d(src_ixs), :] + if tgt_ixs is not None: + c2 = c2[jnp.atleast_1d(tgt_ixs), :] + + aux_data = {**aux_data, **kwargs} + return type(self).tree_unflatten(aux_data, [c1, c2] + children) + def tree_flatten(self): return (self._cost_1, self._cost_2, self._kwargs), { 'bias': self._bias, diff --git a/ott/geometry/pointcloud.py b/ott/geometry/pointcloud.py index ee4e1c0e8..78fe2e0d1 100644 --- a/ott/geometry/pointcloud.py +++ b/ott/geometry/pointcloud.py @@ -554,41 +554,71 @@ def tree_unflatten(cls, aux_data, children): x, y, eps, cost_fn = children return cls(x, y, epsilon=eps, cost_fn=cost_fn, **aux_data) - def to_LRCGeometry(self, scale: float = 1.0) -> low_rank.LRCGeometry: + def to_LRCGeometry( + self, + scale: float = 1.0, + **kwargs: Any, + ) -> Union[low_rank.LRCGeometry, 'PointCloud']: """Convert sqEuc. PointCloud to LRCGeometry if useful, and rescale.""" if self.is_squared_euclidean: (n, m), d = self.shape, self.x.shape[1] if n * m > (n + m) * d: # here apply_cost using LRCGeometry preferable. - cost_1 = jnp.concatenate(( - jnp.sum(self.x ** 2, axis=1, keepdims=True), - jnp.ones((self.shape[0], 1)), -jnp.sqrt(2) * self.x - ), - axis=1) - cost_2 = jnp.concatenate(( - jnp.ones( - (self.shape[1], 1) - ), jnp.sum(self.y ** 2, axis=1, keepdims=True), jnp.sqrt(2) * self.y - ), - axis=1) - cost_1 *= jnp.sqrt(scale) - cost_2 *= jnp.sqrt(scale) - - return low_rank.LRCGeometry( - cost_1=cost_1, - cost_2=cost_2, - epsilon=self._epsilon_init, - relative_epsilon=self._relative_epsilon, - scale=self._scale_epsilon, - scale_cost=self._scale_cost, - **self._kwargs - ) - else: - (x, y, *children), aux_data = self.tree_flatten() - x = x * jnp.sqrt(scale) - y = y * jnp.sqrt(scale) - return PointCloud.tree_unflatten(aux_data, [x, y] + children) - else: - raise ValueError('Cannot turn non-sq-Euclidean geometry into low-rank') + return self._sqeucl_to_lr(scale) + (x, y, *children), aux_data = self.tree_flatten() + x = x * jnp.sqrt(scale) + y = y * jnp.sqrt(scale) + return PointCloud.tree_unflatten(aux_data, [x, y] + children) + return super().to_LRCGeometry(**kwargs) + + def _sqeucl_to_lr(self, scale: float = 1.0) -> low_rank.LRCGeometry: + assert self.is_squared_euclidean, "Geometry must be squared Euclidean." + n, m = self.shape + cost_1 = jnp.concatenate(( + jnp.sum(self.x ** 2, axis=1, keepdims=True), jnp.ones( + (n, 1) + ), -jnp.sqrt(2) * self.x + ), + axis=1) + cost_2 = jnp.concatenate(( + jnp.ones((m, 1)), jnp.sum(self.y ** 2, axis=1, + keepdims=True), jnp.sqrt(2) * self.y + ), + axis=1) + cost_1 *= jnp.sqrt(scale) + cost_2 *= jnp.sqrt(scale) + + return low_rank.LRCGeometry( + cost_1=cost_1, + cost_2=cost_2, + epsilon=self._epsilon_init, + relative_epsilon=self._relative_epsilon, + scale=self._scale_epsilon, + scale_cost=self._scale_cost, + **self._kwargs + ) + + def subset( + self, src_ixs: Optional[jnp.ndarray], tgt_ixs: Optional[jnp.ndarray], + **kwargs: Any + ) -> "PointCloud": + """Subset rows and/or columns of a geometry. + + Args: + src_ixs: Source indices. If ``None``, use all rows. + tgt_ixs: Target indices. If ``None``, use all columns. + kwargs: Keyword arguments for :class:`ott.geometry.pointcloud.PointCloud`. + + Returns: + The subsetted geometry. + """ + (x, y, *children), aux_data = self.tree_flatten() + if src_ixs is not None: + x = x[jnp.atleast_1d(src_ixs), :] + if tgt_ixs is not None: + y = y[jnp.atleast_1d(tgt_ixs), :] + + aux_data = {**aux_data, **kwargs} + return type(self).tree_unflatten(aux_data, [x, y] + children) @property def batch_size(self) -> Optional[int]: diff --git a/setup.cfg b/setup.cfg index 6dc2f2107..1c528a8bb 100644 --- a/setup.cfg +++ b/setup.cfg @@ -62,6 +62,7 @@ docs = ipython>=7.20.0 sphinx_autodoc_typehints>=1.12.0 sphinx-book-theme + sphinxcontrib-bibtex dev = pre-commit diff --git a/tests/core/continuous_barycenter_test.py b/tests/core/continuous_barycenter_test.py index 5f1dc5ac1..6d62dcd71 100644 --- a/tests/core/continuous_barycenter_test.py +++ b/tests/core/continuous_barycenter_test.py @@ -107,8 +107,6 @@ def test_euclidean_barycenter( lse_mode=[False, True], epsilon=[1e-1, 5e-1], jit=[False, True], - # TODO(michalk8): finalize the API - # might be beneficial to all for more than 1 test to be selected only_fast={ "lse_mode": True, "epsilon": 1e-1, diff --git a/tests/core/fused_gromov_wasserstein_test.py b/tests/core/fused_gromov_wasserstein_test.py index d1db85cfb..95b30e21b 100644 --- a/tests/core/fused_gromov_wasserstein_test.py +++ b/tests/core/fused_gromov_wasserstein_test.py @@ -20,8 +20,8 @@ import numpy as np import pytest -from ott.core import gromov_wasserstein -from ott.geometry import geometry, pointcloud +from ott.core import gromov_wasserstein, quad_problems +from ott.geometry import geometry, low_rank, pointcloud class TestFusedGromovWasserstein: @@ -374,3 +374,34 @@ def test_fgw_lr_memory(self, rng: jnp.ndarray, jit: bool): assert ot_gwlr.convergence assert res0.shape == (d1, m) assert res1.shape == (d2, n) + + @pytest.mark.parametrize("cost_rank", [-1, 4]) + def test_gw_lr_generic_cost_matrix(self, rng: jnp.ndarray, cost_rank: int): + n, m = 70, 100 + key1, key2, key3, key4 = jax.random.split(rng, 4) + x = jax.random.normal(key1, shape=(n, 7)) + y = jax.random.normal(key2, shape=(m, 6)) + xx = jax.random.normal(key3, shape=(n, 5)) + yy = jax.random.normal(key4, shape=(m, 5)) + + geom_x = geometry.Geometry(cost_matrix=x @ x.T) + geom_y = geometry.Geometry(cost_matrix=y @ y.T) + geom_xy = geometry.Geometry(cost_matrix=xx @ yy.T) + + problem = quad_problems.QuadraticProblem(geom_x, geom_y, geom_xy) + solver = gromov_wasserstein.GromovWasserstein( + rank=5, cost_rank=cost_rank, cost_tol=5e-1, epsilon=1 + ) + out = solver(problem) + + assert solver.rank == 5 + for geom in [problem.geom_xx, problem.geom_yy, problem.geom_xy]: + if cost_rank != -1: + assert isinstance(geom, low_rank.LRCGeometry) + assert geom.cost_rank == cost_rank + else: + assert isinstance(geom, geometry.Geometry) + + assert out.convergence + assert out.reg_gw_cost > 0 + np.testing.assert_array_equal(jnp.isfinite(out.costs), True) diff --git a/tests/geometry/geometry_lr_test.py b/tests/geometry/geometry_lr_test.py index df9a98095..73bb361a2 100644 --- a/tests/geometry/geometry_lr_test.py +++ b/tests/geometry/geometry_lr_test.py @@ -14,14 +14,14 @@ # Lint as: python3 """Test Low-Rank Geometry.""" -from typing import Callable, Union +from typing import Callable, Optional, Union import jax import jax.numpy as jnp import numpy as np import pytest -from ott.geometry import geometry, low_rank, pointcloud +from ott.geometry import costs, geometry, low_rank, pointcloud @pytest.mark.fast @@ -165,3 +165,95 @@ def test_point_cloud_to_lr(self, rng: jnp.ndarray, rank: int): assert isinstance(geom_lr, pointcloud.PointCloud) np.testing.assert_allclose(geom_lr.x, jnp.sqrt(scale) * geom_pc.x) np.testing.assert_allclose(geom_lr.y, jnp.sqrt(scale) * geom_pc.y) + + +class TestCostMatrixFactorization: + + @staticmethod + def assert_upper_bound( + geom: geometry.Geometry, geom_lr: low_rank.LRCGeometry, *, rank: int, + tol: float + ): + # Theorem 1.2 `Sample-Optimal Low-Rank Approximation of Distance Matrices + # https://arxiv.org/abs/1906.00339 + A = geom.cost_matrix + C1, C2 = geom_lr.cost_1, geom_lr.cost_2 + + U, D, VT = jnp.linalg.svd(A) + # best k-rank approx. + A_k = U[:, :rank] @ jnp.diag(D[:rank]) @ VT[:rank] + + lhs = jnp.linalg.norm(A - C1 @ C2.T) ** 2 + rhs = jnp.linalg.norm(A - A_k) ** 2 + tol * jnp.linalg.norm(A) ** 2 + + assert lhs <= rhs + + @pytest.mark.fast.with_args(rank=[2, 3], tol=[5e-1, 1e-2], only_fast=0) + def test_geometry_to_lr(self, rng: jnp.ndarray, rank: int, tol: float): + key1, key2 = jax.random.split(rng, 2) + x = jax.random.normal(key1, shape=(370, 3)) + y = jax.random.normal(key2, shape=(460, 3)) + geom = geometry.Geometry(cost_matrix=x @ y.T) + + geom_lr = geom.to_LRCGeometry(rank=rank, tol=tol, seed=42) + + np.testing.assert_array_equal(geom.shape, geom_lr.shape) + assert geom_lr.cost_rank == rank + + if rank == 2 and tol == 1e-2: + pytest.mark.xfail("assert 171666.83 <= 154635.98") + else: + self.assert_upper_bound(geom, geom_lr, rank=rank, tol=tol) + + @pytest.mark.fast.with_args( + "batch_size,scale_cost", [(None, "mean"), (32, None)], only_fast=1 + ) + def test_point_cloud_to_lr( + self, rng: jnp.ndarray, batch_size: Optional[int], + scale_cost: Optional[str] + ): + rank, tol = 7, 1e-1 + key1, key2 = jax.random.split(rng, 2) + x = jax.random.normal(key1, shape=(384, 10)) + y = jax.random.normal(key2, shape=(512, 10)) + geom = pointcloud.PointCloud( + x, + y, + cost_fn=costs.Euclidean(), + batch_size=batch_size, + power=3, + scale_cost=scale_cost, + ) + if geom.batch_size is not None: + # because `self.assert_upper_bound` tries to instantiate the matrix + geom = geom.subset(None, None, batch_size=None) + + geom_lr = geom.to_LRCGeometry(rank=rank, tol=tol) + + np.testing.assert_array_equal(geom.shape, geom_lr.shape) + assert geom_lr.cost_rank == rank + self.assert_upper_bound(geom, geom_lr, rank=rank, tol=tol) + + def test_to_lrc_geometry_noop(self, rng: jnp.ndarray): + key1, key2 = jax.random.split(rng, 2) + cost1 = jax.random.normal(key1, shape=(32, 2)) + cost2 = jax.random.normal(key2, shape=(23, 2)) + geom = low_rank.LRCGeometry(cost1, cost2) + + geom_lrc = geom.to_LRCGeometry(rank=10) + + assert geom is geom_lrc + + @pytest.mark.limit_memory("190 MB") + def test_large_scale_factorization(self, rng: jnp.ndarray): + rank, tol = 4, 1e-2 + key1, key2 = jax.random.split(rng, 2) + x = jax.random.normal(key1, shape=(10_000, 7)) + y = jax.random.normal(key2, shape=(11_000, 7)) + geom = pointcloud.PointCloud(x, y, epsilon=1e-2, cost_fn=costs.Cosine()) + + geom_lr = geom.to_LRCGeometry(rank=rank, tol=tol) + + np.testing.assert_array_equal(geom.shape, geom_lr.shape) + assert geom_lr.cost_rank == rank + # self.assert_upper_bound(geom, geom_lr, rank=rank, tol=tol) diff --git a/tests/geometry/geometry_subset_test.py b/tests/geometry/geometry_subset_test.py new file mode 100644 index 000000000..3edfe2e97 --- /dev/null +++ b/tests/geometry/geometry_subset_test.py @@ -0,0 +1,47 @@ +from typing import Optional, Sequence, Type, Union + +import jax +import jax.numpy as jnp +import numpy as np +import pytest + +from ott.geometry import geometry, low_rank, pointcloud + + +@pytest.mark.fast +class TestSubsetPointCloud: + + @pytest.mark.parametrize("tgt_ixs", [7, jnp.arange(5)]) + @pytest.mark.parametrize("src_ixs", [None, (3, 3)]) + @pytest.mark.parametrize( + "clazz", [geometry.Geometry, pointcloud.PointCloud, low_rank.LRCGeometry] + ) + def test_subset( + self, rng: jnp.ndarray, clazz: Type[geometry.Geometry], + src_ixs: Optional[Union[int, Sequence[int]]], + tgt_ixs: Optional[Union[int, Sequence[int]]] + ): + key1, key2 = jax.random.split(rng, 2) + new_batch_size = 7 + x = jax.random.normal(key1, shape=(10, 3)) + y = jax.random.normal(key2, shape=(20, 3)) + + if clazz is geometry.Geometry: + geom = clazz(cost_matrix=x @ y.T, scale_cost="mean") + else: + geom = clazz(x, y, scale_cost="max_cost", batch_size=5) + n = geom.shape[0] if src_ixs is None else 1 if isinstance( + src_ixs, int + ) else len(src_ixs) + m = geom.shape[1] if tgt_ixs is None else 1 if isinstance( + tgt_ixs, int + ) else len(tgt_ixs) + + geom_sub = geom.subset(src_ixs, tgt_ixs, batch_size=new_batch_size) + + assert type(geom_sub) == type(geom) + np.testing.assert_array_equal(geom_sub.shape, (n, m)) + assert geom_sub._scale_cost == geom._scale_cost + if clazz is pointcloud.PointCloud: + # test overriding some argument + assert geom_sub._batch_size == new_batch_size