Skip to content

Instantly share code, notes, and snippets.

@abnan
Created May 31, 2019 22:27
Show Gist options
  • Save abnan/19782d46e8a8396267d2aee44b48a3de to your computer and use it in GitHub Desktop.
Save abnan/19782d46e8a8396267d2aee44b48a3de to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1753,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<torch._C.Generator at 0x7f1355b0d470>"
]
},
"execution_count": 1753,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import cv2\n",
"import torch.optim as optim\n",
"import torch\n",
"import torchvision\n",
"import torch.nn as nn\n",
"from torchvision import transforms\n",
"import torch.nn.functional as F\n",
"\n",
"torch.manual_seed(98)"
]
},
{
"cell_type": "code",
"execution_count": 1754,
"metadata": {},
"outputs": [],
"source": [
"# torch.set_printoptions(profile=\"full\")"
]
},
{
"cell_type": "code",
"execution_count": 1755,
"metadata": {},
"outputs": [],
"source": [
"im1 = cv2.imread(\"original.jpeg\",0)\n",
"# im1 = cv2.imread(\"black-line-md.png\",0)\n",
"im1 = cv2.normalize(im1, None, alpha=0, beta=1, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_32F)"
]
},
{
"cell_type": "code",
"execution_count": 1756,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[1., 1., 1., ..., 1., 1., 1.],\n",
" [1., 1., 1., ..., 1., 1., 1.],\n",
" [1., 1., 1., ..., 1., 1., 1.],\n",
" ...,\n",
" [1., 1., 1., ..., 1., 1., 1.],\n",
" [1., 1., 1., ..., 1., 1., 1.],\n",
" [1., 1., 1., ..., 1., 1., 1.]], dtype=float32)"
]
},
"execution_count": 1756,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"im1"
]
},
{
"cell_type": "code",
"execution_count": 1757,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7f12e412d3c8>"
]
},
"execution_count": 1757,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAQoAAAD8CAYAAACPd+p5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3XucHGWZ6PHfUzU9PRmGDJMrIQkQSAhEJQECsqsgiGCIIF6R6ApClsjNFXFXEc456Ofsuq6ul+UosIAXUAyiLIIagcgGOcsCgVwIhEAyISC5kBshZNJz6el69o+qt6Z6MqGS6enpnpnn+/kk011V3f1Wd9fT7/0VVcUYY96OV+kEGGOqnwUKY0wqCxTGmFQWKIwxqSxQGGNSWaAwxqQqW6AQkVki8pKINIvIteV6HWNM+Uk5+lGIiA+sBs4E1gNPA3NU9YU+fzFjTNmVK0dxEtCsqi+ragdwN3BemV7LGFNmNWV63vHAa4n764F37+3gUSN8PXxipkxJMcYALFnRvk1VR/fmseUKFKlEZB4wD+DQ8TUsfmhipZJizJDgj2t+tbePLVfRYwOQvPInRNtiqnqrqs5U1ZmjR/plSoYxpi+UK1A8DUwRkUkiUgtcADxQptcyxpRZWYoeqtopIlcBDwE+8BNVXVmO1zLGlF/Z6ihUdQGwoFzPb4zpP9Yz0xiTygKFMSaVBQpjTCoLFMaYVBYojDGpLFAYY1JZoDDGpLJAYYxJZYHCGJPKAoUxJpUFCmNMKgsUxphUFiiMMaksUBhjUlmgMMakskBhjEllgcIYk8oChTEmVa8DhYhMFJFFIvKCiKwUkS9G278uIhtEZHn0b3bfJdcYUwmlzJnZCXxZVZeKyIHAEhFZGO37vqr+a+nJM8ZUg14HClXdBGyKbu8SkVWEK4QZYwaZPqmjEJHDgeOAp6JNV4nIChH5iYg09cVrGGMqp+RAISINwL3A1ar6FnAzcCQwgzDH8d29PG6eiDwjIs9s3V4oNRnGmDIqKVCISIYwSNylqv8BoKqbVbWgqgFwG+HK5nuwJQWNGThKafUQ4MfAKlX9XmL7uMRhHwWe733yjDHVoJRWj/cAnwWeE5Hl0bbrgDkiMgNQ4BXg8yWl0BhTcaW0evwXID3ssmUEjRlkrGemMSaVBQpjTCoLFMaYVBYojDGpLFAYY1JZoDDGpLJAYYxJZYHCGJPKAoUxJpUFCmNMKgsUxphUFiiMMaksUBhjUlmgMMakskBhjEllgcIYk8oChTEmlQUKY0yqUubMBEBEXgF2AQWgU1VnisgI4FfA4YTzZp6vqjtKfS1jTGX0VY7idFWdoaozo/vXAo+o6hTgkei+MWaAKlfR4zzgjuj2HcBHyvQ6xph+0BeBQoGHRWSJiMyLto2N1iYFeB0Y2wevY4ypkJLrKID3quoGERkDLBSRF5M7VVVFRLs/KAoq8wAOHd8XyTDGlEvJOQpV3RD93QLcR7iE4Ga3Ylj0d0sPj7MlBY0ZIEpde/QAETnQ3QbOIlxC8AHgouiwi4D7S3kdY0xllZrnHwvcFy5DSg3wS1V9UESeBu4RkbnAq8D5Jb6OMaaCSgoUqvoyML2H7duBM0p5bmNM9bCemcaYVBYoBrlc0AFAXgtF27vfL2hAQYM9Hl/QgJagDYB2zff4HLmgo2hfLuiIn6v7Y94uTaZ6WbvkIFfv1QKQkbBlKa8FWoJ2GrxsfD+5H8KL28MjIz6+eDRIHQBe9LviAkeDV8eOQo4mvz5+bEGD+DXzWiArGQoa0En4OjX4PaYpICArmTK8A6YvWKAY5NxFWkNXIHAXdi7oICvFXwF3cSfvt2ueBq8uvp+8nQwSLUEbDV5dnJvIiE9eC2HASWRe81rAQwDoxL2eNZFXMwsUg5wvXtFFGmghDh7ulx3CoOGLUINPu+apIcxNZMQnIz65oCM+3hUnkjmBXNBBg1dXdJwLHN0lcy9oGMwCtHi7qSoWKAa5ggb44tGueQqqcQ6ioEr0ow5AVmrwJQwo/7xtGg9unMaG10biv1lDw2tC9k1l+Lo2al/ZitZHF78ndIw9kNzYWlrGe+w+NICR7Yxo2s05E5/nhtEvxDkKxwWPlqCNjPhkJbPHMab6WKAY5NzFn5UMBcKgkbwwXe7g4lfO4rn7j+HQe9az8UMT8NuUYeOE1kM6KZzewuimHZzY9CrnDF/OdZNOAuBLzatYmjucpTsnsmLDIchrB1Czrg4W1fE7/3089ejRvPrJgznunBf4xeGPAmG9RrL40lPxx1Qf+4QGOZejcH9zQQer88qFz36O7P0HMfIXSwBoOe8o8ufv4gvzHmJWfTvQVanpIXGuJCu1EHawY1Z9O2cOW0XriGdpOLKr3gLC4sWjrR4XP3oJ635wNLPubwVg+6ePZ9fZLdx94u28qzZTVJyxyszqJap7jNfqdzOn1+nihyZWOhmDUjL3sKojxyf+/e8Zs7SDNyfX0njeRhZMuwcAX4SsZOIL1gUWJ1n38MFDZgCwYMPS+BhX7+EudpdTcc+ZC8L7Zz93Ibk/jWHMsjY2nVzHA5d9m3F+bVF9iSkPf1zzksScMfvFchQD3N7K98mWh4IGHHPnlUz+wVrav9fKoi/8ND7Gl+IL1F3oySABXc2sBQ3iHEVS90rTZO4gKxmyfnj/8en3wPTw+MmLLuYLM85l9fVTWTXnR3EricvBuHPoys1kirYlc0vt2mnBpoysw9UA5yEUNNij81KA4ovHpN9dyuzxx5NvKrBg2cM0n/7THjtWlZvr0BUQ5mBzQQerTrudBSsXoR58eMopTHpgXtx3I2xRUQI0boXJayEMSFEQC9A4WNR7tewo5NhRyPX7uQ0FFiiMMaksUAxg7he2XTvjbLvLWcx48kI+dMIsarfU8NDG5bx47o/YGYQVislse39zOYZ6r5aWIKw0XXvBLfz8pYXUbvWZPf1Mjnv6gqLiVFYy+BJWqia7i7vncrmI4V4dw3vot2FKZ4FiAHNBod6rpaBB3DnqhG9cTkfzcP7pv+/npbk3A+HF1ugNi4sdrdrR4ziMcnFFhpagjXbNx7063UXe5A3jpbk3852nHyD3XBPTv31FUWevlqAtDjCu/sONGan3MkWvYfqeVWYOYC5AQHiRvP/CuQC0XraLF//qTnwJx3PsDFpp9IbFzZ0+9Nhjsj9kJRPnFgoa0OTXxxWyBQ2YnKnhpUtuZvriOZz18XDuo4fvvSN+fC7oICCgwauLn8dVcrr6D+u81fcsUAxwLdrO/S0TuevoCZy87GkA/u+Y5XGfiYz4cZBwXa0DgnjQV39JtsK4plb365/c1h50kqfA4hPv5Ae3TgNg1qR3c8aSbVzTtCYqsrTFj4vHkohHYKNRy8YCxQCW1wKnLbmY0d/K8vDGOxJ7vKJ+Dy5H0X28RkGl37Lq7nXyGo4xcT0yXf2KCwDJ8SLXjAjnaf7qOp9Z536Ge75xAotm3BmPWm3wskXBznIS5WMFugFs6iOXwsMjePjeO4qaR5N9K3JBR1w3kfw1doO++ku75mnXfFzEcDmKeq8WD4m7dSeHqbs6irwWePB3d9H54CiO/c8rAIpGrbrnN+XT62+KiEwVkeWJf2+JyNUi8nUR2ZDYPrsvEzxUJPs6uApAp13zHLHwEupW1/HMdT8EiFsEXHHDXWDuonNBwdVN9HelX1Yye+3M5Uap7i1dbt+y626ifmUdkxddHFfeWoDoH73+tqjqS9EygjOAE4Ac4XT9AN93+1R1QV8kdKjxxWNn0MrOoJUGr44afHYUchQ0YObiizhwaR2LL/seEBYtkkPCgfhCGmye/+JNNP65jvc8G87X7IJPjc1nUVZ99bNyBrBWVV/to+czQKM3jEZvGBAGjia/np/vOphD/tnn2a/eRINXRyeF+BiXvQfiFoDB6L9vuJHGrw/jljfHs62wG+jqG1KJXqdDQV8FiguA+Yn7V4nIChH5iYg09dFrDCnJL7zrdwAw/+hDeOi3PwdgW2F3/IvqKgKTM0wNVgVVHvrtz/ntseMY5R8Qb7d+FOVT8rsqIrXAh4FfR5tuBo4EZgCbgO/u5XHzROQZEXlm63Zr1uou+YV3lZNnzrmY961ojXtYuovEFU+Sj3V1FIORm7/i+Kc7OOuTn4u3J3ummr7VF+H3bGCpqm4GUNXNqlpQ1QC4jXCJwT3YkoLGDBx9ESjmkCh2uDVHIx8lXGLQ7Kewn0NY5m7w6jjum1ew8e86uG7US3Fzp5sW39VRDIXRk67itl3zfGPMMjb/QzvH/WPYZJqszDV9q+S1R4Ezgf9IbP62iDwnIiuA04EvlfIaQ5UbCOWLxzGPf5ZdhynLT76zqP7B9UVw2e0mvz7uX7CjkBuUF40Liq6V49mT5rN7gnLM45+1yswyKnVJwd3AyG7bPltSigxQ3GnqiC9s4dtP3opHNu6aXe/Vxsd47DmRTHIMxWDiRr364oEGbCvs5p45P+D6Mz6F/19WkVku1oW7Qnq6iJMzZnt4TPrDpQDUXlXD5ExNvK/7Ajp7q+kfbEECis/VF49Gr45RWZ/mS8Yx6ffh+7XunNviY5JzcQ7GwNlfLFBUSHKVLHc/OWM2wFGXhoO8Htq4HMjEYza2FXYXNQsOVcnp8R658DtcetQHwh3ndAWF5JB0myqv9yxQVFDyF87NFflW0EaTX8+UOy+n86YwiLQET4Z9JCRLQQNG+QdUbOKZSksuFpRcE2RCTQOrvxlO+jv5ruNo/szNRQsQ1Xu1RQsbmf1jgaLC3K+iW7avya9nRUcbU77bzIJnF0ZHhV/2Vu2IF8+p1HwSldZ9OLkb75EL8qy94BYAzp781+ycUzxidii/Z33BQmuFFDTAQ+KFfxu8Oto1z45Cjk/fcg1r/m18XIvv1v90v6Du2KEqIz4tQVvcwlGDT5NfH79fa388hffe+GWga/bwYWLFjlJYoKgQV3PvRn1CWDfxegFGL+tgzWk/K+qS7GaG8pA4Cz2UJVcac1PsuffruVNvZ8wz7fylsyXub2LFjdLYu1chLkeQHGIN8LGnP8+OqbVF/QHcfA3ueNfHYigK1/Doeu+yUlOUy3I5rzeOyfKR5XPDogrhe+nm4jD7b2h+26qAq5eA4mbMA3/fwEHnbIz7S7hfQzd2wwWQoTymISuZ+KJ3TcZuu9tXf+7ryO9HAF25j8IgHlFbbhYoKqintTZH/vpZ7p8W9oiv94qX2ks2oQ7V/gDdJ+Dpftvd/820Oxl798p4W7Kru9l/FiiMMaksUFSIGxLtWjXyWuBjzWfSMutd9svXBxq9WnZ94Bg+ve508lqgk6732uw/CxQV4kY6upaPjPis/sMUtnyq1QY2laglaKPeq2XTxztY9tAxcees7hXHZt9ZoKgQ1zci2XR32K838v9OmD9kWzT6iquzuGL6n5n0m22ATWpTKvtGVoj7lXNrXPzjtqPZePYhnFWfj/tVmN5x7981I15m8ykj+ea2qXEObih3VCuFBYoKcTkKAF+EhzcdQ2Z32Hxng5dK48Z1APhtsGjrUUXrmZj9Z4GiQpIjG2vweW39SFomhvNKWB1F6VzX+JaJwtoNo/e6pojZN/auVZCb7s4XD//NGtpGh+Vo+zKXzlVadjQFyPba+L4VPXrHvpEV0jVqtJOCBgzb5FF3yO6qrXBzuZwARXwf8X06CdNarRdfLuigZuJuDnit62vu2Ve+V/bpXYvW59giIs8nto0QkYUisib62xRtFxG5UUSao7U9ji9X4gcyNxK03qslQBm2VTli1HbqvdqqLHq4gVcZ8dHOTrSzk6yEk+n01MO0klzgqvdqGT9iJ9k3lVzQYTNclWBfw+vPgFndtl0LPKKqU4BHovsQTt8/Jfo3j3CdD9ONG2YOYTb5oOZW3tG4qSqLHu4ii4e3ez54YQuCmxG8mmQlE4+TOX3Mag5aG/arsCDRe/s0cY2qPiYih3fbfB5wWnT7DuBR4KvR9jtVVYEnReQgERmnqpv6IsGDhZulycms3875By0mI7XxbFfVwuVyChr0mHsIUKiiYBGgccvRBxpW8t8bjolbPWzymt4pZYarsYmL/3VgbHR7PPBa4rj10TYLFAkZCRcdbvCyAAQHHsB1k6K1kqR6ggQAGo269HwIChDVTXzkyFMI2qKh21WYZqmpQTs78af6FiBK1Cd53Cj3sF9jeG1JQWMGjlJyFJtdkSJaHWxLtH0DMDFx3IRoWxFVvRW4FWDm9LohN1FASzSJrpvTUdo7+HLzSs6qDyviqqnc7+pMdhRyNPn1fPCQcBLbB9Y+Hhefqim9AUpAgIfHso6Ab5xxOBB2cgvoufhk3l4pgeIB4CLgW9Hf+xPbrxKRu4F3AzutfmJPDV5dPP1+QQPyBzfyWMvRvG/Y0qqcKbpd8/EqZI6bTMe13lQLP/H/H946lo7xTRQ0iIKaVWj2xj4FChGZT1hxOUpE1gM3EAaIe0RkLvAqcH50+AJgNtAM5ICL+zjNg0JeC2SiL20nBVomZnnhrYOpGV19QQKI18/opIDUhF8b13JTTUECKJqIeMmOQ9l1WDZeetFDqvL9rXb72uoxZy+7zujhWAWuLCVRQ0HyAvPwyI31eGnrGPzJXtWu2REu4wdaKBRvqzJuPEdGfF7d0QQHe0XBw/IU+6/6PuUhwvXI3Bm0htPPHxbQsWZ41QaJgcS9f7mgg9bmRtrGaNy3opqanQcS+0ZWiFuJvNEbxo5CDhnTRk1rmC2uporBgcqt0ZrZJRQObge63nOz/+xdqxA3IKygAU1+PWNHvMXwdWHjj32ZS5eVDNsKu2l8OeCwcdsBm66/FPaNrBA3NZsLCmcf8gKdUZ8g+0KXZkchB8Ao/wA6s8LsceEQJet01XsWKCqkXfNxQGjXPP9r1IuM/c/XeaTVehGWqsmvJ68F7t7VxOind/API9bGwaNaR+dWOwsUFZKVDA1eXTx+ol3zvPKpcfztImtNLpXrM/G1xz7By59sIq+FuA+IDQzrHQsUFZScGzMrGY6d/SLj/lRjv3olcvNkHLLQZ+qp68iIH1cQW0Vx71igqKCArqbQggbcPek/GX7fMnYmiiTJSWGS625W62Qx/cVd8O59SAbXrGT4S2cLjY+s5oEpD1qTcx+wd88Yk8oCRQUNk7BnZphT6ARg24XHc+7zF+5xrDvGLcI7VAc2dS861ODvMX9HQQM+8dzFvP7JqUXFu3bNW86il+xdq5CWoK3oS1vv1bKtsJvWWW/R+sex8RRzyYDgKuJcJehQlTx3t/qXW9XcBYPO340i/8GdcSercFyKdWbrLQsUFdLg1e3xazfKP4AHZv47I1e20+gNoyVoK+pT4QLFzqB1yP4yhgGhs6hux0mu59q0poOHT7g1vt99RjGzf4bmt61K5KPa+XD90fCjGOvXsHlmliP+dAkNXh0NXl08j6ZbNKga56nsT8nRqgEaBwP3fk19dC6vn5SlMZon063vCl0tImb/WKCoIHfBu9mt3QS2//+qf+XoL79WdKw7xsOrygl4+4tr5XDd310uwRePbYXdbCvsZsrcVfz5iu/EK4a54kgu6BiydTulKmXiGlMCN3W8Lx4NUhdXyIXbPdb8/WSOvPtIANZecAsZ8ePZsAoaDPmp55OB0vWTOPH3Xwr3/ZPHKP/JosmAw9v2de8te+cqxF3k7oJ3X3Z3+8W/+RHnTHkvAC3nh7mJeq+2K8BUMvEV5IaLu+KHm2diSyHH1KufBeDBdU/F75Pb7+oorE9F71igqLBkriD5BfbF48UbpwFw4u0zWDXvpvj4ds1X5XR5/cFNu+cCgJuM5rSf/wMdN3ZGRz0Vv68uR5Esopj9Z4GiShU0YN3s2wH40ImzWX5RO8fUeuSCPeeuHEoy4tMStMWVvACPt2WYfOt6/vDE7yqcusErNbzuZTnB74jIi9GSgfeJyEHR9sNFpFVElkf/biln4gczV5uf1wKv39LAp35xNVnJ0OTX0675ITsexLVuQNfkvpf++vO89m8Ne3R5N31nX/JhP2PP5QQXAu9U1WOB1cDXEvvWquqM6N9lfZPMoSds4RA8hMXH303dduEdT3wmznIP1YpMX7x4yHhBA054Yi5124QVJ82nBj+eL9P0rdRAoaqPAW902/awqroC4ZOEa3eYPpTsJ9GunTz7lZs45PsZbn1zcpzTGKrqvbAb+w1bpzPhhzU8d81NQ7pfSX/oi5qdS4A/Ju5PEpFlIvJnETmlD57fGFNhJQUKEbke6ATuijZtAg5V1eOAa4BfisjwvTzWlhR8G26aPF+8uClw4T0/4/fvaIqbUIeiZNFr6alNLJz/03hfcmpB07d6/a6KyOeAc4DPRGt5oKrtqro9ur0EWAsc1dPjVfVWVZ2pqjNHjxyaX/q3kxwHAl2T8X581RZmffhv9tg/VGQlw6bOFj4y+0I+8lRz3H3bDfyyIkh59CpQiMgs4CvAh1U1l9g+WiT8qRORI4ApwMt9kdChpt6rLRoUlpUMnRSY17iRLf8nz1//y9UVTmFl5IIOzv7Xr/DmtzqYO3x93LvVDZSzHEV57Evz6HzgCWCqiKyPlhD8IXAgsLBbM+ipwAoRWQ78BrhMVd/o8YlNqu5FDDdwbOnMX/HWiW286/tXxPuSlZvuVzWZ63C/vE6lciTdmy+T6U6O4+jpMe2a5903Xs2uk1p5Yvq9RWugNHrDrHm0jPal1WOOqo5T1YyqTlDVH6vqZFWd2L0ZVFXvVdV3RNuOV1XrAVOC7vNRQNdU9CvefxPtx+9m5v++PO767QZFBYTrgxSPsgxo0XAhnORgqv7mzscFCJcON2DLFSPWd7YUPWZ1fjcnf/OL5N7Vytr3/7QowLjbPb1fpm9YPq1KdW/+dGMXmvz6uGfi8lNuo+bjW/nQeRdS0IBR/gGM8g+Iu3knnycrGRq9YWwr7I4ne6lErsKlxw37dul0Qc0VHSbUNMRFr1zQwd994jIaz9vIi++/vSjH0aodReNmhnKzcTlZF+4q5i4Id2EnR4y6gVFPzvgNt9w5ntkTTuCEpeFF8s2xK/YY4+Ce78BELqMSq5B3H/WaHN0J4YXvel5+c+tJACz7q3o+tOQxLjvoZTLiszNojSf2cbN9tWtn1a2qPphYoKhSyYspuRJ3RroWCHIXzCcOXM1lGzbwgc9cAsC0K4/lhb/+RZyNd7+y7ZqnwatjZ9BKfTRfZ38VQbrnHKCrniS5JmiD1NEStHHiE5cy4Yfh13Phy64JtCtIQPGUgBYkyssCRZVKDofOBXmyfqZoaHVBNf5VbYwCx5/u+gkAx/3TFRy15nJu/9TNvCfbVR+REZ8dhVw8XqQ/y/M91U24YOW0a56n2jP87a++RHa7sHD+TfE+FyTdZD9ujkz3vMkAYvqe1VFUqbcSc2U2+fXxZDUQXnT1Xm08AW9yLs2dQSvLrr+JumPe5FtnfZRpP7uSTZ0t8eOHR0Glvyv9XP2BG8MCXTmKggZsKexmxm1f5FtnfZRhx7zJc9cUBwn3mOTsXgXVeK2TRm+Y1VGUkQWKKtXk15MLOsgFHfEvqLtYXMeiRm9Y0SpY9VIb/0qvOGk+v/vzvXSM7uSSoz7AlHsvj/scuIupUp2TWrWryLGjkGPKvZdz0dFn0TahgwWP3cfiE++Mz9G10Ljg4Cpqk5PXJHMrFijKwwKFMSaVBYoqVu/VFlX0Jf92nw0L9uyg5YvHunNu448vP4mf85j9jtOZ8ujn4l/d5JwXjpvroqe1OuNsv2r4L7G9e+4kucyAe15XoemWKjjykYv59NFn4nUIf1zzeDxRT1YyRWNdunNFr+S5J98v0/esMnMIaNc8ay68mb98uoWzb/4K5/74ct6YmiXzoa0sOPZnAHGFaLLuwtUpuKJP3PdCwiJQMkAlX8ut1J7c1hYFo/ctOR+5fyQHrW2n5v1Z7njxYcb4j5f1/E3pLFAMcsnWgFFeLSu/cBMrO1r5m2cvJv+H0Xz2/LMAeGv2O9l0Tp5rT3qQeY0bAchpB40yLA4IbilDb1j4fGFdQTg1X14LBISzXrvX/O3uBr60aA7jHvE56KFVAASfGYV8eDu3Tf8xY/1aINPvLTBm/1mgGORca4CbxRtgcqaGxTPvInOiT/v1YXFg7qsZ3nhwGr/99in8+3tHUNMKuyYKbWMLeKPaOWzMG5w7bgWn1K8myIXdyJ/vUO7b+W6e33kIzdtH0bbuQGp3eDSsD4slI5fuIPvxDIf+3Yvc9b1FAHTyp6irdr0N4BpARBNlzUqZOb1OFz80sdLJGNQKGtBJgYJqvDZIcpm9ZDHjH7e9k0Wbj+Ivr4/A25ylbptQv1lpbG6l9pWt6PADAJBdOdqmjCU3NkNurMfu8YqOa+PQsW8w6+AX+OrINXFuIdnL1L1WLujAFyFcJ00scJSZP655iarO7M1jLUcxBLiuzj4eSGLxIbp6TLqRqb543DD6BW4Y/QK8c88FgXsqJiQ7hyW7U7vOXd3X0nDNvFmpseAwQNinNMi5ZQqTkgPC3IhLl7NIduyC4pm28lrYo7Iz2QHKzQnhVuRyywokJ5VJditPDhO3/g/VzQLFINd9LEdybMTe5qdIBpJk82n350qucJbXQlxp6gJBcoxJ94DjchU9tZyY6mNFjyGmp/4XsOcwb3d/Xy5gX7w9JsnvaYRoT/vMwGA5CmNMKgsUxphUFiiMMal6u/bo10VkQ2KN0dmJfV8TkWYReUlEPliuhBtj+k9v1x4F+H5ict0FACIyDbgAeEf0mJvc9P3GmIGrV2uPvo3zgLujhYDWAc3ASSWkzxhTBUqpo7hKRFZERZOmaNt44LXEMeujbXuwJQWNGTh6GyhuBo4EZhCuN/rd/X0CW1LQmIGjV4FCVTerakFVA+A2uooXG4Dk6K4J0TZjzADW27VHxyXufhRwLSIPABeISFZEJhGuPbq4tCQaYyottQt3tPboacAoEVkP3ACcJiIzAAVeAT4PoKorReQe4AWgE7hS1Ub7GDPQ2XwUxgwRpcxHYT0zjTGpLFAYY1JZoDDGpLJAYYxJZYHCGJPKAoUxJpUFCmNMKgsUxphUFiiMMaksUBhjUlmgMMakskBhjEllgcIYk8oChTEmlQUKY0wqCxTGmFQWKIwxqSxQGGNS9XbFc2jLAAAFXklEQVRJwV8llhN8RUSWR9sPF5HWxL5bypl4Y0z/SJ1cl3BJwR8Cd7oNqvopd1tEvgvsTBy/VlVn9FUCjTGVlxooVPUxETm8p30iIsD5wPv7NlnGmGpSah3FKcBmVV2T2DZJRJaJyJ9F5JS9PdCWFDRm4Cg1UMwB5ifubwIOVdXjgGuAX4rI8J4eaEsKGjNw9DpQiEgN8DHgV25btIr59uj2EmAtcFSpiTTGVFYpOYoPAC+q6nq3QURGi4gf3T6CcEnBl0tLojGm0valeXQ+8AQwVUTWi8jcaNcFFBc7AE4FVkTNpb8BLlPVN/oywcaY/rcvrR5z9rL9cz1suxe4t/RkGWOqifXMNMakskBhjEllgcIYk8oChTEmlQUKY0wqCxTGmFQWKIwxqSxQGGNSWaAwxqSyQGGMSWWBwhiTygKFMSaVBQpjTCoLFMaYVBYojDGpLFAYY1JZoDDGpLJAYYxJtS9zZk4UkUUi8oKIrBSRL0bbR4jIQhFZE/1tiraLiNwoIs0iskJEji/3SRhjymtfchSdwJdVdRpwMnCliEwDrgUeUdUpwCPRfYCzCWffngLMA27u81QbY/pVaqBQ1U2qujS6vQtYBYwHzgPuiA67A/hIdPs84E4NPQkcJCLj+jzlxph+s191FNEapMcBTwFjVXVTtOt1YGx0ezzwWuJh66Nt3Z/LlhQ0ZoDYl9XMARCRBsKp+K9W1bfC9YlDqqoiovvzwqp6K3Br9Nxb/XHNu4Ft+/McA8Qo7LwGksF8Xof19sH7FChEJEMYJO5S1f+INm8WkXGquikqWmyJtm8AJiYePiHatleqOlpEnlHVmfuX/Opn5zWwDPLzOry3j9+XVg8BfgysUtXvJXY9AFwU3b4IuD+x/cKo9eNkYGeiiGKMGYD2JUfxHuCzwHPRUoEA1wHfAu6Jlhh8FTg/2rcAmA00Azng4j5NsTGm3+3LkoL/Bchedp/Rw/EKXNmLtNzai8cMBHZeA4udVw8kvK6NMWbvrAu3MSZVxQOFiMwSkZeiLt/Xpj+ieonIKyLynIgsF5Fnom09dnWvdiLyExHZIiLPJ7YN+G77ezmvr4vIhuhzWy4isxP7vhad10si8sHKpDpd2YdaqGrF/gE+sBY4AqgFngWmVTJNJZ7PK8Cobtu+DVwb3b4W+JdKp3Mfz+VU4Hjg+bRzIay8/iNhXdbJwFOVTv9+ntfXgb/v4dhp0XcyC0yKvqt+pc9hL+c1Djg+un0gsDpKf598ZpXOUZwENKvqy6raAdxN2AV8MNlbV/eqpqqPAW902zzgu+3v5bz25jzgblVtV9V1hC15J5UtcSXQMg+1qHSg2Kfu3gOIAg+LyBIRmRdt21tX94GopG77Ve6qKAv+k0TxcECeV18OtXAqHSgGm/eq6vGEI2ivFJFTkzs1zPMNimamwXQuhCOcjwRmAJuA71Y2Ob3XfahFcl8pn1mlA8V+d/euZqq6Ifq7BbiPMJu62WXpunV1H4j2di4D+nNU1c2qWlDVALiNruLFgDqvtxtqEe3v9WdW6UDxNDBFRCaJSC1wAWEX8AFHRA4QkQPdbeAs4Hn23tV9IBqU3fa7lc0/Svi5QXheF4hIVkQmEc6xsri/07cvyj7Uogpqa2cT1tCuBa6vdHpKOI8jCGvInwVWunMBRhJO7LMG+BMwotJp3cfzmU+YDc8Tll/n7u1cCGvOfxR9hs8BMyud/v08r59H6V4RXUDjEsdfH53XS8DZlU7/25zXewmLFSuA5dG/2X31mVnPTGNMqkoXPYwxA4AFCmNMKgsUxphUFiiMMaksUBhjUlmgMMakskBhjEllgcIYk+p/AGRnxV2oajz5AAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.imshow(im1)"
]
},
{
"cell_type": "code",
"execution_count": 1758,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(201, 201)"
]
},
"execution_count": 1758,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"im1.shape"
]
},
{
"cell_type": "code",
"execution_count": 1759,
"metadata": {},
"outputs": [],
"source": [
"target = torch.tensor(im1).view(1, 1, im1.shape[0], im1.shape[1])"
]
},
{
"cell_type": "code",
"execution_count": 1760,
"metadata": {},
"outputs": [],
"source": [
"target = target.type(torch.FloatTensor)"
]
},
{
"cell_type": "code",
"execution_count": 1761,
"metadata": {},
"outputs": [],
"source": [
"theta = torch.zeros(1, 2, 3)\n",
"theta[:, :, :2] = torch.tensor([[torch.cos(torch.tensor(0.785398)), -torch.sin(torch.tensor(0.785398))],\n",
" [torch.sin(torch.tensor(0.785398)), torch.cos(torch.tensor(0.785398))]])\n",
"theta[:, :, 2] = 0\n",
"grid = F.affine_grid(theta, target.size())\n",
"transformed_image = F.grid_sample(target, grid)\n",
"input = transformed_image.type(torch.FloatTensor)"
]
},
{
"cell_type": "code",
"execution_count": 1762,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"torch.Size([201, 201])\n"
]
},
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7f12e408ea58>"
]
},
"execution_count": 1762,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"printout = input.detach()\n",
"printout = printout.view(im1.shape[0], im1.shape[1])\n",
"print(printout.shape)\n",
"\n",
"plt.imshow(printout)"
]
},
{
"cell_type": "code",
"execution_count": 1763,
"metadata": {},
"outputs": [],
"source": [
"input.type()\n",
"input.requires_grad=True"
]
},
{
"cell_type": "code",
"execution_count": 1764,
"metadata": {},
"outputs": [],
"source": [
"class MyNet(nn.Module):\n",
" def __init__(self):\n",
" super(MyNet, self).__init__()\n",
" self.theta = torch.nn.Parameter(torch.randn(1, 2, 3))\n",
"\n",
" def forward(self, im):\n",
" self.grid = F.affine_grid(self.theta, im.size())\n",
" return F.grid_sample(im, self.grid)"
]
},
{
"cell_type": "code",
"execution_count": 1765,
"metadata": {},
"outputs": [],
"source": [
"myNet = MyNet()"
]
},
{
"cell_type": "code",
"execution_count": 1766,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1\n"
]
}
],
"source": [
"params = list(myNet.parameters())\n",
"print(len(params))\n",
"# print(params[0].size())"
]
},
{
"cell_type": "code",
"execution_count": 1767,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Parameter containing:\n",
"tensor([[[-0.5530, -1.2419, 1.1800],\n",
" [-0.7854, -0.7418, -0.9754]]], requires_grad=True)\n"
]
}
],
"source": [
"print(myNet.theta)"
]
},
{
"cell_type": "code",
"execution_count": 1768,
"metadata": {},
"outputs": [],
"source": [
"optimizer = optim.SGD(myNet.parameters(), lr=0.001)"
]
},
{
"cell_type": "code",
"execution_count": 1769,
"metadata": {},
"outputs": [],
"source": [
"criterion = nn.MSELoss()"
]
},
{
"cell_type": "code",
"execution_count": 1770,
"metadata": {},
"outputs": [],
"source": [
"output = myNet(input)"
]
},
{
"cell_type": "code",
"execution_count": 1771,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"torch.Size([201, 201])\n"
]
},
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7f12e4070c88>"
]
},
"execution_count": 1771,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"printout = output.detach()\n",
"printout = printout.view(im1.shape[0], im1.shape[1])\n",
"print(printout.shape)\n",
"\n",
"plt.imshow(printout)"
]
},
{
"cell_type": "code",
"execution_count": 1772,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"tensor(0.9881, grad_fn=<MseLossBackward>)\n",
"tensor(0.0183, grad_fn=<MseLossBackward>)\n",
"tensor(0.0182, grad_fn=<MseLossBackward>)\n",
"tensor(0.0179, grad_fn=<MseLossBackward>)\n",
"tensor(0.0179, grad_fn=<MseLossBackward>)\n",
"tensor(0.0179, grad_fn=<MseLossBackward>)\n",
"tensor(0.0179, grad_fn=<MseLossBackward>)\n",
"tensor(0.0179, grad_fn=<MseLossBackward>)\n",
"tensor(0.0179, grad_fn=<MseLossBackward>)\n",
"tensor(0.0179, grad_fn=<MseLossBackward>)\n"
]
}
],
"source": [
"loss_list=[]\n",
"for i in range(10000):\n",
" optimizer.zero_grad() # zero the gradient buffers\n",
" output = myNet(input)\n",
"# print(output.grad_fn)\n",
" loss = criterion(output, target)\n",
" if(i%1000==0):\n",
" print(loss)\n",
" loss_list.append(loss.detach())\n",
" loss.backward()\n",
" optimizer.step()"
]
},
{
"cell_type": "code",
"execution_count": 1773,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"tensor(0.0179, grad_fn=<MseLossBackward>)\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(range(len(loss_list)), loss_list)\n",
"print(loss)"
]
},
{
"cell_type": "code",
"execution_count": 1774,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Parameter containing:\n",
"tensor([[[-0.1558, -0.6956, 0.1224],\n",
" [-0.4692, -0.0874, -0.1464]]], requires_grad=True)"
]
},
"execution_count": 1774,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"myNet.theta"
]
},
{
"cell_type": "code",
"execution_count": 1775,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"torch.Size([201, 201])\n"
]
},
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7f12e3f51cf8>"
]
},
"execution_count": 1775,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"printim = output.detach()\n",
"printim = printim.view(im1.shape[0], im1.shape[1])\n",
"print(printim.shape)\n",
"\n",
"plt.imshow(printim)"
]
},
{
"cell_type": "code",
"execution_count": 1776,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"torch.Size([201, 201])\n"
]
},
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7f12e3f2ccf8>"
]
},
"execution_count": 1776,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"printinput = target.detach()\n",
"printinput = printinput.view(im1.shape[0], im1.shape[1])\n",
"print(printinput.shape)\n",
"\n",
"plt.imshow(printinput)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"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.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment