Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import torch\n",
"import pyro\n",
"import pyro.distributions as dist\n",
"plt.rcParams['figure.figsize'] = (6, 6)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"a = torch.tensor(10.)\n",
"b = torch.tensor(3.)\n",
"x = torch.linspace(-4, 4, 101)\n",
"y = torch.linspace(-3, 3, 101)\n",
"xy = torch.stack(torch.meshgrid(x, y), -1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We want to match find $c, cx, cy$ such that $St(c, 0, [cx, cy]) \\sim St(a, 0, 1)St(b, 0, 1)$. This replicates the experiments in Section 4.2 of https://arxiv.org/pdf/1703.02428.pdf."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### target"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"z = dist.StudentT(torch.stack([a, b]), 0, 1).log_prob(xy).sum(-1)\n",
"plt.imshow(z, cmap=plt.cm.bone, vmin=-5);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### best KL"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"z1 = dist.MultivariateStudentT(6., torch.zeros(2), torch.tensor([0.9, 1.4]).sqrt().diag()).log_prob(xy)\n",
"plt.imshow(z1, cmap=plt.cm.bone, vmin=-5);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### best KL with tail preserved"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"z2 = dist.MultivariateStudentT(b, torch.zeros(2), torch.tensor([0.8, 1.1]).sqrt().diag()).log_prob(xy)\n",
"plt.imshow(z2, cmap=plt.cm.bone, vmin=-5);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### moment matching: order=2"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"def get_scale(a, b, o):\n",
" return a / b * torch.exp((torch.lgamma((a - o) / 2) - torch.lgamma(a / 2) + torch.lgamma(b / 2) - torch.lgamma((b - o) / 2)) * 2 / o)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"o = 2\n",
"cx = get_scale(a, b, o)\n",
"cy = 1.\n",
"z3 = dist.MultivariateStudentT(b, torch.zeros(2), torch.tensor([cx, cy]).sqrt().diag()).log_prob(xy)\n",
"plt.imshow(z3, cmap=plt.cm.bone, vmin=-5);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### absolute moment matching: order=1"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"o = 1\n",
"cx = get_scale(a, b, o)\n",
"cy = 1.\n",
"z4 = dist.MultivariateStudentT(b, torch.zeros(2), torch.tensor([cx, cy]).sqrt().diag()).log_prob(xy)\n",
"plt.imshow(z4, cmap=plt.cm.bone, vmin=-5);"
]
}
],
"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": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.