Skip to content

Instantly share code, notes, and snippets.

@georgeadam
Created September 8, 2019 15:14
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save georgeadam/b48c948ce71a16bbd915b09384e431ee to your computer and use it in GitHub Desktop.
Save georgeadam/b48c948ce71a16bbd915b09384e431ee to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# MNIST Distances"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import torch\n",
"from torchvision.datasets import MNIST\n",
"import torchvision.transforms as transforms"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<torch._C.Generator at 0x7f6c0195ef70>"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mnist_dir = \".\"\n",
"torch.manual_seed(1)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"train_set = MNIST(root=mnist_dir, train=True)\n",
"transform = transforms.ToTensor()\n",
"train_set.transform = transform\n",
"train_loader = torch.utils.data.DataLoader(train_set, batch_size=60000, shuffle=True, num_workers=2)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"test_set = MNIST(root=mnist_dir, train=False, transform=transform)\n",
"test_loader = torch.utils.data.DataLoader(test_set, batch_size=10000, shuffle=True, num_workers=2)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"train_imgs, train_labels = next(iter(train_loader))\n",
"test_imgs, test_labels = next(iter(test_loader))"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"partitions = [\"train\", \"test\"]\n",
"norms = [float(\"inf\"), 1, 2]\n",
"stats = [\"min\", \"max\", \"mean\", \"std\"]\n",
"labels = list(range(10))\n",
"data = {\"train\": {\"imgs\": train_imgs, \"labels\": train_labels}, \"test\": {\"imgs\": test_imgs, \"labels\": test_labels}}\n",
"\n",
"within_class_distances = {partition: {label: {norm: [] for norm in norms} for label in labels} for partition in partitions}\n",
"all_distances = {partition: {norm: {} for norm in norms} for partition in partitions}\n",
"imgs_per_class = {partition: {label: torch.tensor([]) for label in range(10)} for partition in partitions}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Extract 100 images per class"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"for partition in partitions:\n",
" for label in labels:\n",
" temp = data[partition][\"labels\"] == label\n",
" idx = torch.arange(len(data[partition][\"labels\"])).long()[temp]\n",
" idx = idx[:100]\n",
" imgs_per_class[partition][label] = data[partition][\"imgs\"][idx]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Compute distances"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"for partition in partitions:\n",
" for norm in norms:\n",
" for label1 in range(len(labels)):\n",
" for label2 in range(label1, len(labels)):\n",
" pair = \"{}_{}\".format(label1, label2)\n",
" all_distances[partition][norm][pair] = []\n",
" \n",
" for j in range(len(imgs_per_class[partition][label1])):\n",
" img1 = imgs_per_class[partition][label1][j]\n",
" \n",
" if label1 != label2:\n",
" start = 0\n",
" else:\n",
" start = j + 1\n",
" \n",
" for k in range(start, len(imgs_per_class[partition][label2])):\n",
" img2 = imgs_per_class[partition][label2][k]\n",
" dist = torch.norm(img1 - img2, p=norm)\n",
" all_distances[partition][norm][pair].append(dist.item())\n",
" \n",
" all_distances[partition][norm][\"{}_{}\".format(label2, label1)] = all_distances[partition][norm][pair]"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"heatmaps = {partition: {norm: np.zeros([len(labels), len(labels)]) for norm in norms} for partition in partitions}\n",
"\n",
"for partition in partitions:\n",
" for norm in norms:\n",
" for j in labels:\n",
" for k in labels:\n",
" pair = \"{}_{}\".format(j, k)\n",
" mean_dist = torch.mean(torch.tensor(all_distances[partition][norm][pair]))\n",
" heatmaps[partition][norm][j, k] = mean_dist"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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woybUN0q2/nCkTXxTk+zI9y0oufM/yV7M6LvLTzXLQxYaTc7wk1JL+FhdoSbkla88PT9jo/GGvZajf472ZDX2dllliGvcyM3vI5H69atad26NSdPnuTkyZOkpqbi7u5OyZIlqVy5Mjab7UZPISIiIgL8hQuIlS1blrJly+ZnFhERkX8dNwrO+gsjFJ66l4iIiBR6he6S6SIiIv9LCtI1NoygioeIiIgYRhMPERERMYxOtYiIiJioIF3cywiqeIiIiIhhVPEQERExUUH6k/VGUMVDREREDKOKh4iIiIm0xkNEREQkn6jiISIiYiKt8RARERHJJ6p4iIiImKggrvHIzMwkJCSELVu2kJycTOXKlXn88cepUaPGLT+3Kh4iIiLiYvny5WzYsIFnnnmGOXPmULZsWV5++WXOnTt3y8+tiYeIiIiJ3HAY8vNX7Nixg1atWlG/fn3KlClDv379SE1N5dChQ//A/1dEREQkl9tvv52dO3cSGxtLdnY269evx8PDgypVqtzyc2uNh4iIiImM+lZLcnIyycnJee739vbG29vb5b6BAwcyb948hg8fjpubGxaLhbFjx1KmTJlbzqGJDcbHcAAAIABJREFUh4iIyL/A6tWrWbFiRZ77g4KC6NWrl8t9J06cwNPTkwkTJuDr68u6deuYP38+06ZNIyAg4JZyaOIhIiJiIqO+1dKtWzfatm2b5/6rqx3x8fG88847TJ48mdq1awNQtWpVoqOjCQkJ4bnnnrulHKZOPBznL5r58jctzdfsBDfHb1uK2RFuWloZ7xvvVADYb7OYHeGmeSQXjiVbASvtZke4accHFI42Lbu6cBynCbXMTvDvdq1TKtdy7NgxsrKyqFatmsv91atXZ8eOHbeco3CMKhERkf9RbhaHIT83y9fX+Wk7MjLS5f6oqKh/ZI2HJh4iIiKSo1q1atSsWZOFCxcSGhrKqVOnCA4OZt++ffTo0eOWn19rPERERExU0K5c6ubmxsSJEwkODubdd98lKSmJihUrMnXq1H/kyqWaeIiIiIgLHx8fnnrqqXx5bk08RERETFTQKh75TWs8RERExDCqeIiIiJjor/4dlcJOFQ8RERExjCoeIiIiJtIaDxEREZF8ooqHiIiIiVTxEBEREcknqniIiIiYSBUPERERkXyiioeIiIiJVPEQERERySeqeIiIiJhIVy4VERER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\n",
"text/plain": [
"<Figure size 576x576 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.style.use(\"ggplot\")\n",
"fig = plt.figure(figsize=(8, 8))\n",
"ax = fig.add_subplot(111)\n",
"sns.heatmap(heatmaps[\"train\"][2], ax=ax, cmap=\"viridis_r\", annot=True, fmt=\".1f\")\n",
"plt.tight_layout()\n",
"plt.savefig(\"temp.png\")"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "dl",
"language": "python",
"name": "dl"
},
"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.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment