microsoft/AI-For-Beginners

Public

mirrored fromhttps://github.com/microsoft/AI-For-BeginnersAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
bd71e3291e0f016240b18083a6979e5290d17f11

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

lessons/4-ComputerVision/09-Autoencoders/AutoEncodersPyTorch.ipynb

1lines · modecode

1{"cells":[{"cell_type":"markdown","metadata":{"id":"u2U7TIRdKNGu"},"source":["# [Autoencoders](https://arxiv.org/abs/2201.03898)"]},{"cell_type":"markdown","metadata":{"id":"it5nmu_-c5-E"},"source":["When training CNNs, one of the problems is that we need a lot of labeled data. In the case of image classification, we need to separate images into different classes, which is a manual effort.\n","\n","However, we might want to use raw (unlabeled) data for training CNN feature extractors, which is called **self-supervised learning**. Instead of labels, we will use training images as both network input and output. The main idea of **autoencoder** is that we will have an **encoder network** that converts input image into some **latent space** (normally it is just a vector of some smaller size), then the **decoder network**, whose goal would be to reconstruct the original image.\n","\n","Since we are training autoencoder to capture as much of the information from the original image as possible for accurate reconstruction, the network tries to find the best **embedding** of input images to capture the meaning.\n","\n","![AutoEncoder Diagram](images/autoencoder_schema.jpg)\n","\n","> Image from [Keras blog](https://blog.keras.io/building-autoencoders-in-keras.html)\n","\n","Let's create simplest autoencoder for MNIST!"]},{"cell_type":"code","execution_count":182,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T00:15:39.262403Z","iopub.status.busy":"2022-04-08T00:15:39.262149Z","iopub.status.idle":"2022-04-08T00:15:39.268143Z","shell.execute_reply":"2022-04-08T00:15:39.267475Z","shell.execute_reply.started":"2022-04-08T00:15:39.262376Z"},"id":"6n8fzzN-2T1h","trusted":true},"outputs":[],"source":["import torch\n","import torchvision\n","import matplotlib.pyplot as plt\n","from torchvision import transforms\n","from torch import nn\n","from torch import optim\n","from tqdm import tqdm\n","import numpy as np\n","import torch.nn.functional as F\n","torch.manual_seed(42)\n","np.random.seed(42)"]},{"cell_type":"markdown","metadata":{},"source":["Define training parameters and check if the GPU is available:"]},{"cell_type":"code","execution_count":183,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T00:15:39.530041Z","iopub.status.busy":"2022-04-08T00:15:39.529522Z","iopub.status.idle":"2022-04-08T00:15:39.534247Z","shell.execute_reply":"2022-04-08T00:15:39.533327Z","shell.execute_reply.started":"2022-04-08T00:15:39.530006Z"},"id":"bjL-jOgi3gmG","trusted":true},"outputs":[],"source":["device = 'cuda:0' if torch.cuda.is_available() else 'cpu'\n","train_size = 0.9\n","lr = 1e-3\n","eps = 1e-8\n","batch_size = 256\n","epochs = 30"]},{"cell_type":"markdown","metadata":{},"source":["The following function will load the MNIST dataset and apply specified transforms to it. It will also split it into train/test datasets."]},{"cell_type":"code","execution_count":184,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T00:15:39.893727Z","iopub.status.busy":"2022-04-08T00:15:39.893160Z","iopub.status.idle":"2022-04-08T00:15:39.899407Z","shell.execute_reply":"2022-04-08T00:15:39.898565Z","shell.execute_reply.started":"2022-04-08T00:15:39.893688Z"},"id":"g2Eo43713Sxb","trusted":true},"outputs":[],"source":["def mnist(train_part, transform=None):\n"," dataset = torchvision.datasets.MNIST('.', download=True, transform=transform)\n"," train_part = int(train_part * len(dataset))\n"," train_dataset, test_dataset = torch.utils.data.random_split(dataset, [train_part, len(dataset) - train_part])\n"," return train_dataset, test_dataset"]},{"cell_type":"markdown","metadata":{},"source":["Now let's load the dataset and define dataloaders for train and test:"]},{"cell_type":"code","execution_count":187,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T00:15:41.292476Z","iopub.status.busy":"2022-04-08T00:15:41.292238Z","iopub.status.idle":"2022-04-08T00:15:41.299801Z","shell.execute_reply":"2022-04-08T00:15:41.298897Z","shell.execute_reply.started":"2022-04-08T00:15:41.292449Z"},"id":"jAI3uK86_zHM","trusted":true},"outputs":[],"source":["transform = transforms.Compose([transforms.ToTensor()])\n","\n","train_dataset, test_dataset = mnist(train_size, transform)\n","\n","train_dataloader = torch.utils.data.DataLoader(train_dataset, drop_last=True, batch_size=batch_size, shuffle=True)\n","test_dataloader = torch.utils.data.DataLoader(test_dataset, batch_size=1, shuffle=False)\n","dataloaders = (train_dataloader, test_dataloader)"]},{"cell_type":"code","execution_count":188,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T00:15:41.692950Z","iopub.status.busy":"2022-04-08T00:15:41.692376Z","iopub.status.idle":"2022-04-08T00:15:41.700707Z","shell.execute_reply":"2022-04-08T00:15:41.699723Z","shell.execute_reply.started":"2022-04-08T00:15:41.692909Z"},"id":"LdyQz4092fRV","trusted":true},"outputs":[],"source":["def plotn(n, data, noisy=False, super_res=None):\n"," fig, ax = plt.subplots(1, n)\n"," for i, z in enumerate(data):\n"," if i == n:\n"," break\n"," preprocess = z[0].reshape(1, 28, 28) if z[0].shape[1] == 28 else z[0].reshape(1, 14, 14) if z[0].shape[1] == 14 else z[0]\n"," if super_res is not None:\n"," _transform = transforms.Resize((int(preprocess.shape[1] / super_res), int(preprocess.shape[2] / super_res)))\n"," preprocess = _transform(preprocess)\n","\n"," if noisy:\n"," shapes = list(preprocess.shape)\n"," preprocess += noisify(shapes)\n","\n"," ax[i].imshow(preprocess[0])\n"," plt.show()"]},{"cell_type":"code","execution_count":250,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T01:10:46.485196Z","iopub.status.busy":"2022-04-08T01:10:46.484414Z","iopub.status.idle":"2022-04-08T01:10:46.489587Z","shell.execute_reply":"2022-04-08T01:10:46.488769Z","shell.execute_reply.started":"2022-04-08T01:10:46.485158Z"},"id":"FjpCEs-oWu6_","trusted":true},"outputs":[],"source":["def noisify(shapes):\n"," return np.random.normal(loc=0.5, scale=0.3, size=shapes)"]},{"cell_type":"code","execution_count":190,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T00:15:42.470833Z","iopub.status.busy":"2022-04-08T00:15:42.470589Z","iopub.status.idle":"2022-04-08T00:15:42.855919Z","shell.execute_reply":"2022-04-08T00:15:42.853605Z","shell.execute_reply.started":"2022-04-08T00:15:42.470808Z"},"id":"NeWJoiFC4A6J","outputId":"e680eb07-bf94-4301-8742-852103885624","trusted":true},"outputs":[{"data":{"image/png":"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","text/plain":["<Figure size 432x288 with 5 Axes>"]},"metadata":{"needs_background":"light"},"output_type":"display_data"}],"source":["plotn(5, train_dataset)"]},{"cell_type":"code","execution_count":191,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T00:15:42.857823Z","iopub.status.busy":"2022-04-08T00:15:42.857536Z","iopub.status.idle":"2022-04-08T00:15:42.866008Z","shell.execute_reply":"2022-04-08T00:15:42.865357Z","shell.execute_reply.started":"2022-04-08T00:15:42.857787Z"},"id":"NnI2YvOg4DbT","trusted":true},"outputs":[],"source":["class Encoder(nn.Module):\n"," def __init__(self):\n"," super().__init__()\n"," self.conv1 = nn.Conv2d(1, 16, kernel_size=(3, 3), padding='same')\n"," self.maxpool1 = nn.MaxPool2d(kernel_size=(2, 2))\n"," self.conv2 = nn.Conv2d(16, 8, kernel_size=(3, 3), padding='same')\n"," self.maxpool2 = nn.MaxPool2d(kernel_size=(2, 2))\n"," self.conv3 = nn.Conv2d(8, 8, kernel_size=(3, 3), padding='same')\n"," self.maxpool3 = nn.MaxPool2d(kernel_size=(2, 2), padding=(1, 1))\n"," self.relu = nn.ReLU()\n","\n"," def forward(self, input):\n"," hidden1 = self.maxpool1(self.relu(self.conv1(input)))\n"," hidden2 = self.maxpool2(self.relu(self.conv2(hidden1)))\n"," encoded = self.maxpool3(self.relu(self.conv3(hidden2)))\n"," return encoded"]},{"cell_type":"code","execution_count":192,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T00:15:43.169659Z","iopub.status.busy":"2022-04-08T00:15:43.169239Z","iopub.status.idle":"2022-04-08T00:15:43.178700Z","shell.execute_reply":"2022-04-08T00:15:43.178010Z","shell.execute_reply.started":"2022-04-08T00:15:43.169622Z"},"id":"mZGB4Vr47478","trusted":true},"outputs":[],"source":["class Decoder(nn.Module):\n"," def __init__(self):\n"," super().__init__()\n"," self.conv1 = nn.Conv2d(8, 8, kernel_size=(3, 3), padding='same')\n"," self.upsample1 = nn.Upsample(scale_factor=(2, 2))\n"," self.conv2 = nn.Conv2d(8, 8, kernel_size=(3, 3), padding='same')\n"," self.upsample2 = nn.Upsample(scale_factor=(2, 2))\n"," self.conv3 = nn.Conv2d(8, 16, kernel_size=(3, 3))\n"," self.upsample3 = nn.Upsample(scale_factor=(2, 2))\n"," self.conv4 = nn.Conv2d(16, 1, kernel_size=(3, 3), padding='same')\n"," self.relu = nn.ReLU()\n"," self.sigmoid = nn.Sigmoid()\n","\n"," def forward(self, input):\n"," hidden1 = self.upsample1(self.relu(self.conv1(input)))\n"," hidden2 = self.upsample2(self.relu(self.conv2(hidden1)))\n"," hidden3 = self.upsample3(self.relu(self.conv3(hidden2)))\n"," decoded = self.sigmoid(self.conv4(hidden3))\n"," return decoded"]},{"cell_type":"code","execution_count":193,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T00:15:43.593770Z","iopub.status.busy":"2022-04-08T00:15:43.593178Z","iopub.status.idle":"2022-04-08T00:15:43.600152Z","shell.execute_reply":"2022-04-08T00:15:43.599205Z","shell.execute_reply.started":"2022-04-08T00:15:43.593731Z"},"id":"SDGiAPhbBBLY","trusted":true},"outputs":[],"source":["class AutoEncoder(nn.Module):\n"," def __init__(self, super_resolution=False):\n"," super().__init__()\n"," if not super_resolution:\n"," self.encoder = Encoder()\n"," else:\n"," self.encoder = SuperResolutionEncoder()\n"," self.decoder = Decoder()\n","\n"," def forward(self, input):\n"," encoded = self.encoder(input)\n"," decoded = self.decoder(encoded)\n"," return decoded"]},{"cell_type":"code","execution_count":194,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T00:15:44.069329Z","iopub.status.busy":"2022-04-08T00:15:44.068875Z","iopub.status.idle":"2022-04-08T00:15:44.079486Z","shell.execute_reply":"2022-04-08T00:15:44.078748Z","shell.execute_reply.started":"2022-04-08T00:15:44.069289Z"},"id":"nZyG_mNu_Pnc","trusted":true},"outputs":[],"source":["model = AutoEncoder().to(device)\n","optimizer = optim.Adam(model.parameters(), lr=lr, eps=eps)\n","loss_fn = nn.BCELoss()"]},{"cell_type":"code","execution_count":259,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T01:25:58.828126Z","iopub.status.busy":"2022-04-08T01:25:58.827634Z","iopub.status.idle":"2022-04-08T01:25:58.844248Z","shell.execute_reply":"2022-04-08T01:25:58.843270Z","shell.execute_reply.started":"2022-04-08T01:25:58.828092Z"},"id":"iiIy87v2_rUr","trusted":true},"outputs":[],"source":["def train(dataloaders, model, loss_fn, optimizer, epochs, device, noisy=None, super_res=None):\n"," tqdm_iter = tqdm(range(epochs))\n"," train_dataloader, test_dataloader = dataloaders[0], dataloaders[1]\n","\n"," for epoch in tqdm_iter:\n"," model.train()\n"," train_loss = 0.0\n"," test_loss = 0.0\n","\n"," for batch in train_dataloader:\n"," imgs, labels = batch\n"," shapes = list(imgs.shape)\n","\n"," if super_res is not None:\n"," shapes[2], shapes[3] = int(shapes[2] / super_res), int(shapes[3] / super_res)\n"," _transform = transforms.Resize((shapes[2], shapes[3]))\n"," imgs_transformed = _transform(imgs)\n"," imgs_transformed = imgs_transformed.to(device)\n","\n"," imgs = imgs.to(device)\n"," labels = labels.to(device)\n","\n"," if noisy is not None:\n"," noisy_tensor = noisy[0]\n"," else:\n"," noisy_tensor = torch.zeros(tuple(shapes)).to(device)\n","\n"," if super_res is None:\n"," imgs_noisy = imgs + noisy_tensor\n"," else:\n"," imgs_noisy = imgs_transformed + noisy_tensor\n","\n"," imgs_noisy = torch.clamp(imgs_noisy, 0., 1.)\n","\n"," preds = model(imgs_noisy)\n"," loss = loss_fn(preds, imgs)\n","\n"," optimizer.zero_grad()\n"," loss.backward()\n"," optimizer.step()\n","\n"," train_loss += loss.item()\n","\n"," model.eval()\n"," with torch.no_grad():\n"," for batch in test_dataloader:\n"," imgs, labels = batch\n"," shapes = list(imgs.shape)\n","\n"," if super_res is not None:\n"," shapes[2], shapes[3] = int(shapes[2] / super_res), int(shapes[3] / super_res)\n"," _transform = transforms.Resize((shapes[2], shapes[3]))\n"," imgs_transformed = _transform(imgs)\n"," imgs_transformed = imgs_transformed.to(device)\n","\n","\n"," imgs = imgs.to(device)\n"," labels = labels.to(device)\n","\n"," if noisy is not None:\n"," test_noisy_tensor = noisy[1]\n"," else:\n"," test_noisy_tensor = torch.zeros(tuple(shapes)).to(device)\n","\n"," if super_res is None:\n"," imgs_noisy = imgs + test_noisy_tensor\n"," else:\n"," imgs_noisy = imgs_transformed + test_noisy_tensor\n","\n"," imgs_noisy = torch.clamp(imgs_noisy, 0., 1.)\n","\n"," preds = model(imgs_noisy)\n"," loss = loss_fn(preds, imgs)\n","\n"," test_loss += loss.item()\n","\n"," train_loss /= len(train_dataloader)\n"," test_loss /= len(test_dataloader)\n","\n"," tqdm_dct = {'train loss:': train_loss, 'test loss:': test_loss}\n"," tqdm_iter.set_postfix(tqdm_dct, refresh=True)\n"," tqdm_iter.refresh()"]},{"cell_type":"code","execution_count":196,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T00:15:44.969616Z","iopub.status.busy":"2022-04-08T00:15:44.969345Z","iopub.status.idle":"2022-04-08T00:22:34.533469Z","shell.execute_reply":"2022-04-08T00:22:34.532667Z","shell.execute_reply.started":"2022-04-08T00:15:44.969587Z"},"id":"PMqO8eOxCemz","trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":["100%|██████████| 30/30 [06:49<00:00, 13.65s/it, train loss:=0.104, test loss:=0.104]\n"]}],"source":["train(dataloaders, model, loss_fn, optimizer, epochs, device)"]},{"cell_type":"code","execution_count":197,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T00:22:34.535491Z","iopub.status.busy":"2022-04-08T00:22:34.535154Z","iopub.status.idle":"2022-04-08T00:22:35.701465Z","shell.execute_reply":"2022-04-08T00:22:35.700797Z","shell.execute_reply.started":"2022-04-08T00:22:34.535452Z"},"id":"kR3n0EnjOts0","trusted":true},"outputs":[{"data":{"image/png":"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","text/plain":["<Figure size 432x288 with 5 Axes>"]},"metadata":{"needs_background":"light"},"output_type":"display_data"},{"data":{"image/png":"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","text/plain":["<Figure size 432x288 with 5 Axes>"]},"metadata":{"needs_background":"light"},"output_type":"display_data"}],"source":["model.eval()\n","predictions = []\n","plots = 5\n","for i, data in enumerate(test_dataset):\n"," if i == plots:\n"," break\n"," predictions.append(model(data[0].to(device).unsqueeze(0)).detach().cpu())\n","plotn(plots, test_dataset)\n","plotn(plots, predictions)"]},{"cell_type":"markdown","metadata":{"id":"1JUmf9i1dg2i"},"source":["> **Task 1**: Try to train autoencoder with very small latent vector size, eg. 2, and plot the dots corresponding to different digits. *Hint: Use fully-connected dense layer after the convoluitonal part to reduce the vector size to the required value.*\n","\n","> **Task 2**: Starting from different digits, obtain their latent space representations, and see what effect adding some noise to the latent space has on the resulting digits."]},{"cell_type":"markdown","metadata":{"id":"tjdFt03rULX-"},"source":["## Denoising\n","\n","Autoencoders can be effectively used to remove noise from images. In order to train denoiser, we will start with noise-free images, and add artificial noise to them. Then, we will feed autoencoder with noisy images as input, and noise-free images as output.\n","\n","Let's see how this works for MNIST:"]},{"cell_type":"code","execution_count":260,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T01:26:06.259333Z","iopub.status.busy":"2022-04-08T01:26:06.259061Z","iopub.status.idle":"2022-04-08T01:26:06.799264Z","shell.execute_reply":"2022-04-08T01:26:06.798609Z","shell.execute_reply.started":"2022-04-08T01:26:06.259303Z"},"id":"1Yj9ZRDmUPxX","outputId":"7e3a1624-4326-41a2-8f94-3d41e11cd411","trusted":true},"outputs":[{"data":{"image/png":"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","text/plain":["<Figure size 432x288 with 5 Axes>"]},"metadata":{"needs_background":"light"},"output_type":"display_data"}],"source":["plotn(5, train_dataset, noisy=True)"]},{"cell_type":"code","execution_count":276,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T01:55:45.901599Z","iopub.status.busy":"2022-04-08T01:55:45.901279Z","iopub.status.idle":"2022-04-08T01:55:45.910993Z","shell.execute_reply":"2022-04-08T01:55:45.909858Z","shell.execute_reply.started":"2022-04-08T01:55:45.901533Z"},"id":"qxo8NDLLUvut","trusted":true},"outputs":[],"source":["model = AutoEncoder().to(device)\n","optimizer = optim.Adam(model.parameters(), lr=lr, eps=eps)\n","loss_fn = nn.BCELoss()"]},{"cell_type":"code","execution_count":277,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T01:55:47.302746Z","iopub.status.busy":"2022-04-08T01:55:47.302202Z","iopub.status.idle":"2022-04-08T01:55:47.316135Z","shell.execute_reply":"2022-04-08T01:55:47.315439Z","shell.execute_reply.started":"2022-04-08T01:55:47.302710Z"},"trusted":true},"outputs":[],"source":["noisy_tensor = torch.FloatTensor(noisify([256, 1, 28, 28])).to(device)\n","test_noisy_tensor = torch.FloatTensor(noisify([1, 1, 28, 28])).to(device)\n","noisy_tensors = (noisy_tensor, test_noisy_tensor)"]},{"cell_type":"code","execution_count":278,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T01:55:47.956516Z","iopub.status.busy":"2022-04-08T01:55:47.956250Z","iopub.status.idle":"2022-04-08T02:18:17.428958Z","shell.execute_reply":"2022-04-08T02:18:17.428239Z","shell.execute_reply.started":"2022-04-08T01:55:47.956489Z"},"id":"JAYzgfoTUBHM","trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":["100%|██████████| 100/100 [22:29<00:00, 13.49s/it, train loss:=0.134, test loss:=0.133]\n"]}],"source":["train(dataloaders, model, loss_fn, optimizer, 100, device, noisy=noisy_tensors)"]},{"cell_type":"code","execution_count":279,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T02:18:17.430982Z","iopub.status.busy":"2022-04-08T02:18:17.430570Z","iopub.status.idle":"2022-04-08T02:18:18.235054Z","shell.execute_reply":"2022-04-08T02:18:18.234364Z","shell.execute_reply.started":"2022-04-08T02:18:17.430943Z"},"id":"IaPfyJ0SV7XY","trusted":true},"outputs":[{"data":{"image/png":"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","text/plain":["<Figure size 432x288 with 5 Axes>"]},"metadata":{"needs_background":"light"},"output_type":"display_data"},{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAXIAAABcCAYAAABz9T77AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAA6j0lEQVR4nO29eXAk+XXn93m/zKzMuguFG+gD3T3dc/TcM7w1JFdDShSXMkUdI5G7q6VErdY61lJYiljtWg5txK5sOeyV5PCGFUtpZWtlWofJ0UUdQ5HiOeTcZ983uoFu3EChzqzM/P38RxYw6MHR6GmgcUx9IhDdKBSyMr/45cv3e7/33k+MMbRp06ZNm52L2uoTaNOmTZs2t0bbkLdp06bNDqdtyNu0adNmh9M25G3atGmzw2kb8jZt2rTZ4bQNeZs2bdrscG7JkIvIR0TktIicE5Ff2aiT2sm0NVmZti7LaWuynLYmbw15q3nkImIBZ4APAyPA88AnjTEnNu70dhZtTVamrcty2posp63JW+dWPPJ3AueMMReMMU3gj4GPb8xp7VjamqxMW5fltDVZTluTt4h9C787CFxZ8v0I8K61fiEhrvFI38JHbm880kQEiMikMaabtiZArEuDamPJS2vq0tZkZXa7Lh5pfOpLX9pZmoggwGKMYwOr5svMTrVsyorciiFfFyLy08BPA3ikeJc8vtkfuWWMmxGmGeMql4bXet/bSROIdXmdZyprvaetycq8nXQZNyOc4qUbvm/baCIColAJB5RCXBcsBZEGo9HVOiZobshHfdl8fk2bciuGfBTYu+T7Pa3XrsMY81ngswA5Ke7qxi4uSRrXexRve00g1gVILHlpmS5tTdpjxSWJRi99aXtqIhL/k0ggto0M9GLSHvXeFFFSYTUMKtB4Z8YJR0Y31DNfjVsx5M8Dh0XkALHYPwZ8akPOajNZ+CNYFogCozHagNG3LHiODupUABIikmCnaLLJ5OgA8HbcWFkBcRKIpUApEME0g7fkde0mTTaKHB1oNNtSk5b3LUoQ2wbLQuWy4Ln4gwWCjE21zyJMCpZvUAE4M3nUXAnT8DfMM1+Nt2zIjTGhiPw88BRgAb9vjDm+YWe2GYhg5XPgJKC7A+06WKUq+E307By6VrulwytR3Gke5BWePgKcZCdochtQosBwmZ00Vt6MCGJZyJ0H8fvSREmL0BNyZ+bh+NnYGdDRug+3KzTZYJQoPJOiTmV7aLI0dOI4qEwaPJegr0CQTzD+iIPfqSkemaE/O88D6WlydgNf29SjBH//pYfpeeEesiemiU6f29RTvaUYuTHmb4C/2aBz2VyUhTg20lFAp5OLN6Pr2VhlH2k04BYNOUCX9IPhmDHm0Q04682lNTtZZHOngKUdockqWNksJD3qgxkqgw5hSgg9SJQzJEfzmHoDXa3e7GF3tCabgY2DMebIVp8HIojtxDYjm0ESCXRHBp1KUBv0aBQU9Tt8urrL/JMDz3Gfd4UBq0xWxcGhhhH+dt89VK4mSY8k43ttE++vTV/s3BYoC7u3G93TwamfyJMZKjGYv0bKbvLypb0wWWDoi2nsr5U2JMSy7VEWYlmoXAaUBWEYL85Uqpgw3Oqz216IoJJJRn/iXubvDTh4YJz3d4zgqhBHRXz+3IOEjx2h5wVN6s+f2/1jZ7fTcvhUJg09nTR7s0w87NHMQ3OoQSIZsLfzKgNujZ8qnmLAmeWuxCQFBSmxUC2T6puQDx4+yzedg5Rm0hRedzFhuGn319vCkItjY4p5Gv0ZDt43yn+79+scTkyQlpDf8h7nhc69NJ7pIqsEs/7Z8c5hISzguvHagGODbUMuA7YFQYhEGmVZcTzP99/2Bn0xDuq6SDbD/J0h3//QK/xw8Xne5QYARMbgSsjnnQepXOskJQp4GzgCuxVloRIOkkwiuSx+b5bKYILykRC3WOdjB0+x15vhAe8yBavGkN3EFYUnCWys6w5liXBfdoTp/jRXcgfBceJslk1idxtyZWF15DF7+zj5C0mOHhjh5/f8A/cmpskqCwubHy4+z73pET5b/G/IWhZow26y5uK6WD3dNA73cuGfCulCnYQdYlsazw5REhBqRWRsxscPwLzNwScD7O8cxwThTcV9dwsqnWb+o/dSGbQoP+jT2zvHf7/vKd6bOst+O8COM06wBT6ee4U77hrj31z4JAM9XehqDV0ub/EV3H7EScQOUxBiwmBnPcxEUJkMqpCnebCbiYeS1HsM3j1z9GYn+UTPKXqdEve4o6QlpKgiHBFS4uCIhUKw5I3aysi8YbCVaLQlSMKBIMAEm3MJu9qQi2UhuSz1vjT/4pFv8IvF13HFxpLM4nseSFTotc7yf6YEEWEHDb91oVwX3Zljfn+CX3vvF/ju1AXyysLBwpE3vAjfBDx5YA8vVYf4zgvvoPP1NKZaQzd5e4SbWoiTQGUzzB22qB32+Z/f8yQ/lJlqaZXg+oxBuMtxucOZ4t90+ZhsGok0vI0M+eLMJZWChIP4PqZpY5rNnTGra8XCVTqF7sxR3usyf2+TvsFZfvXwX9NnzXPQDnHFXhwDijfWlpYa8JXQRoEQhzDV5vUo3J2GXCSeEh/cx4l/VaBvaJrvzS4Y8evFVCIkJPY6TSuRfzcgrosq5Kk/uI+rP9nkaP85HkteoKhsXHEWB+NSPd6XvMSRxDgXPtPFqY/uwTqVIT1q6Hq5DK+ewUTR7vXQlYU90MfZn92HHqrzjw69ytHMKO/yruAsefC/GSvOPmGob5qJDwxSOFfA+vrUrn/wiR3HkYd/5ijN+2rYToRlaerVBLpu0/dVi/yTL0MUbU+DvpCRcu9hSvcUKB1UBPdXGCiO8Zm+UxxwJ7nHmSKthJRKoFCL94xuuXsKuc77XvjZrG5Q1oYnRx5i5HQPg1cj8P34/tkkdqkhV4jn0uzJ8C/e93V+ovAiXVZyxaenhaAAMewaIw4tTymbprzX4Q/f+Ts8kAB3DYPkiMUhJ8MhB/740F9SOxjw470/wsnTe/Bm0mRPu9DwMbvUkItjoztzPPbdr/PLfV9iv22TUglgdc0WsERxMDvN1+8YJFFJkBW1q8JzKyGJBJJOk31sgqfu/0M8sbGxOBM0GA47+IXJn6TwxQSm2YwX07cbohDHptGfYfqo4N43y2fv/xzdVp0By0KhcCR5nff9ZpYa9IXvAxNR1obJKMnoZIHsRQtvshY/zHQ7a+WmsAf7GfnBfVQOaB5NXSCr7FX/IDUTUdJOvEYVRbvHk4oixA9oTTZQN9EfLZ65CJ8efJoXCwf4m957uPqBe+h7Wij87Qm0Hy+I7gbEtrH2DnL+JwZoDvn8TOdL9FlcF3ZaD0mrSeQZImf1G383oFIpVD7HpU8fpHbE518P/R0pSSzGifss8GSaZjFC9g2gpucIx8a3+rSXYQ/2E/Z3MPFIgrvff573FC+w367hibTi3ss9cI0mMgbfhEQYNPGCt9NK453RUNYOfzjzQY7P9ZM8lqR4ookzPo8OwrZHfrPozhzh+0u8f/Ay9yRmyajVvaqGMVSNg9plDpQxBoLgLV2XJQoLxQ+lZ/lEeoZPd3yb4fs6+Ff1n6TjGykUEO0GQy5xlV7QV+D7P/YMny5+mzscG1dSN30oV4XohEbbN/cA2FGIIKkkpphn//dc4rOH/pRuy8URZ/EtOeWRUQYrF9DsSZNoBjC2hee8CrozR/lgmvoRn1/f/+fkVUSvFS9ir+T0aTSBiQiMpmo0gYEAITIKT+Lc8bEow2SY4xujh5gdyTN4LiJ1ahxTmm85ie2slZsiSjk8MnCR7yu+RlatfmNFRvOS38cL1QPYVbN7vHFA7Rvk2uO9zB3VdCofxc0bJ6vVwqDTMlgyQ9TnU3tgL8nLJTgxvwlnfZtYsoZy/lOdBPt8fjl3jF5LL0sjWy95u47KBYTJbXRLKQtRbxilxVYUcFNjXWwb1VmEQo7hH+yhNhTwq31fp6DsVfWK6hbOZAWp3HqR3YYjwuzRHOMfCnjfkfMUVURKWcsM+EKoxDchZaM50exkOsrwfOUApSDJ1Wqe0Cg6vSoJFXG53EGp7tF8uYPOEUNmuIKp1jDNYNMTBrbRqNsgRIg8m491vsrHUpOkVHLVt2oMr9b28ez0EInq7jHiAMFAnsoHqzy6Z5SiUjdcXV8NSxSdKkleRfT3zjFzZx9dzSz2Dm71L5aFJJNUDxX4n574HN+XmmqFk956O9QOu0om0yDyVh9vt5vFviAQZ0xEUbz4eDMptq1ZC50FavvzvPcHXuXX+p+i23JxxVv91xoWMjmDrtVXfc+W0FrkLN2h+NV3/zVH3VG6rOWxcI2JvXAi5rRmPErybPUQl+tFvnnpIEE1gTPhICFcLGqMrXFmbOyK0PtSQOrSHEzNocuVOI13k53E3WXIW6lE2okzUW4U5wxMxHemD3DuXB8H5rbhgswt0Mw6vHv/ed6bP48r6/8zR0avaPQVins6xvnyXV0kpxzyG3mytwnleaiuTppD3Vz6cIrmgQaHExM44rzlB90Cg84shzsnOZ7tQJRs6bq52DZi25i7D1Hdl6beadHobBmqlj0RA6oJTtXg1AzeVIBdj7An5pEwAq0xmRTTDxfxC0JlvybqDPjZjmNklbWqJ64x+CZAQgHfh2CTEqffIgtl91HScCgxQbdVX5ytWqKIjF70xCsmYDoSXvX3crrRz/93/iGqJY/keRevBu6cQSLwixbasbArYDcMibkmUvc3fYFzKbvMkCsk4WAswZPgxoaciDMjveSPO7gTc+yenBVo5hQ/3/cV7nEiUmp1z2mBN6dRLSWOmcMHC6co3edx4tKd5De5d8RmIJk0wb4uxt+V4nM//tvcm5A1vcqbYcie5ruK53g5f8eGHO9WkEQCSXpM359j+iFDz50TfGbfizgS4cgbnvilRhfPz+xnZKaAPp0hMScUTyewfI1qamp9CcInpnlv32V+rvurHLCt1sxl9VlHYCIaJkICQdcbsTe6jRDHRlyXMKW5J1EmtUJKMtDyxOFKmOcb83fy2vQA5oU8HTOGjjM+di1A1eKOhkFnisi1kFCjIoM9VcZU63FCgLk9Kc27ypCLkri5zToyByKj8Y1GTSbIXwxRpequMOTiuqhshmZGSEuIs4Y3HpgIjWYy8vFNvO+fJdClEq3Uu+vps+c4kpng9eSdm3gFG4+4LiqXo3l0L8MfdUkcKtFrNbHfwrrBamRVwFBiCuNu8cNNBNXdSVTMMX8I9h29xnu6LnKfdwULgyNvGNYee568XWc418lL6T3MllOM9qdQvoVTFoK84QM9o9yfvkJeRTiSuOHMpaSbjEcOKuS2eaM3g773EKXDaTL7SqTEWtXZ08ZQ0zZlnWSumaTWdMC00pQBI4Jx4iKfIGMTeoKKFBIZ7HycECBKoFaHZjNOw4RNc352lSFfyB/XjqBuYJZDIqrakBlWpJ85TzS/gxfvlqBSKcxgD82CkFcR7g28p5oJOB3kmY4yeBKQkIgHEtMrGvKDdgmyJ/jj7Ps28xI2HJVJo/f1MPYuj7984n/joOOsmVP/ZhZmK2sZsS7L4r7EGCYZxX3utwpRBINFykNJsg9P8wd3fo6sKDLKBa7PyNCU+MepUryg1xcyozUv+oNcDTr41swdpOwmn+7+JnvtGt2Wu2ZO9QLjkcOpZh9WXTY9U+OmEWH83Vnk8Rk+feg5MmvMVAMM88ZlOsow3UhT9xPYEYimVakpREkH4ygaHRZBClQEEoEKkiRcG1splG1jyhX0za5N3CS7y5ADRmtuVGcfmIgXfIvXG3filA2m0YgXgnYB+uAAV74nj39fjfQqBiWejYScDGAs6uSPJt7NeD1L1mmQcXyyvV+jx1oeK3cE0tLEbKGdeivooX4ufyRPcLRGt2Vwl6TLrcVCvFSj4zz8VdYPIC4scwVEbbEXajRWtYk7l2DedwgMRLLkGpagkMUc6QBDWTtc9HsYbnRyeqoHzwk539GDxThZ8ckotf6cHok90u1WF9XMw/v6rnCHu3pOpEbTNIay9qjpBBpBxBB6oFJCkLHQjsJYELmKepcQpkA7C5/hYNds0uMJ3OkszjUXGTexZ+63DfmNMRqiCBWtfTP5JuBz0x/k2bF9ZMdDdKWy4+K9qzH1YI7f+szvctiZJadWDh2ERJR0k78tP8qx8gAvfvNOvCnhcsEQpg1HP3SNR90TYK73Qj0R8srHWDtLq6mHcvz2T8SadKyiyZtZMOK+CYgwOFhYIss0WcAVh4ICsTWoLSwKMgY1MUsqiKiVckxGSRR1PIlQmPgaiBevF7ZV803IdCScD7r5+tRhrswVaB7LU/fg6Z7DNLIJeq0zOBIsaxD1ZpQYlOjYa91uTehEUe8P+ZW+pygqBSuE1jSmVfQD02GGUphCG8G2I2o5DUpRn7ewAkPoCZEXLwSTD8gUanhOSL3pUA0s5i9kSE7YdB2zSDaamPkyUbO5KbZmdxlyUSAKc4MbqWEivjV6gPqZAp2z2zDP9RYwFvTZZQorpBzGBQ0Rw2HIcNjJl67dzdXpPKlJITFniFxBOxCYlf0uCyGxcJPuAFQ6jeoo4BeEvXaJomXdMMa7EEYJiYiMITCaqGUArTX8UYXcVPXsZmKaTaTWAL/ARJQlpQIKRqPEoE38x4uIY+XaGOa0ZlJnuBp0MFVL4zccsEEnDBnLx5MmjtxcdbBRBknE4bnN8kJvilYrZ2xDXsm6MrksMaQsn06vijZCpStFI2WhmjYSCToBkWuQTp9MpkF/bp5cokEjcmhGFmfqDjU7QW3Cxh3LoqIIqdVuejep9bC7DLkSxE2gbcGSlWNzkdHMaJCvd3DH388gI9eIdok3DmAUZCUk1YqJLhCHUwImo5AvVh7gxdJ+pr/WT/GaITUeoAJNkHGJkqsbcldssirYMR656u2mfH8P1b2aPgsy4t7wdxZCKQ0Too2h3Kris5S+YRaUIxaiTNxFcwuzenSligpC7NIgJxuDWKIpqCmUgYQIzZbHCRAhjEUZXq3v57XKHqams5iGBfkIlQ0Y8qbZ58zgiSx686uxNPNJ28QdBWFbtHMQ20E8FxxNh1q579ICCzMVTwK67TIP5kaopF0G0yXmA4+L/UXC0MJxQpJWxOHiFF2JKgeTkxTtCp4EKNF8K3eEc+Vuzjf241TzZESQ0jwE4Yb3LNpVhlxEwFJrxnB9E1LWDnbVoObK6MbWD7INReLMkzd7T74JOR0oLgUDfHn8boanO8hMGbzZCKcWe2fGAp0AV1ZPGXOQ7e+Rt4o+gv4CU0dtkntKOHLjoqjI6MVMHt/EfTUaRgiMImr12bBXuXZLFHq7hBBaHQcT88Kzs0O4KmDInsURTWAMAUKj9bC2WjFyVwXk7DrpbIPAs1DKkE/X6XXmKKg6jsTdR26koYXBkwCdMJhcZtu09VXpJJLNYiVWX+dY8ffQZK0GjgoJjEXOaVAPHYLIwrVCXDtk0Jujw6nRZc9TsGqklY8jEUPeNNooTnbtoTJgkyilcEc8oLHhmzHvKkOOUhjPJUrI4gBdSmQ041GTK2Ef3pwhGhvf1EY2W4Vieb+I8ajJ/zX1OK9MDzL3tT6y44biySpW2cdYgk4lCNMQFgOKdmXFabQjVuytbHNDvrAb0rVHUvx3/+QvuMcbJSnLs3CW8kZMPCTAMB0JvrGpGocIRV5VSN3guteT1XE7MGGI0Yb8ec1rzx1i5v40QwemyKo6WdWgYRxq2sWRkLTEBmXImSSXqZM5GBuhA+4knVaFh90ZUmKRFHddBjCrIvrsElFHSP1AB0lLwdQWt/UVgYFeGv1Zspm191WNe6poIoSIuLCw244z2gacOQJjsd+bjnusqABXBXTb83gS0GeX8CQiKyGWQC59koeTl5i4N8NLub1Aiv6RDqRUhnp9QzXZVYZcEg5hMU0zI6182eVe6bcb+3l6/jBONdpd3Q5bew1qW1aM5E5ql29fG2J2LEfPVUNyKsSabyB1P94QwLIwAlgG1UqWXfPG3a6tWkVQQ3upH+qkfFDzcPISfZZ/3WYiK7HYgtRoqloxqVM0tNPK9ViYbK/j4yEuh99qfYzGnQtJXU1wdU+OCwM9DDizpJ3YcDsS4kiEJyEOEQkVYYmm6VokJGLImSKrmqTEWleWz0JYRQGeRDipgEZnEnfGa6Vjbu3mJEFnmvLeBMX05KrvWbiGCENgFIGJzaMnwWKoNjKKyFZEKDxpkpCInGrgSYAnUXztEoewUioE6hxITzPRlWWsJ0VjXwFvVCHTMxtqf3aXIS/kmb4/RfmQJquawPV5ouNRk//xmY+TPO2x/+LUroqNW5k00lUkyIAj12cWBCbi2dodOJ8vcsdwg8TwOKbegHoDbQzieVhBGtF5xDJY6BW9S0Xc4nOxKmKbIbaNJBJc+cF+fu7TsSf+QII1C38iowmJqOmAqtG84vcwE2W42uzANzb9zhxZq8EhM3vDGPEbJ7INPHNjSL5ymT2X81yxuvnj7CO8u/cSe4vT5MQnZYV4YkiJxD35JUIbnwcS861UShur1WN8vaEIjSEtCq1CjvRPcPrBIVSYJvua3eo3sjUPNrEsJh5N4r+nzKf6X1vzvXFlqqFqbOaiFI5EZO06CYnwJG43ULBir96RCAsdPwxFtwrwYiPuIGRF41kBn8i/yPsyZ/gt+TDDuX66X+ikY2SslY64MaHdXWXIjZug3iVExSaeLB80DaNQEy7pUROv6u8ipKtI5WgPjV6N86b9AwMTMROmSU6GONfmMaXydVtxiaUgcFEBGN9adbETbi5z4XZjDfYTDBap7o/4aOY0eWWtWRC1kE+/0BipbOw4cyPMMtHMEhqLvFUnpdZ/s4kYUGrL+60AmFodAdy5LqZnM0wUsljEMy5PDJ4IXmsBN35Ax7+30It7vQZ8ISy1gAKKbpUwFxGkrDhbJIq2VI8wCZ25KkWrsuLPFx7oDRMxFTmMhXku+514KsCTJp4KQHFdoaGFAYkXjC0jRCIoY4gwKKGVrmooWg0ciTiSn2C0P0+jmEFS8bhsG/IVCLsypN8zxYf6LlJ80xiMjKakXYrHoPtrI+jx1adYOw4Rxr+7n8d/7ju8M33huuyMkIhrUZPL9SLJqxXM6BjG999oaSoKresoUaTGDJHncC0oAFeWfcxCW1sk9nLMdtrLU4TLP7qXf/TE8/zL3Gn6V+hot5QFIz4SBZS1w6nmHibDLF+evJu5RhIDOEpTdKoU7ZVv/pXPw8QNqyxry3fG0dUa0vDJn28SZJK85g3gDYRkJaSo7NYuONe3b70Z4w1vbLqwsEgctb4/kp7gzL4eamd7EDcej1u55ZtOQGeyRlqtvMgYElHWTU4HSb5auYcT5X6eG96P6wY80HeVQqLOgeQknoS4KsBC40iIJYaCVcUhIm18PAlJSUhCNG7LOy8IFFXAj3c9zTuzF/kP899P98sDOOPzsEE1LLvKkOuE4kBhmjtTY4uexgIhEVXjkaho9NQMurm9urK9VVQqhWQz1HuEJwrPMWA1r4sHl3STF/1Bzs93kao34919FhZ4jSGOXQomDLGaBtUUGvoGMdFtEDlYipXLIekUtX7NP+98ml6rueo+mwueV0k3mY6E5xv7mYkynKv1MtNMcWmmiN9wsOwIx4moR04cF91GeeLrxmhMBE65iTuToNJwUGJwhGW74LyV7o8LqZqRMdcZcYCUapJ1fcoJtrZAqoVExNkmK8w2I6MZCX1e8Qc4Vt/Dt6YOcXUuB1c96p7L66qftNtkLJPFs0JcK8QWTdJq4khET6JMSjXpdeZIK5+CqpGWAFTQ6m8jOKLos2rgXsXJ+fidHnbF27C1lF1lyMOkxfd2Huex1PnrutoFJuJcEHKisQe7ptH1xq7ZRDh66AjX3ptCvWOOO5yI1JtCCX9X3c+//8sfIXNJSE2fWu4VGYOJIiSKEH0T4W8lW7+g16L8+N1MPqQ4+vBF7nbAWSWc4puAmcjnSuTy1/Pv5NnpIYa/th+nAiqI+2h4TYMHNIpCM2M4W+zhYPLGs7fFcn6t4rDVduj6Z+KqSmtijoKjmHqHhycRCZHFNrQ3a8CD1t97oeI1MPFC8MJRNGABKeWTdRpxKrDIlq4bGG1IjRnOne3n5eJ+fiQzDcTXXtNNaibgly79EJe+cAhvRpMZaTLoR9jzsxhbERY8IifJZK4TbQuhK2gbwpQQuVDdo9GZiIF90wxmShzJTNCfmOM+7wpDdgWHuJguqwSocaRvkvMPHkA7WTLHN2Zmu6sMubGEPmeObiXXTRcDEzEa5rjsF1GB3jVGHMAvJqgcDHmgOE1KEotFKwuhg8vNLjKXhPxwgLlBzrxR8Ze1U/pAtjJ1aj2K8FCD+/OjKzb7gliPmg64Ermc8Ad5dnqIc2PddJ/TJOY1suRG0rZgxEK04IfX3yKrGT6NoWaaGC1x356tDpAvxW9izftIMxl7iOvIB1+J+GEVe+ARBm3ifSubxmARx4Tjn0HDODQiJ24yZbZ+9y2nYnBmLKb8DCFRnItkIsajJhfCPKfGexg87pOYqiGXxzBhiG42EcvCSSVJOA5eLgO2hU4l0LYiyDlESYVom2ZOMZbK0wxtPCue7R9KTBCZCsjCukOEK9DrlTnRFeFnFVlLYaJbd4h2mSGHgqqRUdfnvM7oJv9x+Ac5e6WXI7ONG/XU2jmIMHO3zf/y+Oc44kzgLImNz+o6x5pZvj55mN7ny1gjk4T1NRZ4LYtGp6Leq+lJrNwJcnFRy7AtjJU92I/uzDHzzoD//K7/h8POLCvteh93eWzyD/U+fv3U9zE7lqPzWZv+GU32xBTSDDCODZaKb1LXJvSSLMzCC1YNB7NmzH0krPN6swc972CibbR2AJggQBo+oiElXLcYvl58ExAZQ80EBEuuLQAiE/9r8UYB1TemD3PqxF66R0y83dlWrhcYTeFECbeU4bm79zE5EDs0Gvil4U9w/Ot3UDxpcF89i/Gb6Hp9cQ3JiEKCMK4any+DUihLoURhJxzEtklfyBFlXCan0lS6k3z7zhSXu+boT8xx0JlZdIscUVgYHiuc4dq9OS7MDNGdzaJqNXR17fz2G7GrDDnEKUFv7tFWM8LlmQ6siQSqUWE3+OPiJBDPxe8wfCI9c50RByhrw3F/kKtzOYbGZommZtaciYgIQRpMLiCrGmt4njfuLnlbEEEXs9QH03T1lvieVMBKRhxahlxHXGh2MzuaJzliUzxVw56rw1SczyvJZJxP78Z9p+PZieDaYWuTkrVPZzxK8nJtCLtibfkDbhlRFO/6Y25cZr/ir5s34uBBy+N+42cshlYiA4FRVI3NeC2LO2nhzodxgdJWFt4Zg5qeJwlUSylGwiRNLBra4fi1fjqPGbIXq0TTM8sfwCZaLKdfzDBZ0FDi7CRVq+OkkmR6PVSkmO12mXTTlMIUkREWbhirVRXdZ5c4mr/G6ey+uG1AGELbkLPYEGehWdabjVBZOwTDafLn2Z6bwb4VHryT6aMZ7MPlZZ5iZDRPVe/kN7/0j8meV5jyCCZcZXFXBJVMIvkc9fvqfOb+7/De5AVW6gxXMT4lHSGhanksW2fRxXY4/6MF3vfdx/jRrudWfV9kNMNhyFPVe/nTS4/Q+7QiOdnEuToLjdbCr2VhClmifJLJh9L4BaF2qEm6WOfjPa/wsHuVglp5J5kF/sPlj3Hlzw6w51Rz+1ULawNhvAbSNAb3JuoAFhqt+SZc0jystQkJ0mqRy2JNxtXIZTTs4OpwJ/ufDUhdnifaBoV3emYWqdfJP38X/9T5KfR0AnfaovOUpuOZUUyluv66koX3mQhjBF2pIr5P9nSG5HgSbaWpzeU40d/PJ3IvAyw2XXOAg84MUe4kfzFwH/U7e3HHqlCav6WQ7+4w5NDqesiKpfmBsXDKCndOwy7JVvGLLpW9Qk+usszAaAyX/U6y5xW5y2FrF+9VBqkoxHUxKY/+rhIfy75K3ypp5DUdMRM5SCBb73UqgQM1/o89f9+qPFw9971sHC7Uu5mZS3NgpIkzU8PU6rEnJApJJAizHn6HS3UAmt0hQ/snuSM3xVF3lG7LXrPEPzKa85Nd7H2uijNeItxGYRUAYwxiDNLyntfL0t4zEWbxdxULYQJBtWLlSuJjV7XLeFDAnrNJXZ5BZkpbbsQBdL2ONJtkrkY0ziZJjxoyI/GDJrw88tbP0RhMGGCiCGt6DqfRJDWVRLuKuWYSTeyRL814KijYa8+RzzTwiynsqou6xbqDXWHIxXZQuQyhu3KPFQBjmTjmqXZYCtkqOPMByQmH6WpqxQ2THRURJSH01BtZA0sHq8Tb4qmkh//wQSqDCR7pfJkBO1x1wfCvqkf4k9FHSV/eJhqKWZYHvRIWrXasySbV/ixuysL1HFBCM5/A77AZe8xgd9b5wIET7E9Oc8S7RqdV4aDTwBVvVW+8ohvM6ZDGnId9YXj77RpPq5lcq5d6WVs4RGTk5ppHLcTVrZbWC+mLC0beNyGB0XyjchdfuXaEzBWBsck4Q2w70MrOyp6Yxp3LYc/7qFIN5uZv/UGzkMbr+6AUdk1jVwU/is3rgsoL49QVRUGF9GbKXOnvwq65JEUtv0dvghsachHZC/xXoJc42PNZY8z/LiJF4E+AIeAS8IQxZvYtncUtIpZCPA+9Wms6wEj8tRE0TI3jPE+TBiAMcoB9cpjANHmdZwDuFZG/ZxM1UY0Qp2KoNK//Ey4UajgSESXiXUvEepO32gpFqaSHZDJUBhNU9gj7vWnyKrHqDunHqoNcGO6he3p5WOV2ayIiyDp7ZFsYXBXiJQKaWQGxwHgYW6h1W9R7hAfvO8ujhct8NPsavVawmPubEm/N9rVlHTIeJVBVi2hyetn0eC1dgMMicpbbdP9ICNM6iSNVikRoY1a9tjdvxm218ugtkevyz0GhhFboBS5UuxgbK9A3o4lmSyvO3NbSpEaZTdPEGMzVcdxSGRMEmGbwxl6aG3H4SMchrMggEYu93+H6hmoOFp5ock6DIANhSt1yrv16PPIQ+CVjzEsikgVebN2Qnwa+Yoz5DRH5FeBXgH99S2fzFpFEAt2RI8jIYsOnpTSxsGuCOx9tyOq5IBzmfnLSQWgCnuMrFE0v17hEkR5mmDgGfIVN1ESMQVZIjlhop3rAncS/s05JJenMZlBhiG74qISD7Okn7M4x/OE0fm/EnjvGuDc/yfdmjmHjrLghhUbz1Pm72ftXivSF2WVT9NuqiUhcBi9mzVLyheKfqHUTdaernDtSjMuqM6BSAQcHrnF3qsSnup9lwC6x19K4kljBYC0/tsbw6bM/xshX9rH3lWBFo7WWLkDZGHN4s+8fXW8gUcSer/XxM/WfpTYU8J6j53gof5lP5l7FEyHVaoz15sXQhXZhKxnxhUpfjWEsgithB985eYjer9rkT5ZXzY9eSxMLh9AEm6aJaTbjK9LxbmK3vMWjSNzrPOGg7x7C7/YYfb+NGqryqb5j9Fp6ibatcdra6Hw+8PCmDYlS2NpJ6a3PDG5oyI0x14Brrf+XReQkMAh8HPhg621/AHyNLTLkODZR1iVyV46Ra6OwG2DVN+APB7iSxCUuOrHFIWWy+NSZ5CqP8AHOcQxugyZiWHWa0WfPsa9vhuG5PkzKQ2ouEoSI5xL25KjsS9L7XVf5nr6TfDz3CgOWWZa2ucDCYld4LUXm66cx9eXhg9uqyU2EBBYWsCzRFNw6DDTwvIB3DFzmUGqST+ZfoKjizYkd8W5wtDdY6JZ45vQA93zuCma+suJi2Vq6ANOtt23qWDFBExM0cV88x9DFDqbf28cz7gFm9qb4cPoEWbVQhSg4rRnOwkxnoVrTWcmIL2FGe1wJOvFGEhSfH4eZuVUXD9fSxGExrLcpmpigZTRvlVbPe1GCJBwk6VEfSFLpt0jdOccPHHiN70qfJtua4a50X9VDh0TFYNduPZX3pmLkIjIEPAQ8C/S2jDzAGHHoZWtZwaZFRtM0DlbdYFfDDe9/UTdVysyRp0gTP27SFI+TTdVE/ACnogmbFhpzXTBEIQzZJb6//3X+XCsmH+vDm+vGm25S63C48hHI9ZX4zN5nuM+7EnsNKrFi9ktIxC9fez9fOnM3XS8Jula74cPwtmiyjjQ6jSEgwkKRsRrcmRkncSCkmKjxwdwpuq15uiwLT+wb7v6zgG8CajrgF0Y+wjdPHabnGQszW0Kvo/nRm3UhTr+G23T/6HoDNTNLxyseTi3PZNc+njjwiwRdIY/cdZGBZImHM8N02/Pcl5jCa3XxU2sYcd+E+Cbk14d/mJOn9zBwPILpWUx1fdlhb9Yk+UYK6eZpYjRi2+A4EAStl26w/VprTUlsG9VVxKQ86vsLBBnF/D6LIAvBnTV6i/P8wJ5XeVfqPHstH5vU8hkuETVjmKqk6R5t4kxXiW7x4bJuQy4iGeALwC8aY+ZlyY1kjDEiK+c0ichPAz8N4K3RTvSWWeO+1rQ88qofx7E2iNCEvMZ3uJMHscW5Lr96szURP8CphpigteBk3ggxWKLotWy+L3OMRr/D79/TS2LOIjXmUe8WfuGxv+HD6ZMcsK1Wu9L0ytdHRMOEsRH/G5eO4zc2WLdNk9aidVygtPLCnUajW15hVjUouDWOJkfosco8kKiQUs6a3RFXoqYDykbzzeNH2PtXiszZaaL5lQuolrKVY2Xxc3yfyPdhrkTqGGSyWXp7u6gc7ebF6CDHO+tU97rsS86w156joEKcNz0wl+ocGU1A3MP95LlBer+pyJ2cI5qZXVeYYEs0Ma0mApaFJJw3HIIwXN0pbq0pSSKBeB5RT4Fmh8v0UYdGpyF73xT3FKf4ke4XuCsxTq+lW574ciMO8T6pVa2o1xMkxivI7Pzt8chFxCE24p8zxjzZenlcRPqNMddEpB+YWOl3jTGfBT4LkJPi5uQhiWBW2eItJKKqXSzfIDUfE2xM+qE2mtf4Dn3so0cGAUjg4pt665Q2VxNTrpIYc1CVThomxBOwliz8OWLRbUV8V+Y0x94zwIyfYqaeYo9X593J83RbGkcSKw60hf4TP3r6k1w8PkDXS0LH8RJqfGbN9LXbpomJ45thaDGrG2TEIbVCeqCNhSuGXqvJg97leNFTIjzRpJS7roXSOKwU8GozwZWgk18/8SkaZ/P0v2TInJmGqbkbHmM1XUICBzZ/rKyGafjIbInMuQS93+yg0ZnlH+66h3RflQ88cIqCmkeJ4GCtuBahMRxrupxt9pG87FA4VUJNzS4+PNdiNU0WYvKbrYlk0pDPgmNjEjaq2oDZVi53EMbFYekUupBh/kgOP6coD0GUNETFEMsL2ds9SadX5b0dFxhwZrknMUanZUiJs+rYiozmQmjz9epdhNMeUp6OQ5Wb3WtFYtf7vwAnjTG/ueRHfwn8c+A3Wv/+xS2dya0gCmMJb25stpAH2zAOdsMg1Tp6AzxyYwwneIE0WfbLkcXXuxngGsML326qJnp+HuX72NUufKOxiK7bycUVB1tZvM/VPLr/KeCNhaw4ZreyF77Qo2VGw/iX93DX753GVKroRmNNI35bNWmlkulAMR0JjhWSYrkht0ThYtNj2XS1NoxWKyzmroVvAmom4tu1w7xY2k/qz/IM/slLmCAkWkcBx1q6DHOms/Xtltw/JmgSTc8gpXmKo2no7yFR6qJ0OMfcfSkU8zhYOLI8xrvQd+W4v59nSwfJDhvMy6cI1+FZrj1WFtsnb5omRhsk6RF0ZQgzDs2chTvr4VoKghDxA0zSJejMUN2b5Nr7DV5fmf/h3r/jUGKCg3aNlIpDcsCSsFO8xrLW4rvGcD7o5lszh0hMW5jS/LrCcjdiPR75+4B/BrwuIq+0Xvu3xAb8T0XkM8Aw8MQtn82tssJDrWYWPHIdpxptQCFLiWnGuEyGPM+YvwfgDu5lP3cuptoBc2ymJq0NdlUgTEaKbitaVqBuiSIy1+/+vpJntWC8/6i8j9dre3jqwt34Eyn2vRpg6o11Zfrcdk20wb7m8tsTj/NE53M8nlzZqL6RKaCv/34VFrT4ViPNpaCb/3T6A5THMySmbJyyMHimclN9ZtbSZZgzuVaq3ZbeP0YbTMNHzVfJjObwCy7zkUewhpOoMdR0wH8dfjdXz3ZzYLR1b63Ds1xLkxEusKmaiEIsi2Cgg5mjKepdQr1PY9cTOPPdiI47YYYe+F0aXQh45I5hDqSnOepepaiaZJW9rA0w3HhszesGM1rz+YlHef07d9B5pmWTNiABYz1ZK99i9Qj047d8BhuErDCANIaqNpSiZGzI640NKZ8uSBcf4odX/NkjfIAvm88fM8Z86JY/aA1MFMU3nw9jUQZH5ulZYb3Okjd3nlmOxlAxAb978buYuNDJwS8EON95Fd0M0OssG77dmpgoInMJvvTaUfreMc/jyeNrvn+9XvhCr/I/n30/L0zspfifM+x5+jS63ojbHBhzU61m1tIFwxljzKM3cbjNQUfoRgSzcyTPO2Q6+ihFaRpmYbfS5SMoMPGuSuOv9rLvayHeuYl1V7SupUnKZJk3M4dv5XLWQpQglqKyN8nM/Zr8vhI/PPQ6De1QDj0iIzS1zaA3x4eyxylaNQ7acajSlQSsMPNbD5HRTGrDqWYPz585wB1fbOCMzxM1V05bvVl2RWUnXQUmHk5SPRSQkmixmOFaVOd/nfgQ3xo9wEDJ3x49ojeKVjVZYh6+MPMO3pc7yyF78qZ2eJnVdSYj4ddGvp/TUz0Ez3fQedWQuDqPDsOtL8NfC6MpnGtilMu3hg4xVXyOlDirVqWuRmAiKtrneT/PhWYP//el9zA1l0ENJ3Fnhc7RmXgzjnCNNge7BBNF0PBRISjReKJRK5iIwEScCzVnmwN400LyWnXdWSrbhTh1N96az5WQlN2kaFdRonEkos8u0WtVyCqNI+6qRXKwfLekBSrap2E0rzY7Oev38efXHuDCxV4Krzg44+PIfGXds5gbsSsMeWMwR+LxKb6v9zJZJYuCng3yPPWtB8leUFhjw4TBxlVxbQuMIT0e8Xcn7qFyJMETma/e0PuGN8IHw6HDM/VDnP1/76TvpQrWudNEM3Priv1uOcaQ+OYx+p9zOXnfXVy9w6LPClaMla9GrEPA1Uj4vbH38+roIPv+k0Xx1AimXL6pGcluwAQhplrD8nVrV3haRUDXT8gDE/F8fYhn5g+RHdaY4+fQqzVl264Yg0TxdaUsn4JVo2hVKFg1Bq0KrkC35d6wKAziWRzEukSYuJkYhiuRYjLK8nvXHuOVy3spfM3jni9exFRrROXyhjoGO9uQKwvluYQZi8FsiQF3joYxTAY+f1p6lG9PHSR/RshdDlYsYtkNJMd8UidTvJzbw+yeVgbHCl5pYCJKusHVyOL3ph5jpFbg5HgfjRmPoQsB9sR83CdkBxkuE4RooHDc5se6f4rH9p3nic7nGLDK7Lft6yoRF2YqkdHUTZPh0HC82cfvDH+Q8VKW4HwWb0pwxscx1Wq8FeAO0mKjMGGICg1l7VE2Qt7EmzUvzM58EzKlm/zB5fdw5VIXhya2YbfHNVjo2pmcCshc8iiZDj6n3kkhWWdPeo7DqQk+lD1GQTWp6fjhFGBoGsN4lKBqEpz1+yhrjyuNInWdoBImaGqb6UYaP7SJjBBpRamapOnbqBGP1ISQu+ijK9XWWt3Gzu52tCFXnovqLFLvsHhP8QJ3etcoaYt/qN7FH37pA2QuC4N/NUw0Pkm027zxFs6xi+wbK3LR7efSgwn6LJ/B1mr6UuNVM01OBGm+NH8fX/2Td5Ab1hx8dhQ9M4ep1wm3QavRm0ZHGD+i/49OIV/M8K1PPsS1j+R5rPMsP7pYeh4vSrmtoa4xXI0i/mz+EZ689ABdv+Fx4Mo0euYiJgyJNuEm2zHoCF2vY9UjrjULjEVpulUcMnHEQqOZ0U3OBnlmv9zP4aer2Gev7owZ3AJGY4IQ99RVBqYL1PdkmT/byWhRON8/wCt7Bzl41wR9dgnHnidAmIySTEY5ni4fZrRe4NmLQ+iyQ+qyjV0Hp2ywfUP6akCy0kQ1AiTUdJamMdVqPNMJQ4iiOGS5CexoQy6ui85n0AkY9QuUwiRPNh7m2GQ/+XOQHounimaXGnEA0wyQUoXMZcMvn3mCe4vX+LHOZ0gQoSRgLMzzdOUI1xo5Xp8YYG4qw+CFiNS1RlyRuEG7eG8lphpXm+YvDHD8xSGOdQ7wZM+DOErjWBFJO6DoVmlqmzk/yVwjyfhYgcSoQ9/EGHqutKv2cb1VJNRcrHZy1utjr3WOrAooR01K2uFzs4/xyuweMqMae7KMaWyT7oY3iWn4qFIVL2GDJHHnLBLzFrVSB/8+/CiuE5LzfEKtKDdcmoFNY9ZDGorUVQu7CqkJje1r7EqEFWicySpSa0DLcOtKNR5XGxQHX4udbcgzaWr7s4Qp4cWpvUzOZkl/M016PCL3jXPo+fnYw9rF6FoNGj49XxomON3N0+/sZ+QTBVJ2fN3HxvtxvpInPR4x8PxV+isT6EoVoohoK7ff2kB0owGNBvm/eIXC3ybAscG2F9u36mKeK3sGsashiZEZOoMaxdp07IFXa20DvhRjsOoBr10dAOJ9JwuqzvHmAMdrg/z1k++hcFZTfPYq0cjVHRVWAVjYkDqam4PSPDJ6Dc+ySFoWBREklYKOXFzxaSUgjMiXZzFhFLf3aHn0C7UMQKvhlY7L7JcmCNxGB2lHG3K0xmponHnD1ZEi1qxDdjTEm/TjKc0GJNrvCHSEKVdwxhJkr3i8fnIfWPEuAs60TedwiDvtoyen0RtQRbZdWTDoCw2NIE43U0GAJ4KqNdATU/FUdxfP0m4VqfmEl7t5KdjHk94jZCyf70wd4NpsjvxlQ3q0galUt3YfzlulZdCNJi7PbxXLSRiiwniPTkQgDImq9dhob+MH/o425KZcwR0p0VlN4ZWSOOWA5IsXMbV6bLDeRkTlMlKrkZstkXutA4ni3ZBMEGDKlbgS8u3yYGvdpNCq5p+eQeZKhDdqjNQmZmySg3+WpdGd4KlHHo33mXw2Yv94HWv4PKbUyn/eTbScG+P7y2fxO8Dx2dmGPAxRtQYWkHQsrEozLidfa2uz3Yoxi3E5FUXoKIob529zT+K20NKmzfowzSb2ZJlkkCLbncEIJEeqWFMl9EJJ+W6+v3bgte1oQ67rdczYBCjBvmKB1rt/kN0AEzSJFnJ638Y6tHnraN9HhkdQozY9w3FPHlOaJwrD2DFoj6ttx4425IsLDuGSmqr2IGtr0ObWMAbTbGKCEGmFUN4Ola07GTG38Y8jIpNAFZi6bR+6uXSx8rXsN8Z0r+cAu1ATWFmXtia3oAnsSl3amiznLdmU22rIAUTkhW3RKGgD2Khr2U2awMZcT1uTzT3OdqCtyXLe6rWsvzFzmzZt2rTZlrQNeZs2bdrscLbCkH92Cz5zs9ioa9lNmsDGXE9bk809znagrcly3tK13PYYeZs2bdq02VjaoZU2bdq02eHcNkMuIh8RkdMick5EfuV2fe5GISJ7ReSrInJCRI6LyC+0Xv93IjIqIq+0vj56k8fdsbq0NVlOW5OV2Qxd2poswRiz6V/Em/6dBw4Sb3r3KnDP7fjsDbyGfuDh1v+zwBngHuDfAb/8dtSlrUlbk63Spa3J9V+3yyN/J3DOGHPBGNME/hj4+G367A3BGHPNGPNS6/9l4CQweIuH3dG6tDVZTluTldkEXdqaLOF2GfJB4MqS70e49cG9ZYjIEPAQ8GzrpZ8XkddE5PdFpOMmDrVrdGlrspy2JiuzQbq0NVlCe7HzJhGRDPAF4BeNMfPA7wCHgAeBa8B/3Lqz2xramiynrcnKtHVZzkZocrsM+Siwd8n3e1qv7ShExCEW/HPGmCcBjDHjxpjIGKOB3yWe8q2XHa9LW5PltDVZmQ3Wpa3JEm6XIX8eOCwiB0QkAfwY8Je36bM3BBER4L8AJ40xv7nk9f4lb/sEcOwmDrujdWlrspy2JiuzCbq0NVnCbWlja4wJReTngaeIV5t/3xhz/HZ89gbyPuCfAa+LyCut1/4t8EkReRAwwCXgX673gLtAl7Ymy2lrsjIbqktbk+tpV3a2adOmzQ6nvdjZpk2bNjuctiFv06ZNmx1O25C3adOmzQ6nbcjbtGnTZofTNuRt2rRps8NpG/I2bdq02eG0DXmbNm3a7HDahrxNmzZtdjj/P5DuuFX7w+/zAAAAAElFTkSuQmCC","text/plain":["<Figure size 432x288 with 5 Axes>"]},"metadata":{"needs_background":"light"},"output_type":"display_data"}],"source":["model.eval()\n","predictions = []\n","noise = []\n","plots = 5\n","for i, data in enumerate(test_dataset):\n"," if i == plots:\n"," break\n"," shapes = data[0].shape\n"," noisy_data = data[0] + test_noisy_tensor[0].detach().cpu()\n"," noise.append(noisy_data)\n"," predictions.append(model(noisy_data.to(device).unsqueeze(0)).detach().cpu())\n","plotn(plots, noise)\n","plotn(plots, predictions)"]},{"cell_type":"markdown","metadata":{"id":"MyvmZEHzdoJT"},"source":["> **Exercise:** See how denoiser trained on MNIST digits works for different images. As an example, you can take [Fashion MNIST](https://pytorch.org/vision/stable/generated/torchvision.datasets.FashionMNIST.html#torchvision.datasets.FashionMNIST) dataset, which has the same image size. Note that denoiser works well only on the same image type that it was trained on (i.e. for the same probability distribution of input data)."]},{"cell_type":"markdown","metadata":{"id":"yxFKm_OxdqfO"},"source":["## Super-Resolution\n","\n","Similarly to denoiser, we can train autoencoders to increase the resolution of the image. To train super-resolution network, we will start with high-resolution images, and automatically downscale them to produce network inputs. We will then feed autoencoder with small images as inputs and high-resolution images as outputs.\n","\n","For that let's downscale image to 14x14 at train."]},{"cell_type":"code","execution_count":202,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T00:31:45.310634Z","iopub.status.busy":"2022-04-08T00:31:45.310384Z","iopub.status.idle":"2022-04-08T00:31:45.688313Z","shell.execute_reply":"2022-04-08T00:31:45.687614Z","shell.execute_reply.started":"2022-04-08T00:31:45.310597Z"},"id":"trida5guu9js","outputId":"3dd13ba4-0351-4982-c162-578735af23f8","trusted":true},"outputs":[{"data":{"image/png":"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","text/plain":["<Figure size 432x288 with 5 Axes>"]},"metadata":{"needs_background":"light"},"output_type":"display_data"}],"source":["super_res_koeff = 2.0\n","plotn(5, train_dataset, super_res=super_res_koeff)"]},{"cell_type":"code","execution_count":203,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T00:31:45.690022Z","iopub.status.busy":"2022-04-08T00:31:45.689620Z","iopub.status.idle":"2022-04-08T00:31:45.698351Z","shell.execute_reply":"2022-04-08T00:31:45.697586Z","shell.execute_reply.started":"2022-04-08T00:31:45.689984Z"},"id":"9vC57e-rei4p","trusted":true},"outputs":[],"source":["class SuperResolutionEncoder(nn.Module):\n"," def __init__(self):\n"," super().__init__()\n"," self.conv1 = nn.Conv2d(1, 16, kernel_size=(3, 3), padding='same')\n"," self.maxpool1 = nn.MaxPool2d(kernel_size=(2, 2))\n"," self.conv2 = nn.Conv2d(16, 8, kernel_size=(3, 3), padding='same')\n"," self.maxpool2 = nn.MaxPool2d(kernel_size=(2, 2), padding=(1, 1))\n"," self.relu = nn.ReLU()\n","\n"," def forward(self, input):\n"," hidden1 = self.maxpool1(self.relu(self.conv1(input)))\n"," encoded = self.maxpool2(self.relu(self.conv2(hidden1)))\n"," return encoded"]},{"cell_type":"code","execution_count":204,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T00:31:45.699896Z","iopub.status.busy":"2022-04-08T00:31:45.699576Z","iopub.status.idle":"2022-04-08T00:31:45.714684Z","shell.execute_reply":"2022-04-08T00:31:45.713859Z","shell.execute_reply.started":"2022-04-08T00:31:45.699857Z"},"id":"d78J288qe5qJ","trusted":true},"outputs":[],"source":["model = AutoEncoder(super_resolution=True).to(device)\n","optimizer = optim.Adam(model.parameters(), lr=lr, eps=eps)\n","loss_fn = nn.BCELoss()"]},{"cell_type":"code","execution_count":205,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T00:31:45.718432Z","iopub.status.busy":"2022-04-08T00:31:45.718047Z","iopub.status.idle":"2022-04-08T00:38:29.683824Z","shell.execute_reply":"2022-04-08T00:38:29.683115Z","shell.execute_reply.started":"2022-04-08T00:31:45.718402Z"},"id":"CJ_zcN5Je6I-","outputId":"2311bd2a-55c6-4fdf-c4d2-37f0426fb61c","trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":["100%|██████████| 30/30 [06:43<00:00, 13.47s/it, train loss:=0.102, test loss:=0.103]\n"]}],"source":["train(dataloaders, model, loss_fn, optimizer, epochs, device, super_res=2.0)"]},{"cell_type":"code","execution_count":206,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T00:38:29.687844Z","iopub.status.busy":"2022-04-08T00:38:29.687353Z","iopub.status.idle":"2022-04-08T00:38:30.585026Z","shell.execute_reply":"2022-04-08T00:38:30.584352Z","shell.execute_reply.started":"2022-04-08T00:38:29.687803Z"},"id":"YsVfcCKKfjv1","outputId":"e7e029b0-b403-4feb-f869-d6367957741a","trusted":true},"outputs":[{"data":{"image/png":"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","text/plain":["<Figure size 432x288 with 5 Axes>"]},"metadata":{"needs_background":"light"},"output_type":"display_data"},{"data":{"image/png":"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","text/plain":["<Figure size 432x288 with 5 Axes>"]},"metadata":{"needs_background":"light"},"output_type":"display_data"}],"source":["model.eval()\n","predictions = []\n","plots = 5\n","shapes = test_dataset[0][0].shape\n","\n","for i, data in enumerate(test_dataset):\n"," if i == plots:\n"," break\n"," _transform = transforms.Resize((int(shapes[1] / super_res_koeff), int(shapes[2] / super_res_koeff)))\n"," predictions.append(model(_transform(data[0]).to(device).unsqueeze(0)).detach().cpu())\n","plotn(plots, test_dataset, super_res=super_res_koeff)\n","plotn(plots, predictions)"]},{"cell_type":"markdown","metadata":{"id":"-aZqFJthfu9-"},"source":["> **Exercise**: Try to train super-resolution network on [CIFAR-10](https://pytorch.org/vision/stable/generated/torchvision.datasets.CIFAR10.html) for 2x and 4x upscaling. Use noise as input to 4x upscaling model and observe the result."]},{"cell_type":"markdown","metadata":{"id":"A3DOJU1-gTJV"},"source":["# [Variational Auto-Encoders (VAE)](https://arxiv.org/abs/1906.02691)\n","\n","Traditional autoencoders reduce the dimension of the input data somehow, figuring out the important features of input images. However, latent vectors often do not make much sense. In other words, taking MNIST dataset as an example, figuring out which digits correspond to different latent vectors is not an easy task, because close latent vectors would not necessarily correspond to the same digits. \n","\n","On the other hand, to train *generative* models it is better to have some understanding of the latent space. This idea leads us to **variational auto-encoder** (VAE).\n","\n","VAE is the autoencoder that learns to predict *statistical distribution* of the latent parameters, so-called **latent distribution**. For example, we can assume that latent vectors would be distributed as $N(\\mathrm{z\\_mean},e^{\\mathrm{z\\_log}})$, where $\\mathrm{z\\_mean}, \\mathrm{z\\_log} \\in\\mathbb{R}^d$. Encoder in VAE learns to predict those parameters, and then decoder takes a random vector from this distribution to reconstruct the object.\n","\n","To summarize:\n","\n"," * From input vector, we predict `z_mean` and `z_log` (instead of predicting the standard deviation itself, we predict it's logarithm)\n"," * We sample a vector `sample(z_val in code)` from the distribution $N(\\mathrm{z\\_mean},e^{\\mathrm{z\\_log\\_sigma}})$\n"," * Decoder tries to decode the original image using `sample` as an input vector\n","\n"," <img src=\"images/vae.png\" width=\"50%\">\n","\n"," > Image from [this blog post](https://ijdykeman.github.io/ml/2016/12/21/cvae.html) by Isaak Dykeman"]},{"cell_type":"code","execution_count":207,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T00:38:30.586882Z","iopub.status.busy":"2022-04-08T00:38:30.586394Z","iopub.status.idle":"2022-04-08T00:38:30.595011Z","shell.execute_reply":"2022-04-08T00:38:30.594391Z","shell.execute_reply.started":"2022-04-08T00:38:30.586844Z"},"id":"aT_GEWeU409I","trusted":true},"outputs":[],"source":["class VAEEncoder(nn.Module):\n"," def __init__(self, device):\n"," super().__init__()\n"," self.intermediate_dim = 512\n"," self.latent_dim = 2\n"," self.linear = nn.Linear(784, self.intermediate_dim)\n"," self.z_mean = nn.Linear(self.intermediate_dim, self.latent_dim)\n"," self.z_log = nn.Linear(self.intermediate_dim, self.latent_dim)\n"," self.relu = nn.ReLU()\n"," self.device = device\n","\n"," def forward(self, input):\n"," bs = input.shape[0]\n","\n"," hidden = self.relu(self.linear(input))\n"," z_mean = self.z_mean(hidden)\n"," z_log = self.z_log(hidden)\n","\n"," eps = torch.FloatTensor(np.random.normal(size=(bs, self.latent_dim))).to(device)\n"," z_val = z_mean + torch.exp(z_log) * eps\n"," return z_mean, z_log, z_val"]},{"cell_type":"code","execution_count":208,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T00:38:30.596177Z","iopub.status.busy":"2022-04-08T00:38:30.595932Z","iopub.status.idle":"2022-04-08T00:38:30.606805Z","shell.execute_reply":"2022-04-08T00:38:30.606054Z","shell.execute_reply.started":"2022-04-08T00:38:30.596144Z"},"id":"XWi4oCcq409p","trusted":true},"outputs":[],"source":["class VAEDecoder(nn.Module):\n"," def __init__(self):\n"," super().__init__()\n"," self.intermediate_dim = 512\n"," self.latent_dim = 2\n"," self.linear = nn.Linear(self.latent_dim, self.intermediate_dim)\n"," self.output = nn.Linear(self.intermediate_dim, 784)\n"," self.relu = nn.ReLU()\n"," self.sigmoid = nn.Sigmoid()\n","\n"," def forward(self, input):\n"," hidden = self.relu(self.linear(input))\n"," decoded = self.sigmoid(self.output(hidden))\n"," return decoded"]},{"cell_type":"code","execution_count":209,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T00:38:30.608150Z","iopub.status.busy":"2022-04-08T00:38:30.607836Z","iopub.status.idle":"2022-04-08T00:38:30.618464Z","shell.execute_reply":"2022-04-08T00:38:30.617740Z","shell.execute_reply.started":"2022-04-08T00:38:30.608114Z"},"id":"WukDYQ9f409p","trusted":true},"outputs":[],"source":["class VAEAutoEncoder(nn.Module):\n"," def __init__(self, device):\n"," super().__init__()\n"," self.encoder = VAEEncoder(device)\n"," self.decoder = VAEDecoder()\n"," self.z_vals = None\n","\n"," def forward(self, input):\n"," bs, c, h, w = input.shape[0], input.shape[1], input.shape[2], input.shape[3]\n"," input = input.view(bs, -1)\n"," encoded = self.encoder(input)\n"," self.z_vals = encoded\n"," decoded = self.decoder(encoded[2])\n"," return decoded\n"," \n"," def get_zvals(self):\n"," return self.z_vals"]},{"cell_type":"markdown","metadata":{},"source":["Variational auto-encoders use complex loss function that consists of two parts:\n","* **Reconstruction loss** is the loss function that shows how close reconstructed image is to the target (can be MSE). It is the same loss function as in normal autoencoders.\n","* **KL loss**, which ensures that latent variable distributions stays close to normal distribution. It is based on the notion of [Kullback-Leibler divergence](https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained) - a metric to estimate how similar two statistical distributions are."]},{"cell_type":"code","execution_count":210,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T00:38:30.620121Z","iopub.status.busy":"2022-04-08T00:38:30.619868Z","iopub.status.idle":"2022-04-08T00:38:30.627984Z","shell.execute_reply":"2022-04-08T00:38:30.627265Z","shell.execute_reply.started":"2022-04-08T00:38:30.620089Z"},"trusted":true},"outputs":[],"source":["def vae_loss(preds, targets, z_vals):\n"," mse = nn.MSELoss()\n"," reconstruction_loss = mse(preds, targets.view(targets.shape[0], -1)) * 784.0\n"," temp = 1.0 + z_vals[1] - torch.square(z_vals[0]) - torch.exp(z_vals[1])\n"," kl_loss = -0.5 * torch.sum(temp, axis=-1)\n"," return torch.mean(reconstruction_loss + kl_loss)"]},{"cell_type":"code","execution_count":211,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T00:38:30.629709Z","iopub.status.busy":"2022-04-08T00:38:30.629192Z","iopub.status.idle":"2022-04-08T00:38:30.648407Z","shell.execute_reply":"2022-04-08T00:38:30.647801Z","shell.execute_reply.started":"2022-04-08T00:38:30.629671Z"},"trusted":true},"outputs":[],"source":["model = VAEAutoEncoder(device).to(device)\n","optimizer = optim.RMSprop(model.parameters(), lr=lr, eps=eps)"]},{"cell_type":"code","execution_count":212,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T00:38:30.649871Z","iopub.status.busy":"2022-04-08T00:38:30.649560Z","iopub.status.idle":"2022-04-08T00:38:30.659437Z","shell.execute_reply":"2022-04-08T00:38:30.658769Z","shell.execute_reply.started":"2022-04-08T00:38:30.649835Z"},"trusted":true},"outputs":[],"source":["def train_vae(dataloaders, model, optimizer, epochs, device):\n"," tqdm_iter = tqdm(range(epochs))\n"," train_dataloader, test_dataloader = dataloaders[0], dataloaders[1]\n","\n"," for epoch in tqdm_iter:\n"," model.train()\n"," train_loss = 0.0\n"," test_loss = 0.0\n","\n"," for batch in train_dataloader:\n"," imgs, labels = batch\n"," imgs = imgs.to(device)\n"," labels = labels.to(device)\n","\n"," preds = model(imgs)\n"," z_vals = model.get_zvals()\n"," loss = vae_loss(preds, imgs, z_vals)\n","\n"," optimizer.zero_grad()\n"," loss.backward()\n"," optimizer.step()\n","\n"," train_loss += loss.item()\n","\n"," model.eval()\n"," with torch.no_grad():\n"," for batch in test_dataloader:\n"," imgs, labels = batch\n"," imgs = imgs.to(device)\n"," labels = labels.to(device)\n","\n"," preds = model(imgs)\n"," z_vals = model.get_zvals()\n"," loss = vae_loss(preds, imgs, z_vals)\n","\n"," test_loss += loss.item()\n","\n"," train_loss /= len(train_dataloader)\n"," test_loss /= len(test_dataloader)\n","\n"," tqdm_dct = {'train loss:': train_loss, 'test loss:': test_loss}\n"," tqdm_iter.set_postfix(tqdm_dct, refresh=True)\n"," tqdm_iter.refresh()"]},{"cell_type":"code","execution_count":213,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T00:38:30.661256Z","iopub.status.busy":"2022-04-08T00:38:30.660812Z","iopub.status.idle":"2022-04-08T00:43:25.674280Z","shell.execute_reply":"2022-04-08T00:43:25.673608Z","shell.execute_reply.started":"2022-04-08T00:38:30.661216Z"},"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":["100%|██████████| 30/30 [04:54<00:00, 9.83s/it, train loss:=35.1, test loss:=35.6]\n"]}],"source":["train_vae(dataloaders, model, optimizer, epochs, device)"]},{"cell_type":"code","execution_count":214,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T00:43:25.676045Z","iopub.status.busy":"2022-04-08T00:43:25.675634Z","iopub.status.idle":"2022-04-08T00:43:26.429255Z","shell.execute_reply":"2022-04-08T00:43:26.428437Z","shell.execute_reply.started":"2022-04-08T00:43:25.676007Z"},"trusted":true},"outputs":[{"data":{"image/png":"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","text/plain":["<Figure size 432x288 with 5 Axes>"]},"metadata":{"needs_background":"light"},"output_type":"display_data"},{"data":{"image/png":"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","text/plain":["<Figure size 432x288 with 5 Axes>"]},"metadata":{"needs_background":"light"},"output_type":"display_data"}],"source":["model.eval()\n","predictions = []\n","plots = 5\n","for i, data in enumerate(test_dataset):\n"," if i == plots:\n"," break\n"," predictions.append(model(data[0].to(device).unsqueeze(0)).view(1, 28, 28).detach().cpu())\n","plotn(plots, test_dataset)\n","plotn(plots, predictions)"]},{"cell_type":"markdown","metadata":{},"source":["> **Task**: In our sample, we have trained fully-connected VAE. Now take the CNN from traditional auto-encoder above and create CNN-based VAE."]},{"cell_type":"markdown","metadata":{},"source":["# [Adversarial Auto-Encoders (AAE)](https://arxiv.org/abs/1511.05644)"]},{"cell_type":"markdown","metadata":{},"source":["Adversarial Auto-Encoders is a **combination** of Generative Adversarial Networks and Variational Auto-Encoders. \n","\n","Encoder will be the generator, discriminator will learn to distinguish the real images encoder output from generated ones. Encoder output is a distribution, from this output decoder will try decode image.\n","\n","In this approach we have **three loss functions**: generator loss, discriminator loss from GAN's and reconstruction loss from VAE.\n","\n"," <img src=\"images/aae.png\" width=\"50%\">\n","\n"," > Image from [this blog post](https://blog.paperspace.com/adversarial-autoencoders-with-pytorch/) by Felipe Ducau"]},{"cell_type":"code","execution_count":215,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T00:43:26.430881Z","iopub.status.busy":"2022-04-08T00:43:26.430435Z","iopub.status.idle":"2022-04-08T00:43:26.437703Z","shell.execute_reply":"2022-04-08T00:43:26.437030Z","shell.execute_reply.started":"2022-04-08T00:43:26.430837Z"},"trusted":true},"outputs":[],"source":["class AAEEncoder(nn.Module):\n"," def __init__(self, input_dim, inter_dim, latent_dim):\n"," super().__init__()\n"," self.linear1 = nn.Linear(input_dim, inter_dim)\n"," self.linear2 = nn.Linear(inter_dim, inter_dim)\n"," self.linear3 = nn.Linear(inter_dim, inter_dim)\n"," self.linear4 = nn.Linear(inter_dim, latent_dim)\n"," self.relu = nn.ReLU()\n"," \n"," def forward(self, input):\n"," hidden1 = self.relu(self.linear1(input))\n"," hidden2 = self.relu(self.linear2(hidden1))\n"," hidden3 = self.relu(self.linear3(hidden2))\n"," encoded = self.linear4(hidden3)\n"," return encoded"]},{"cell_type":"code","execution_count":216,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T00:43:26.439383Z","iopub.status.busy":"2022-04-08T00:43:26.438973Z","iopub.status.idle":"2022-04-08T00:43:26.450914Z","shell.execute_reply":"2022-04-08T00:43:26.450120Z","shell.execute_reply.started":"2022-04-08T00:43:26.439339Z"},"trusted":true},"outputs":[],"source":["class AAEDecoder(nn.Module):\n"," def __init__(self, latent_dim, inter_dim, output_dim):\n"," super().__init__()\n"," self.linear1 = nn.Linear(latent_dim, inter_dim)\n"," self.linear2 = nn.Linear(inter_dim, inter_dim)\n"," self.linear3 = nn.Linear(inter_dim, inter_dim)\n"," self.linear4 = nn.Linear(inter_dim, output_dim)\n"," self.relu = nn.ReLU()\n"," self.sigmoid = nn.Sigmoid()\n"," \n"," def forward(self, input):\n"," hidden1 = self.relu(self.linear1(input))\n"," hidden2 = self.relu(self.linear2(hidden1))\n"," hidden3 = self.relu(self.linear3(hidden2))\n"," decoded = self.sigmoid(self.linear4(hidden3))\n"," return decoded"]},{"cell_type":"code","execution_count":217,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T00:43:26.453838Z","iopub.status.busy":"2022-04-08T00:43:26.453577Z","iopub.status.idle":"2022-04-08T00:43:26.462584Z","shell.execute_reply":"2022-04-08T00:43:26.461884Z","shell.execute_reply.started":"2022-04-08T00:43:26.453814Z"},"trusted":true},"outputs":[],"source":["class AAEDiscriminator(nn.Module):\n"," def __init__(self, latent_dim, inter_dim):\n"," super().__init__()\n"," self.latent_dim = latent_dim\n"," self.inter_dim = inter_dim\n"," self.linear1 = nn.Linear(latent_dim, inter_dim)\n"," self.linear2 = nn.Linear(inter_dim, inter_dim)\n"," self.linear3 = nn.Linear(inter_dim, inter_dim)\n"," self.linear4 = nn.Linear(inter_dim, inter_dim)\n"," self.linear5 = nn.Linear(inter_dim, 1)\n"," self.relu = nn.ReLU()\n"," self.sigmoid = nn.Sigmoid()\n"," \n"," def forward(self, input):\n"," hidden1 = self.relu(self.linear1(input))\n"," hidden2 = self.relu(self.linear2(hidden1))\n"," hidden3 = self.relu(self.linear3(hidden2))\n"," hidden4 = self.relu(self.linear4(hidden3))\n"," decoded = self.sigmoid(self.linear4(hidden4))\n"," return decoded\n"," \n"," def get_dims(self):\n"," return self.latent_dim, self.inter_dim\n"," "]},{"cell_type":"code","execution_count":218,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T00:43:26.464666Z","iopub.status.busy":"2022-04-08T00:43:26.464215Z","iopub.status.idle":"2022-04-08T00:43:26.474821Z","shell.execute_reply":"2022-04-08T00:43:26.474117Z","shell.execute_reply.started":"2022-04-08T00:43:26.464628Z"},"trusted":true},"outputs":[],"source":["input_dims = 784\n","inter_dims = 1000\n","latent_dims = 150"]},{"cell_type":"code","execution_count":219,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T00:43:26.477879Z","iopub.status.busy":"2022-04-08T00:43:26.477199Z","iopub.status.idle":"2022-04-08T00:43:26.537720Z","shell.execute_reply":"2022-04-08T00:43:26.537052Z","shell.execute_reply.started":"2022-04-08T00:43:26.477797Z"},"trusted":true},"outputs":[],"source":["aae_encoder = AAEEncoder(input_dims, inter_dims, latent_dims).to(device)\n","aae_decoder = AAEDecoder(latent_dims, inter_dims, input_dims).to(device)\n","aae_discriminator = AAEDiscriminator(latent_dims, int(inter_dims / 2)).to(device)"]},{"cell_type":"code","execution_count":220,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T00:43:26.539592Z","iopub.status.busy":"2022-04-08T00:43:26.539109Z","iopub.status.idle":"2022-04-08T00:43:26.543949Z","shell.execute_reply":"2022-04-08T00:43:26.543156Z","shell.execute_reply.started":"2022-04-08T00:43:26.539555Z"},"trusted":true},"outputs":[],"source":["lr = 1e-4\n","regularization_lr = 5e-5"]},{"cell_type":"code","execution_count":221,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T00:43:26.545858Z","iopub.status.busy":"2022-04-08T00:43:26.545404Z","iopub.status.idle":"2022-04-08T00:43:26.553377Z","shell.execute_reply":"2022-04-08T00:43:26.552700Z","shell.execute_reply.started":"2022-04-08T00:43:26.545825Z"},"trusted":true},"outputs":[],"source":["optim_encoder = optim.Adam(aae_encoder.parameters(), lr=lr)\n","optim_encoder_regularization = optim.Adam(aae_encoder.parameters(), lr=regularization_lr)\n","optim_decoder = optim.Adam(aae_decoder.parameters(), lr=lr)\n","optim_discriminator = optim.Adam(aae_discriminator.parameters(), lr=regularization_lr)"]},{"cell_type":"code","execution_count":222,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T00:43:26.555945Z","iopub.status.busy":"2022-04-08T00:43:26.555659Z","iopub.status.idle":"2022-04-08T00:43:26.576630Z","shell.execute_reply":"2022-04-08T00:43:26.575929Z","shell.execute_reply.started":"2022-04-08T00:43:26.555908Z"},"trusted":true},"outputs":[],"source":["def train_aae(dataloaders, models, optimizers, epochs, device):\n"," tqdm_iter = tqdm(range(epochs))\n"," train_dataloader, test_dataloader = dataloaders[0], dataloaders[1]\n"," \n"," enc, dec, disc = models[0], models[1], models[2]\n"," optim_enc, optim_enc_reg, optim_dec, optim_disc = optimizers[0], optimizers[1], optimizers[2], optimizers[3]\n"," \n"," eps = 1e-9\n","\n"," for epoch in tqdm_iter:\n"," enc.train()\n"," dec.train()\n"," disc.train()\n","\n"," train_reconst_loss = 0.0\n"," train_disc_loss = 0.0\n"," train_enc_loss = 0.0\n"," \n"," test_reconst_loss = 0.0\n"," test_disc_loss = 0.0\n"," test_enc_loss = 0.0\n","\n"," for batch in train_dataloader:\n"," imgs, labels = batch\n"," imgs = imgs.view(imgs.shape[0], -1).to(device)\n"," labels = labels.to(device)\n"," \n"," enc.zero_grad()\n"," dec.zero_grad()\n"," disc.zero_grad()\n"," \n"," encoded = enc(imgs)\n"," decoded = dec(encoded)\n"," \n"," reconstruction_loss = F.binary_cross_entropy(decoded, imgs)\n"," reconstruction_loss.backward()\n"," \n"," optim_enc.step()\n"," optim_dec.step()\n"," enc.eval()\n","\n"," latent_dim, disc_inter_dim = disc.get_dims()\n"," real = torch.randn(imgs.shape[0], latent_dim).to(device)\n"," \n"," disc_real = disc(real)\n"," disc_fake = disc(enc(imgs))\n"," \n"," disc_loss = -torch.mean(torch.log(disc_real + eps) + torch.log(1.0 - disc_fake + eps))\n"," disc_loss.backward()\n"," \n"," optim_dec.step()\n"," enc.train()\n"," \n"," disc_fake = disc(enc(imgs))\n"," enc_loss = -torch.mean(torch.log(disc_fake + eps))\n"," enc_loss.backward()\n"," \n"," optim_enc_reg.step()\n","\n"," train_reconst_loss += reconstruction_loss.item()\n"," train_disc_loss += disc_loss.item()\n"," train_enc_loss += enc_loss.item()\n","\n"," enc.eval()\n"," dec.eval()\n"," disc.eval()\n","\n"," with torch.no_grad():\n"," for batch in test_dataloader:\n"," imgs, labels = batch\n"," imgs = imgs.view(imgs.shape[0], -1).to(device)\n"," labels = labels.to(device)\n","\n"," encoded = enc(imgs)\n"," decoded = dec(encoded)\n","\n"," reconstruction_loss = F.binary_cross_entropy(decoded, imgs)\n","\n"," latent_dim, disc_inter_dim = disc.get_dims()\n"," real = torch.randn(imgs.shape[0], latent_dim).to(device)\n","\n"," disc_real = disc(real)\n"," disc_fake = disc(enc(imgs))\n"," disc_loss = -torch.mean(torch.log(disc_real + eps) + torch.log(1.0 - disc_fake + eps))\n","\n"," disc_fake = disc(enc(imgs))\n"," enc_loss = -torch.mean(torch.log(disc_fake + eps))\n","\n"," test_reconst_loss += reconstruction_loss.item()\n"," test_disc_loss += disc_loss.item()\n"," test_enc_loss += enc_loss.item()\n","\n"," train_reconst_loss /= len(train_dataloader)\n"," train_disc_loss /= len(train_dataloader)\n"," train_enc_loss /= len(train_dataloader)\n"," \n"," test_reconst_loss /= len(test_dataloader)\n"," test_disc_loss /= len(test_dataloader)\n"," test_enc_loss /= len(test_dataloader)\n","\n"," tqdm_dct = {'train reconst loss:': train_reconst_loss, 'train disc loss:': train_disc_loss, 'train enc loss': train_enc_loss, \\\n"," 'test reconst loss:': test_reconst_loss, 'test disc loss:': test_disc_loss, 'test enc loss': test_enc_loss}\n"," tqdm_iter.set_postfix(tqdm_dct, refresh=True)\n"," tqdm_iter.refresh()"]},{"cell_type":"code","execution_count":223,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T00:43:26.578419Z","iopub.status.busy":"2022-04-08T00:43:26.577933Z","iopub.status.idle":"2022-04-08T00:43:26.589197Z","shell.execute_reply":"2022-04-08T00:43:26.588532Z","shell.execute_reply.started":"2022-04-08T00:43:26.578373Z"},"trusted":true},"outputs":[],"source":["models = (aae_encoder, aae_decoder, aae_discriminator)\n","optimizers = (optim_encoder, optim_encoder_regularization, optim_decoder, optim_discriminator)"]},{"cell_type":"code","execution_count":224,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T00:43:26.592138Z","iopub.status.busy":"2022-04-08T00:43:26.590197Z","iopub.status.idle":"2022-04-08T00:52:49.002321Z","shell.execute_reply":"2022-04-08T00:52:49.001592Z","shell.execute_reply.started":"2022-04-08T00:43:26.592099Z"},"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":["100%|██████████| 30/30 [09:22<00:00, 18.75s/it, train reconst loss:=0.0919, train disc loss:=1.39, train enc loss=0.692, test reconst loss:=0.0945, test disc loss:=1.39, test enc loss=0.692]\n"]}],"source":["train_aae(dataloaders, models, optimizers, epochs, device)"]},{"cell_type":"code","execution_count":225,"metadata":{"execution":{"iopub.execute_input":"2022-04-08T00:52:49.004318Z","iopub.status.busy":"2022-04-08T00:52:49.003842Z","iopub.status.idle":"2022-04-08T00:52:50.737055Z","shell.execute_reply":"2022-04-08T00:52:50.736379Z","shell.execute_reply.started":"2022-04-08T00:52:49.004280Z"},"trusted":true},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAXQAAAA/CAYAAADwizNIAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAlWElEQVR4nO2dZ3gc1dmw7zOzfdV7781F7r0BxmBKTAkQMN2EmCRAAkk+AoQkvC/pIZSQhNBLqA6mBDDNBhuMu+UqF0m2ZcnqXStp+5zvx8pFuCLtCsXv3Lr2urS7s3Pundl55sw5zzkjpJTo6Ojo6Pz3o3zTAjo6Ojo6wUEP6Do6OjqnCXpA19HR0TlN0AO6jo6OzmmCHtB1dHR0ThP0gK6jo6NzmjCggC6EOE8IsVsIUSGEuDtYUrrH6eExlFx0D93jv8FjwEgp+/UAVGAPkAOYgC3A8P6uT/c4vTyGkovuoXv8N3gE4zGQGvokoEJKuVdK6QFeAy4ewPp0j9PLYyi56B66x3+Dx4ARvWeor/9BIS4HzpNS3tz7/DpgspTytuN9xiTM0oK9X+UdDy8e/Hg5uF4vbvz4sWDDRTce6Ra6x+B7nMgF5JDwsGDDQVuzlDJe99A9vmmPE3Esj2NhCLWIEGIhsBDAgo3J4uygrr9BHqCFeoaLCQDUyf100EqRGMtauUz3+IY8TuTSQeuQ8CgSY1kq39ive+geQ8HjRBz0OBkDaXKpAdKPeJ7W+1ofpJRPSiknSCknGDEPoLhjY8aKC+eh5y6cmLEetZzuMbgep+qie+geukfwGEhAXw/kCyGyhRAm4CrgP8HROnUiiMZJF07ZjSY1GqgmnuTB1tA9hrCL7qF7DHkPRcWQlYH7/Il454zv92r63eQipfQJIW4DPiLQS/yslLK03yYnofq+aSy46iOee3UuGX9ch/T5AFCEQqEcwya+QCJJIYswERnUstXoaHY+mMtHcx7lqZYZfPL8VBL/uqrPMoPh8VUUux2RkkjduUnccus7zLaXscaZSdkv57Np0WuD5nFcv+NtkyBP8KkW5OLMjj703Bum4glXiC1pQ9u66xvZN8dC99A9voohOYnqq3OYeMVWZkatYYy5mmtKbiJtaT/XNxAZKeUSYMlA1nGqaCbJrVE7sVzt45/yQtJ+dzigxolk4kJ4Rt3//WHcN+1Nsg0WrotZzRsjJpASFYm/vaPPcqH2+Cq+cQUc+JGP1yc+RKZBYhEmXJYDqBdezKz1C/FVVg2ay/EI1jZR42LZfV8+4yeUU9MVSW1tDPGJHRTH1jEt8kumWPfhJ9DPqiJp0az8eNtVJN8Q2E+DvW+OxJCTxY774rhx/CrWTM0lrueb8TiSoG8PRUUpLqD82ijSRtdxUcpWptnKUYTGEw1nUfKvUSQ9vwWtuzu0Hl/BefEkPLe08ofCN7EIL592DeeZZWdR8Fw72tZdg+bxVRS7na65I7HfdoB3cv9EjKpiRKVH+oi2O0++guMQ8k7RYKDY7fgtYBQqs+27eLho8Dok1GH52KY3c2V4JQomYhQf547dTslL6fyycD0V7iQeWzOb4Q804NtfPShOSng4PWcOo2qe5MaCteQYQEEFINMg+d3UN/nr5CsJH8yA3ntAl90QSUZxHc7nk4l8dT1o/qCs3vu6jbdyHyHTIHFLDddwiUUIzELBIgwYMKMhWe1W+Vvt2fg0hW6nCcQ3OxhajY6mbm4y781+iOU9BUBUSMtTwsMhN52GqZF0FEo0i0Z6dhM/z/0Ah9/KP/efge1OM/7S3UEtV5s+CuMD9SzJfpooBcKEEbMwACoPpX3C6jvX88NJ11B01wH8DY1BLftYCLOZjsvGEvbdGp7Oe41sgwWAkaYtzLlkOz8qnE/UL0YgN4WsUeGYqMMLqDsrjvZRXs4du5X7kz6hXVP4dcNM3l82kbRPfXTlG7Gzt1/r/68I6O6pRSSMagDAKDQUgzZoZUujit3kwiyMaEjiVTP3J32CNwmSVSteazuTZ1dwS8x1ZPwiH//O8pA7NV8+kpG3bOfRxKXEqV6O3I0qgsmWarrndxC9Kg1f9YGQ+yAEvjPH4PhpJ4uHP0qM6uWBH82lZnNeUAKHOqKQ85PWkmdQ+NgZwy+2XkxP0+G0McWpEFGhEF3uwdDtw9DkACCPbvzt7QMufyBoeWkkXFFFi2bln8/PI8W5OviFKCqec8dRNVcldXgD5yaXALCqJYcuj5mUsA680sBlYc1MLHyJhY9ejfkHOfjL+xc0vkrn/ClYbqrjr1mLDwVOAK23bc0mTJxl7WJcThU9UVHQ0IgSHo5/VC6qw9WnphwsXHNGEfbdGibG7Of8z29DrbHgjfdy8ZjN/CR+OX8pWsS1ty2k6FYLmssV9PKPRLHb8UwpomWEmZ5pXTw84VlyDK3Eq5J3uvJ47B/fJuXjRvLb96C1tpOy1k5/q0H/FQG9pdjMT7M+/0bKPjA3hoWp76P0Xs4rqCSotkPvm4WBSWbJfSOW8NDkq4gOcUBvXTCVkbds54GUD4hSDBxrF8aoKvcM+5AXYs+H/l40CEH7tVMwuCWRpW1oFZVIt/vo5RQV99xxuG5v49URz5NmMLPfJ1hbl0HqvlPKtDopjoIockyNGIXKz9ZdQdbTAvPeusML+DVkVxdaVzdSk/gPXhUIAf0cZ3GqqIV5eOPDMFU24TvQN8lLjY6mbmI4z2U/zRsdE0h/rhx/kH06rp1C+0XdLBi2HJvi4e260Tz72ZnEbxRE73Bg9/hoN6XwaNx8Hsg00D7Txc/Hf8Tj51xCQhACujAYqJ+l8XTOe+QYjbzVHcPday7DusuC4oOeZI2pk3fxQOp7LExewS13LqDwmWIcGTbmP7CErV1prHx7Wp8m1IHScc0UrDfWMTm2kjcXz6Tw9QaEow7MJtZOncANN6XyRMErXDN+LevHjIU1W4NW9pEoNhvl/zOaC87awGj7+6Qa20g3tLOkayQ/Wnoj8eshqqyblIqd+NvaDn3O3+bpd5lDPqCrsTE4sv3MtlXCMdLvQomcNpqEuQe4MmIHjX7J/F3X0tpj5bnRL5Bj8FHiCafaG8t14fXEGzrx2o4aKxMUFLudlitG4by4g9uL3uECexmJqpUnO7J45N1vkfq5j8axRrb94G8gwAhkGZuRav99ur89iVl3riHD3EqJI4NNr4wn9d0a/NU1hzukw8PxTCyg6io/7w9/kTRDIJ1rlyce+WU0Ws/OYHx9VLeGSxpREIgDFsz7ak6teSvEwVwJD2fnT6MpyK2j9el0Il49IqALgWtiLsXXbWeXJ4m3X5tJalPwghZA9+WTyfnBbn6Z+j6PNJ7NF++MJXWlk2FVdciWNvwOx8Gh7ZiNJhIjwrA15tM22o43IjgOSng4c8aVMsHchYKJn3/2HfKf92DYWwGaRNitVI8sYM6Vt/PezL/zxJzneL54BgXmLhZGVtIVvptXrj3AIyPPpuDnzQO+ojTkZNF5aRf/zFvEe47R2Ook2t79h36z0a3t9LQXcsF1t/K3Sa/y1lkzSVsTjC3RFzUxgYo7crnnW28xP7yK7V7BraXX0PNlHDG7/BRtqkVrbEbr6el3bfxYDPmA7h2ZSUJeC/Hq4Od+1k23c3vqJ8QqVuaVfQv3c0mklDm4I/N2/EaBwa3RMszAdbf9jSxDB10zekj4R3AdFLud1stGkXBjJQ9lv0GaakQVZur8Tt6sHUvyKj/m99cTZ5iEhjxUAzzYQdhfulJVropey0iTwBW5i5e+X8njZ86ip248lnoVKcCV7mVsYSXPpi4jx2jEK/2UeCzcveXbZH7USrAaxiyNTlp9YfhoJqYUtPrQt8GeCm0XjWD+xFVs7UjF5Oj7bQ1ZGeybbeTPSUu5s+xKMl+uwhfEsg1ZGXRc4+CqhLVcsvb7xL1hJXv1fvz1Dfh8fUtSbDaUyAi0jk5Uj8biqjEkrQlOM4PW08OKfYXUJn5CnhGikhxI1XK4nbwJbPWNpPuLuT76RlaOfZmJGe8D0KFJ/tw8HYfPwstTn+KO6bcT/lr/A7pit1N5VQp3jHibAqOgrDsBk0MitcMndn9nJ/ZNVZjG5ZI0tZOevP7Xho+HISmRittzuP2iJUy0VnLO9qtpXZ1E4jov8SUVyI5OfCFq5hnyAd0TYSTO1o3SmzK/vCcf8zbbST41cAxpqTCtnbNtZWhYKSvJoODjMvwtrdg2Hl4ulkkA2ATkJDYH3aPl8lEkLKjkj1lvkqKqaGg81lrMU1tnEP6llZR1ew8FCq33D8A/wJmRk77s4PdXXMBtKZ8y1uzj5si9zB63mwZ/GFXeGFQhyTI2kW90Eq1YOOBzs6hzLE+UzCTvSQ25s2yA3/wwrngrMYYuFBR6EgVh00cAYKloxFd1IOQ18WNhSEqk5UIXU8IqWPz+dPI27ju0H9T4eGovTOXyuStZ1D4Jz78S8VUHtxrYMiOFWwvfZV13LjFv24hYsg3fVzJIAJRRRey5Ohoyewhfnk3ShwdQH0rAuLEsKCdc6XZjXRvGtnHJ5BlbeXDkv7njp1cSEzUJ64clSL8fJSqStgIjC7LXoaAQppgp9fi47Mvvk7LYhNAkt6SNI3lr84BqqyIjhcxzKplnL+O9nlTWfzSSnHU1+GTfbypdLiwtkipfNKolmPXjQNzYe1MmN1/8ETNtZdy49Qas/4oiZ00VWmsb/mPso6CWH9K1B4HWQgPzEwJtXF2amxf3TyHj/eDV/o5Hw3kZXJu3lAyDlf90RxO+R8Hf0nrc5b1Aq9NGTBAdHFdOIWFBoGaeoqqHXn9i00zy/+bFUFOJr64+iCUewZbdNP1pHLcXFsD0dqak7CfC4GRu5DYuDqtmpSuabs1MpBI4IN7rGsFzb80hf0k3rNka1FTzngQDsWoXAPOuXknFxfFoUrC7OYGu9nGYq02YWwTSAKZOialTElnajmhowd/UFESTw1Rdn8sdY97l71WzSf7Sh6++4dB7/uwkuqd3c3ZEKTd/toBh7+8O6mU1QONkyUTrPh7beSbpuxxHpQMCKGOGU3Z9BN8/92NyTE3cu+cafPurMeyvDurxk7y8gycuPIMpBa8wywKLxj7Nb++9gLWzJmLsEHiGO7lm5Ap+EFUOKLill3c6x5H/iBe5cTMANoMRv3dgtWXNbmZC9C5iVDO/2nwRGR93B1J3v3LC17q6iaj2saYrjwlZ+3FkpgctQ61zYhpnz9vIzZHbeN2RT0dFNGYDdI1OAVIAUF1+LPvbgtYpfSRDPqA7kzXOsJUDZrZ5bdTtSsC+fX3Iy20dozHVXk6b5uKudZeRv95xVJBSY2Nozwlswia/ifbtsUEJ6N4546mfaiZvzl4ezFpMmmpEQ+OBpim8UTqW1LeNsK7kcI2wMI/q84NQ8BFInw/Lu+tI/yIS7/ocdiQWoxngw8wpuOI1rA0KPel+7j77XRZEVFPuTCBuqxb0DiZhNNE0zUeK6gDMPJCwGQhkUPRke+jR/Kx1J1HuTsQo/NR5omh0h1NSn0ZnbTYJa/KIKWlD2x68TAq1MI/08ysZb6nkH8vmkVlScbizU1HpyLdzadEalrSPJvkTQ58Or2BhTHASrniRUvDVkVpqfDzdU7Kpmie5b+bb5Jvrua/8UtKXHqNTOxjsqKDrhXEsXHAlf8l5gzyjkecyl/FZwpfU+yI501ZJnGKiR/PhRfJSRzGvLzqT9A2H+xTkAIM5QMOkCAosdSx1hmP5IhzDjtJjd0ILBSkEZsVHkqWTTkvwqmFem2BW5C6iVRvFlmounLWR2ol9Byn1+ExUtsSg7ZhK2mdu1M9Kglb+kA7ohqRE/DFeohQNBcHq7nwiypWg5TYft9ycLHKH1ZJv6GKHJ4LwdVbEtpK+h40Q+PPT8E3rBKBdsxJWNfBOUcVmo3aWiZ9c8Tbz7GXE9PYdPNZazHuLplGwpA2xb0+fGl9PbjQ/nLEMAyr+Xks1SHUwf3sHyopNhPU+jwoPR9isyK5uWq4YxY6pKRBRTbqllaVFKrbpYzDurQeTEV91LYbkRPyNzf0+YJUwOzdO+ZJ0g8LnLhN3bvsOXVURKB6BP8qH0e4lzO4iwuImyd7JzOhyLozczJ9Tu2kaI3hs4mw+2jWMnCfHonyxaeAbRAiq5yXwy9SX+Vv92SRu8PTJq1aH5dEwU2OsbT/3fHEZw5bvDXrtHMCwOYzy8bEsKFrNP344m4jSaUgFvBHgSvBRWFTD05kfMsviYZnTRt2WJHJWhKD3j0CzS8ziLTicxcy/9iYeH/Uyk8ySs6wuwAVYKfN6eLB+LstLC4ncbCL7zcqg9ikAdAzzk2Vq5oebryFlQ/dRA/8OC2sITdLms7G2MZPohuBdxUWWd/OHXeexOX0nuZZGwlQ30abAQCFFBI7JcZHV3J/1Du1jbNySegNFq4OXOjmkA3rTeTmcO2Iz4UpAc68zDntDaIM5wIF5KdyT9ipxqpVn2guwNWpHbXA1PJzGEXZ+UbwoqGVro/JInVbDeb3BXEGhzu/kyS0zyFvmQNvSN3NECQ+nK8VAsSXQmaQKgUv6WNk9AsXlC0owMSQlUndpDq44gaEbwqv9uCMUuuZ2MS8qECRn23dScVECq8Zn012VhTRqWBrTcUdrRO/IJO6pdf07EasKqtAo8Vi4eelN5D/vQSnZjHS7MSQlImMi8UVa8YWHUx2ZyJNpRTjjJeR0Mye3jHsTl3J34lLO1H5E0c5Y/M0tA9oWQlVxjeuh2FTHz7deybDqtj7buL04mvPHb2ZrTzqJyw0hG0STubiBuyZcxv8Wv8tH5z7CqpnZGIUfu+KmxRdGh99Gt2YGPGxxZhBdSkj7GrSeHsKXbKN+6igcI61AT5/3vVJhTXUWhf9wwpbNR3XcBgNplJjw490ZgbH6+J3QwmDAG6ZiFH4ad8UT0b4naA7KzkrCnhnGxwnT8UQITJ0SQ0/f7b4uUuG5GVNZPO2f/HDyZ7x73tlY314XlPKHdEBvnqhxa8JnGIWKW/oobU0mbF9XsKcCOQrnlG5Gm2sAM8saCrE0e49eKCGWtpGS74Q10iU9fNw5juiKgV02KnY7+88J41+5TxOjGPBKPz3Sw93V84hYZQ20mR+xvBoRQc/0QtpnO8k0tOEjkGlywAf//PIshjXuG5DPQfypccy6eT33JqxghyecF5qmUxxWw7WR24hVrIBgpEnwl5TPcCUvxTU+sIe8Ehr8Vm5w3Ea8IpD9uGiQXd288u/ZvBB+FkUvtyNLyw+loPnqG6C+AUEgVdMIhBEYJahkprFh6lguvDSbJ0a9xFMzXuDHN99C6h8GljooNYm/zUyrZiExo5WughjCaiKQPh8iLZnm0YIxYVU8tO1sclfVB70WehB/2R7in5nI3Wdcg62wnUhroMJxoD4aY7UZzQRjp5UxLfM/fFA3gvjPa0PmAqBYLDjOL2bMpArGmVsBC5s8Gk3+cMaZmskzGihOrqVTSTm0/0KGxglPXiLMTmeGwnh7Jcu3Tglu0Q4H1nfWnTTBOrpiAvenzeO3Ge/wzNXTyFkRHZSmuSEd0I+kVfNQUx1LwcbQt59brR4svZdH+3cnUVTVt/ddjYqkbWIixeMCAbPWJ3lj+1jyPt4woHLbLilm5NzdJKoeDu6ae2rmsuulIlLe2tOn400JD6dneiE113l5YcqzZBoCy/dIPy+2TSfzHRn0DsEwYWS0qYvfpXzAKlcK2zwRzLJ4UBBscKv8sXoeZQ195+B3d5kZ9vBu/P08iDWXi/QHAkH4VM8H0u3GX7aHmH3V+PeO4He/uZB/573LXTcu4uU/pPXL47CQn4z3Ne7Ju4zfFr7FXTdfRkfWSBQ/dBT5uWL6atp8diwrw/FXBScP/3iYl6wnb4UdkZqEtAZGaA5rqMHX2IzjOxOJPrOHFc5kajcmk3Ng40nWNjDkiFzcC9r4Y8bbuCT8vT2Xv26YjdJsYtKU3TyS8R6zY3bx+PRCkjcZQh/UT4Cw23DHSlr8YURWBqdfQc3Lhpb2wMjkU7gSsu5uoPSLPOKvl3x3+CqWFk6HNadxQFejo5E2HxbhB1Q2uJMw1w2+bkSZirb/cG6sMJrwjs6h5eIe/p29GLCy3xeNdfvABz0Nu72UP6d+iEUc/p7rF40i7d+78R3RVKCOKKRxagzts528MOVZRps8HJwJudpnZNHaSQzftD9oNTK1rZt31o/DM95AZVcMBzoicZdGYR7RztLxTxOtWHi5ZTptj2SS+dbaoz4f+kayYyO9HkzltZSWZKPkKYy3VPMyAwzoBAJpt3UyCy+5nkuGb0G5oZyJYXu5wNaAQ/NxwaabSVrtGJSgpXV3Q9nhJgONwJVbW4HC9XFf8nzTTFJW+oLS6Xg8lDHDKZ8fzoOFL5FhsPLrxrG8vXgGRYsaEF4f67QimlKXMNNWwV8m9SDM5m8uoCsqrtwEUifUUuWOxdDlHfAVv1qYR9nCOBLWJRK5pBTN4TjpZ2R3D6Z2gUOTJBo66Em2Eoxk7CEb0H3DMshKayZRDQSqZ2tnkLR2cH8ECgLhB/yHQ5JSkM3e8yz8eNR7JKs2OjUXb7XOID0IqZQLEr7AItRDOfcAEVV+8HhRC3Jxp0fhDVOpvljj8VnPkmlo662ZK3jxs98rWdQ+jdj1ap/a/EDx7a1k2C862TmxGMsBBynle5FuN7X/bxpfDE/mfFsz7R4rxu5vKnQfByHAZkUaAoesQzMFbdX2xWvJf8fAhvMmUD9FpXlOGGdaP+R1x0h8K2Ng88Cu1gaCzEjBU+Ak3+hkW0sy0dWOkKb5VlwdyROXPsksi4dmv5PXVk2laHET/rI9eM+dQGJxAwVGEx877VBt7XM8DTaGhDhqJpm5L+Nz7ttwCQUVlQOucJTfFM/yK/7MVSOup1OOwF7jCswnVN+E5uztezvY3igU1LgYOqZnokxvI8Vgps4bjakzOLFt6AZ0m4FIkwtj7yyCpVXJFK4NTcbA8dCQdKdJ1KREfDW1GJIS2XtFLH+6/EUutHXglF5ed+Tz+ftjyaoYeOrRvWXf5u0R/yJcOZxzXj9F4IwZQetEH7+Z9SaXh9Vj6N0mPowA9GhePupJ5f4t38KyMpzEZ4I7xBzA39KK6cO+J62YXT6eqZnB+flv4/IbUDyDN2nacVFUFKsFJT4Wb0o0VdPsvHLhY/RID081ngN0Ba0o6fNheW8d2R+Z+Nw2jr2XLOf1qvEkrXOGtEZ8MlypYaTGt7DcmUL7hngit4ZgQrCDKCq+MD92Efi+j7VMI2GVQO6rRk1MoHaUie9nrMctvfy9ejb5T9XjD/FkWCfCU5iCdUYzu13JJPzHHJR2a2OugwM+K68Mf5Ftv4vjo/Zi3t0ymtg1CVjaAseE6pIoXg2/VaFptIGzv7WRPySvYK3bwhObZlK0ZeAnFhjCAd1S18W+thi6pJdIYULrNg44Q+FUcTpNeBEoCAz5DrqLU7DGhFNxRTR3Xf4m82yduKWfpc44Hlwyj9z/WRWUGlDYPVaWvpbG+fZa1N6h+6XzH8Mv5aERoF4JfiSqEL2dpn5e6RzB42+eT9YvQ3jgngCjUEmztVMSlxPUW+eqUZF9pr8VZlPgUt1/xNY2GBB2K9JkBIOKL8pKa66Nxul+vj1xAw/HfkmiqvFqZwFbni4mlhBso1H5WDIdbHRl0b42kaiSbSEf+HZchKAjx8iVKdv5oHUUCSWhrQIpdhvpuU2kGZyAlVc3TSJvvws5Mo8DZ0Uw6bKtLIysZJkzkl3b0yms2x5SHwBfuETa+zaBCoMBNSmRmtFWzkzexuvl48j6aGdQgmjWr73Mv/MWvj95BcMsNfws4TP+59wVGOcqGHuvuMu8Hsq98aQY2khX3bRqKq87svnt+gsYdm9DnybVgTBkA7q/dDeOmsnUj1GJHOQpre0r7awfl0F2WCPnZ+/g44VFjE2q5fdJLzDCZKBLeljak8jPPruS4Q8Hb44Ota6Ze5ZfTtKcZxhr7j4U1I+FS/o44IMX26bz7pvTyP3Hrm+srTpU1F4/Av8RU/g4kzRMbQrqEf1Y7miJsbCTwvhGok1O5sZs41J7a+/JzkuF18JD9Wew6YVi4p8OQTAXgt3fs7Nk/CNcv/1G0pb2nFIbaqhQY6LpyJdcGrGZS3bfQtanof1dSKeT6ppYmguMJKoQHtPN3m9HMmJ8Ja9lPkW2QaXUI7l3xyXkLvIcc0RrsFC7FVzSyHdnf8Ybu2aT7HQjHQ4wmvDlpVB+pZWHL3yeam8sH2+ZdPw89a+Jv3Q3Bd8TrIjL4t0zZtNzfTsFsU1k2loZb99HguqgxpdASVcmNa4ompxh7C1PInWpoPCDbfh6ek5eyCly0oAuhEgHXgQSCQxJe1JK+agQ4n7ge8DBVIp7e+9gFDSER+DQTLikG19zOxvlCjy4AEEq2WSIfPbIUmrZx8Ebt+YxkjgxsDuPJH/axNoFOVweVs+fkjbwp6RAe6gPha3VXXznNo3avTUYW37L3iB6+OobGP57Mwv4Li+c8xSjTc7eRpW+NPg9PLm7iEdvrUKp/RzVtQzpywjZ9jgeUgVvUwfn3lvHtrr3cbV8SrpMCprHd25expzw7cQqbswC1BMsW1vr58d3dPBFk5+7hcq4yzNxnPNtNv1qB11rFmP0vcWefnqcCDUhnrDELrwotO2KIWx7CdsG6Xd6LLqn5TFs3H4MDQaqfvU8BxztILWQeUifD0OjkRbNBnjYOPElmBh4r0uT/L0skV/f0oJa/SQVTndIt0fWex4+mzOMe+M2Y7zNxz/Gz8ZyIANXso8zUlfR+Zsl3PKokfauBrLbu4DM4HnIQFaZ/Y0m7G9AG+BISmRT9mj8NgMGhwd1fwP+hkYMtFJA4OYzwb6SO5Uaug/4qZSyRAgRDmwUQnzS+97DUsoHg+x0iOSVknuGX8asxArsNSbSGEWEiMYnvaxjGTEyEYAM8skUhUEr17+znA8+ncrwb9UyzXY4g6DElcGv1s0iwdBNQU8bHhxB9/BVVjH8125utNzEH6YupsDY2Dtz4uHLlMs/+Ak5jxxgXFMc9m5Cvj2OR3eCytTYGi77VQwlmfk8+uRcDjz8u6B5rLxqNMuSZ1A7w4wrzQsnuLGJv70T/1wHYcZs0pY6+OjBRxn1+x1EUE0MWSHbHq7RGQyL38cfas4nca1EtnWQP0i/02PhtSlEmZwYDJBw47kU/caHu6MlpB6R5VDizGKCeTs2YUJDw6F5+OH+iyh/PImxVRsIc1vxEdrtYa5o5N39I7kqcj0/it7Fjy4ITPfgkj521Xr43jXzGbm4ALl6C2s9S4gmOiQeB/HVNyDqGw4F2cG4gj5pQJdS1gF1vf87hBA7gdRQi0Egk4DFsB6VTLaDCOwAgzBik+G46f+9905Gzl2reeuueN6ib171MCqAwJk1VB6++gbyb2jgGbKB7KPeLyAwquzgzhuM7XEs/BZBdrKX0ZFGwr3l/HnCudgInod/RxmGHZCx7Ot8KjBZmU1aBmV7WEr2sbk6DW+HmWFbW/ALK+beYSXfxH6RKhgVP8mJBszZqcD+kHvEPreON3vOYdn3ivjf7LdZ78zhse1nkvCylYR31sEgbQ9f9QGSfprDVX/+Lk+NfpGk3ra5n+y/hF3vFZD2qQO5PjCyOZi/06HE12pDF0JkAWOBtcB04DYhxPXABgK1+KO6jIUQC4GFAJagZFqCU3bjoJ1IYminmWr2UCerCCeaAkZhFEenp+kewfdIWdrMX1Iuwn/Re6hoKGud/+e2h7+5hez5gQ6tr9bABnu/GLIyqD/Lz98Sl7HabcJda0dzu0PvofmJeHUN8lX4ZW97SybbjlpsMLaHv3wvSZcc9gjQTCrNh/LNh8pxGwqEPMX5HYQQYcAK4LdSyjeFEIlAM4F29QeAZCnlTSdaR4SIkZPFwG7w7JM+NrKcbIaRIFJxSxem3vavPZTixsUIMQGAtXIZnbL1qJ5F3UP3OMhS+cZGKeWEI9ehe+geofb4uhzL41icUv6IEMIILAZellK+CSClbJBS+qWUGvAU9N7pIYRoUmMrq0kigwQRaPUxCwtCCIQIdEB1cvw5y3UP3UP30D2+aY9QctIauhBCAC8ArVLKO454Pbm3fR0hxJ3AZCnlVSdZlwMYyG3gswhc2R45G72RwP0lABIIzM/USeDqIVNK2bcRPODRBHT3LqN7/N/14FguuofuEWKPUyXuRB7HREp5wgcwg0CzylZgc+/jAuBfwLbe1/9DoMnlZOvacLJlguFxKuX010X30D10D92jvx5f0/lrl3EqWS4r4ZgjXIKacx5Mj8BFhe6he+geusfQ8gg1gzwGU0dHR0cnVAx2QH9yCJUzGC66x9cvQ/f4+ssMFN3j65cxVDz6cMppizo6Ojo6Qxu9yUVHR0fnNGHQAroQ4jwhxG4hRIUQ4u4grTNdCPGZEGKHEKJUCPHj3tfvF0LUCCE29z4u0D10D91D9xioy1DxOC6hTr3pbdJRgT1ADmACtgDDg7DeZGBc7//hQBkwHLgf+JnuoXvoHrpHsFyGiseJHoNVQ58EVEgp90opPcBrwMUDXamUsk5KWdL7vwM42cRhuofuoXvoHv11GSoex2WwAnoqfUdnHSDIMzaKvhOHQWDisK1CiGeF6J2mUffQPXQP3aP/LkPF47icFp2iIjBx2GLgDillJ/A4kAuMITD17190D91D99A9hrrLQD0GK6DXAOlHPE/rfW3AiK83cZjuoXvoHrpHf12GisfxCUaD/skeBOZd30vgbg0HOxNGBGG9gsDt8R75yuvJR/x/J/Ca7qF76B66x0BchorHCdcTDJlTFL6AQM/tHuAXQVrn1544TPfQPXQP3aO/LkPF43gPfaSojo6OzmnCadEpqqOjo6OjB3QdHR2d0wY9oOvo6OicJugBXUdHR+c0QQ/oOjo6OqcJekDX0dHROU3QA7qOjo7OaYIe0HV0dHROE/4/AYSv7DTJ46UAAAAASUVORK5CYII=","text/plain":["<Figure size 432x288 with 10 Axes>"]},"metadata":{"needs_background":"light"},"output_type":"display_data"},{"data":{"image/png":"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","text/plain":["<Figure size 432x288 with 10 Axes>"]},"metadata":{"needs_background":"light"},"output_type":"display_data"}],"source":["aae_encoder.eval()\n","aae_decoder.eval()\n","predictions = []\n","plots = 10\n","for i, data in enumerate(test_dataset):\n"," if i == plots:\n"," break\n"," pred = aae_decoder(aae_encoder(data[0].to(device).unsqueeze(0).view(1, 784)))\n"," predictions.append(pred.view(1, 28, 28).detach().cpu())\n","plotn(plots, test_dataset)\n","plotn(plots, predictions)"]},{"cell_type":"markdown","metadata":{},"source":["## Additional Materials\n","\n","* [Blog post on NeuroHive](https://neurohive.io/ru/osnovy-data-science/variacionnyj-avtojenkoder-vae/)\n","* [Variational Autoencoders Explained](https://kvfrans.com/variational-autoencoders-explained/)"]}],"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.7.12"}},"nbformat":4,"nbformat_minor":4}