{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "0qBL2UHjizx4" }, "source": [ "# Point clouds\n", "\n", "We cover in this tutorial the instantiation and use of a `PointCloud` geometry. \n", "\n", "A `PointCloud` geometry holds two arrays of vectors, endowed with a cost function. Such a geometry should cover most users' needs. \n", "\n", "We further show differentiation through optimal transport as an example of optimization that leverages first-order gradients.\n", "\n", "This Notebook can be run on either Jupyter Notebook or Colab (which requires running `! pip install ott-jax` first)." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "id": "ITK9gegzfjJS" }, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "\n", "import jax\n", "import jax.numpy as jnp\n", "\n", "import ott\n", "from ott.geometry import pointcloud\n", "from ott.core import sinkhorn\n", "from ott.tools import transport" ] }, { "cell_type": "markdown", "metadata": { "id": "BDa8wUQbjmuH" }, "source": [ "## Creates a PointCloud geometry" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "id": "KWaZWthyjkMp" }, "outputs": [], "source": [ "def create_points(rng, n, m, d):\n", " rngs = jax.random.split(rng, 3)\n", " x = jax.random.normal(rngs[0], (n,d)) + 1\n", " y = jax.random.uniform(rngs[1], (m,d))\n", " a = jnp.ones((n,)) / n\n", " b = jnp.ones((m,)) / m\n", " return x, y, a, b\n", "\n", "rng = jax.random.PRNGKey(0)\n", "n, m, d = 12, 14, 2\n", "x, y, a, b = create_points(rng, n=n, m=m, d=d)" ] }, { "cell_type": "markdown", "metadata": { "id": "GlYR-g94kI-E" }, "source": [ "## Computes the regularized optimal transport\n", "\n", "To compute the transport matrix between the two point clouds, one can define a `PointCloud` geometry (which by default uses `ott.geometry.costs.Euclidean` for cost function), then call the `sinkhorn` function, and build the transport matrix from the optimized potentials." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "id": "EPZ1m4nwkIQO" }, "outputs": [], "source": [ "geom = pointcloud.PointCloud(x, y, epsilon=1e-2)\n", "out = sinkhorn.sinkhorn(geom, a, b)\n", "P = geom.transport_from_potentials(out.f, out.g)" ] }, { "cell_type": "markdown", "metadata": { "id": "fHsyN3gRkNu1" }, "source": [ "A more concise syntax to compute the optimal transport matrix is to use the `transport.solve`. Note how weights are assumed to be uniform if no parameter `a` and `b` is passed to `transport.solve`. " ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "id": "VCNc8Ptykdk6" }, "outputs": [], "source": [ "ot = transport.solve(x, y, a=a, b=b, epsilon=1e-2)" ] }, { "cell_type": "markdown", "metadata": { "id": "tya0lB1rkq7U" }, "source": [ "## Visualizes the transport" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "colab": { "height": 283 }, "executionInfo": { "elapsed": 504, "status": "ok", "timestamp": 1637706746437, "user": { "displayName": "", "photoUrl": "", "userId": "" }, "user_tz": -60 }, "id": "U98QCImkkoJc", "outputId": "fc3f5e39-d353-45b0-9ebf-a1c473ffa630" }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.imshow(ot.matrix, cmap='Purples')\n", "plt.colorbar();" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "colab": { "height": 265 }, "executionInfo": { "elapsed": 2787, "status": "ok", "timestamp": 1637695330954, "user": { "displayName": "", "photoUrl": "", "userId": "" }, "user_tz": -60 }, "id": "LOHQHnzzSsqd", "outputId": "f93bc42e-4bf1-4027-9ff7-029fa6e92c3e" }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plott = ott.tools.plot.Plot()\n", "_ = plott(ot)" ] }, { "cell_type": "markdown", "metadata": { "id": "KSTa0azglxNl" }, "source": [ "## Differentiation through Optimal Transport\n", "\n", "OTT returns quantities that are differentiable. In the following example, we leverage the gradients to move `N` points \n", "in a way that minimizes the overall regularized OT cost, given a ground cost function, here the squared Euclidean distance." ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "id": "4OdxCfCLgAZX" }, "outputs": [], "source": [ "def optimize(x: jnp.ndarray,\n", " y: jnp.ndarray,\n", " a: jnp.ndarray,\n", " b: jnp.ndarray,\n", " cost_fn=ott.geometry.costs.Euclidean(),\n", " num_iter: int = 101,\n", " dump_every: int = 10,\n", " learning_rate: float = 0.2):\n", " reg_ot_cost_vg = jax.value_and_grad(jax.jit(\n", " (lambda geom, a, b: ott.core.sinkhorn.sinkhorn(geom, a, b).reg_ot_cost)),\n", " argnums=0)\n", "\n", " ot = transport.solve(x, y, a=a, b=b, cost_fn=cost_fn, epsilon=1e-2, jit=True)\n", " result = [ot]\n", " for i in range(1, num_iter + 1):\n", " reg_ot_cost, geom_g = reg_ot_cost_vg(ot.geom, ot.a, ot.b)\n", " x = x - geom_g.x * learning_rate\n", " ot = transport.solve(x, y, a=a, b=b, cost_fn=cost_fn, epsilon=1e-2, jit=True)\n", " if i % dump_every == 0:\n", " result.append(ot)\n", "\n", " return result" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "colab": { "height": 458 }, "executionInfo": { "elapsed": 18181, "status": "ok", "timestamp": 1637761565776, "user": { "displayName": "", "photoUrl": "", "userId": "" }, "user_tz": -60 }, "id": "iF8IIUDeoWc-", "outputId": "22794b00-a4ea-4dbc-c943-ff01e8d85df3" }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " \n", "
\n", " \n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", "
\n", "
\n", "\n", "\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from IPython import display\n", "\n", "ots = optimize(x, y, a, b, num_iter=100, cost_fn=ott.geometry.costs.Euclidean())\n", "fig = plt.figure(figsize=(8, 5))\n", "plott = ott.tools.plot.Plot(fig=fig)\n", "anim = plott.animate(ots, frame_rate=4)\n", "html = display.HTML(anim.to_jshtml())\n", "display.display(html)\n", "plt.close()" ] }, { "cell_type": "markdown", "metadata": { "id": "ZlbYdocFxEtK" }, "source": [ "We could use another cost function, in this case Cosine distance, to achieve another kind of dynamics in optimization." ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "colab": { "height": 458 }, "executionInfo": { "elapsed": 21819, "status": "ok", "timestamp": 1637761591430, "user": { "displayName": "", "photoUrl": "", "userId": "" }, "user_tz": -60 }, "id": "IZXah5jZqjj8", "outputId": "366c3bba-541e-4e7c-c18d-b3f189b69366" }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " \n", "
\n", " \n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", "
\n", "
\n", "\n", "\n", "