Skip to content

Instantly share code, notes, and snippets.

@jcreinhold
Created September 20, 2020 18:09
Show Gist options
  • Save jcreinhold/3ad5bdbf35cb34f9d71a60ec7d1e9575 to your computer and use it in GitHub Desktop.
Save jcreinhold/3ad5bdbf35cb34f9d71a60ec7d1e9575 to your computer and use it in GitHub Desktop.
Fitting a toy distribution with a variety of GANs
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Fitting a toy distribution with a GAN\n",
"\n",
"Implementations of the vanilla GAN [1], least-squares GAN [2], Wasserstein GAN [3] (GP version [4]), and the Hinge-loss GAN [5]\n",
"\n",
" [1] Goodfellow, Ian, et al. \"Generative adversarial nets.\" \n",
" Advances in neural information processing systems. 2014.\n",
" [2] Mao, Xudong, et al. \"Least squares generative adversarial networks.\" \n",
" Proceedings of the IEEE international conference on computer vision. 2017.\n",
" [3] Arjovsky, Martin, Soumith Chintala, and Léon Bottou. \"Wasserstein \n",
" generative adversarial networks.\" Proceedings of the 34th International \n",
" Conference on Machine Learning-Volume 70. 2017.\n",
" [4] Gulrajani, Ishaan, et al. \"Improved training of Wasserstein GANs.\" \n",
" Advances in neural information processing systems. 2017.\n",
" [5] Lim, Jae Hyun, and Jong Chul Ye. \"Geometric GAN.\"\n",
" arXiv preprint arXiv:1705.02894 (2017).\n",
" [6] Zhang, Han, et al. \"Self-attention generative adversarial networks.\" \n",
" International Conference on Machine Learning. PMLR, 2019."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Setup notebook"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"from typing import *\n",
"\n",
"from functools import partial\n",
"from glob import glob\n",
"import math\n",
"import os\n",
"import random\n",
"import sys\n",
"\n",
"gpu_id = 0\n",
"os.environ[\"CUDA_VISIBLE_DEVICES\"] = f'{gpu_id}'\n",
"\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import seaborn as sns\n",
"sns.set_style('white')\n",
"\n",
"import torch\n",
"from torch import nn\n",
"import torch.distributions as D\n",
"import torch.nn.functional as F\n",
"from torch.utils.data import TensorDataset, DataLoader"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Report versions"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"numpy version: 1.19.1\n",
"matplotlib version: 3.3.1\n",
"pytorch version: 1.6.0\n"
]
}
],
"source": [
"print('numpy version: {}'.format(np.__version__))\n",
"from matplotlib import __version__ as mplver\n",
"print('matplotlib version: {}'.format(mplver))\n",
"print(f'pytorch version: {torch.__version__}')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"python version: 3.8.5\n"
]
}
],
"source": [
"pv = sys.version_info\n",
"print('python version: {}.{}.{}'.format(pv.major, pv.minor, pv.micro))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Check GPU(s)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Sun Sep 20 14:02:12 2020 \n",
"+-----------------------------------------------------------------------------+\n",
"| NVIDIA-SMI 430.40 Driver Version: 430.40 CUDA Version: 10.1 |\n",
"|-------------------------------+----------------------+----------------------+\n"
]
}
],
"source": [
"!nvidia-smi | head -n 4"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"assert torch.cuda.is_available()\n",
"device = torch.device('cuda')\n",
"torch.backends.cudnn.benchmark = True"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Set seeds for better reproducibility. See [this note](https://pytorch.org/docs/stable/notes/faq.html#my-data-loader-workers-return-identical-random-numbers) before using multiprocessing."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"seed = 9\n",
"random.seed(seed)\n",
"np.random.seed(seed)\n",
"torch.manual_seed(seed)\n",
"torch.cuda.manual_seed(seed)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Create dataset"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"loc = torch.tensor([0.,0.])\n",
"scale = torch.tensor([1.,1.])\n",
"base_dist = D.Normal(loc, scale)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"mix_comp = D.Bernoulli(torch.tensor([0.5]))\n",
"g1 = D.MultivariateNormal(torch.tensor([-5.,-3.]), \n",
" torch.tensor([[2., 0.5],[0.5, 3.]]))\n",
"g2 = D.MultivariateNormal(torch.tensor([ 4., 4.]),\n",
" torch.tensor([[1.,-0.5],[-0.5,2.]]))\n",
"\n",
"def p_data_mix(n_samp:int):\n",
" mix_comps = mix_comp.sample((n_samp,))\n",
" mc0 = (mix_comps < 1)[:,0]\n",
" mc1 = (mix_comps > 0)[:,0]\n",
" samples = torch.zeros(n_samp, 2)\n",
" samples[mc0,:] = g1.sample((mc0.sum(),))\n",
" samples[mc1,:] = g2.sample((mc1.sum(),))\n",
" return samples\n",
"\n",
"def p_data_single(n_samp:int):\n",
" return g2.sample((n_samp,))\n",
"\n",
"sample_p_data = p_data_mix"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"n_samples = 10000\n",
"x_real = sample_p_data(n_samples)\n",
"xr, yr = x_real[:,0], x_real[:,1]"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAbEAAAG4CAYAAADL39l5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/d3fzzAAAACXBIWXMAAAsTAAALEwEAmpwYAAB0/UlEQVR4nO39e5gcV33nj7/OqUt3z/0izYysmy1btkEY22AnAYyVCGQWfMHLzfE3zi/22gvEZv2YZJOFwEMSE27Js3nCkoTHGHZhs6w3IRgbECzGBuysTZyY2MhcDL7JlmTNSJqR5tbXqjq/P6qrp+9drZmRpmc+r+eRZqb706dOVXWfd5+qz+d9lDHGIAiCIAgdiD7VHRAEQRCEE0VETBAEQehYRMQEQRCEjkVETBAEQehYRMQEQRCEjkVETBAEQehYRMSEVc2BAwc455xz8DwPgJtuuomvfe1rS9L2Y489xpve9KbS37t27eKRRx5ZkrYBLr/8ch599NEla08QViP2qe6AsDq58MILS79nMhlc18WyLAD+9E//lKuuuuqU9Ovzn/98rLhzzjmH++67j61btzaMueiii/jOd76zJP36wAc+wOjoKO9///tLj+3Zs2dJ2haE1YyImLAsPP7446Xfd+3axZ/92Z/x2te+tibO8zxsu/Pehp3ab0FYbcjlROGk8uijj3LppZfyuc99jte97nV88IMf5O677+baa6+tiDvnnHN44YUXAMjn83zqU5/i13/913nta1/LRz7yEbLZbN32fd/nU5/6FL/6q7/KG97wBh588MGK53/7t3+br3zlKwC88MILXHfddbz61a/mV3/1V7ntttsA+K3f+i0A3vrWt3LhhRfyrW99q26/o8fKefLJJ3nLW97CxRdfzAc/+EFyuRxA0338+7//e77xjW/whS98gQsvvJD3vve9QOXlyXw+z8c+9jEuueQSLrnkEj72sY+Rz+crjul//+//nde85jVccsklfPWrX41/UgShg5GvksJJ5+jRo0xPT/P973+fIAj41re+1TT+L/7iL9i/fz/33HMPtm3zn//zf+Zv/uZv+P3f//2a2H/4h3/g+9//Pvfccw+pVIr/9J/+U8N2P/3pT/O6172O//k//yeFQoEnn3wSgC9/+cucc8453HvvvaXLiY8++mhNv3/84x/XtBmJUSqV4r3vfS9/+7d/W3GJsB7XXHMNjz/+eM3lxHI++9nP8uMf/5h7770XpRQ333wzf/u3f1sS3qNHjzI7O8tDDz3EI488wq233sob3/hG+vv7m25bEDodmYkJJx2tNbfeeiuu65JMJpvGGmP4yle+wh/90R8xMDBAT08P73nPexreL/r2t7/N7/zO77BhwwYGBgZ4z3ve07Bt27Z56aWXOHz4MIlEgosuumjR/f6t3/qt0rZ/93d/d8nua33jG9/glltuYXh4mKGhIW655Ra+/vWvV+zLLbfcguM47Ny5k66uLp5//vkl2bYgrGRkJiacdAYHB0kkErFip6amyGQyvO1tbys9ZowhCIK68YcPH2bDhg2lv0877bSGbf/BH/wBn/70p3nHO95Bf38/N9xwA+94xzsW1e/qbR8+fLhpfFwOHz5csS/VbQ8MDFTco0ulUqTT6SXZtiCsZETEhJOOUqri71QqVXGP68iRI6XfBwcHSSaT7Nmzh9HR0ZZtr1+/nkOHDpX+Lv+9Xuyf/dmfAWG6/A033MDFF1/cMCOxut/1KN/eSy+9xMjICNB8H+O0PTIywksvvcT27dtL24naFoS1jFxOFE455557Lk8//TQ///nPyeVyfOYznyk9p7Xmne98Jx//+MeZnJwEYGJign/6p3+q29ab3/xm/u7v/o7x8XGmp6f53Oc+13C73/72txkfHwegv78fpRRahx+JdevWsX///rb35X//7//N+Pg4x48f54477uAtb3lLy30EGB4e5sCBAw3bvfzyy/nsZz/L1NQUU1NT/M3f/A1XXnll2/0ThNWGiJhwyjnjjDO45ZZbuP7667nssst49atfXfH8H/zBH7B161be9a538apXvYrrr7++4f2ed73rXVxyySW89a1v5d//+3/PZZdd1nC7Tz75JO985zu58MIL+d3f/V0+9KEPsXnzZgDe97738YEPfICLLrqoZeJJOVdccQX/4T/8B974xjeyefNmfvd3fzfWPr7jHe/gmWee4aKLLuLmm2+uaffmm2/mFa94BVdddRVXXXUVO3bsqBsnCGsNJYtiCoIgCJ2KzMQEQRCEjkVETBAEQehYRMQEQRCEjkVETBAEQehYRMQEQRCEjkVETBAEQehYRMQEQRCEjkVspwRBWHam03lmc17s+N6ETX+Xu4w9ElYLImKCICw7szmPh355NHb8pWevExETYiGXEwVB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VymFpUMR8YPKdttxCqkObafPJbGm9bFol+U8doIgrFxExOrQrpVRnDFSKYUmnk9i+YAc/b0UlC7rqVDM2hEO3SK0nT6XC3v091JRblIi4iUIqx8RsZPIiVwqWxH9aKvt5evHcvRBEITORhI7BEEQhI5FREwQBEHoWETEBEEQhI5FREwQBEHoWETE6iB5AYIgCJ2BiFgdonTxWLF0XjZcu/snCIKwUpEU+waU1xs1c4LoNAGLiOt00an7JwjC2kBErAmNrJVW0+AeifVq3T9BEFY3ImIxaOfyWyey2vdPEITVi9wTEwRBEDoWETFBEAShYxEREwRBEDoWETFBEAShYxEREwRBEDoWETFBEAShYxEREwRBEDqWFV0ndvDgQd72tred6m4IgiCcEgYHB/nCF74QO3Ytoky0RrwgCIIgdBhyOVEQBEHoWETEBEEQhI5FREwQBEHoWETEBEEQhI5FREwQBEHoWETEBEEQhI5lRdeJLQXf/va3+eu//mueffZZvvKVr3DeeeeVnrvjjjv4x3/8R7TWfPjDH+b1r399zeuPHz/O+9//fg4ePMjGjRv5q7/6K/r7+5elr7fddhvPP/88ALOzs/T29nLvvffWxO3atYvu7m601liWxd13370s/SnnM5/5DP/wD//A0NAQAL/3e7/Hzp07a+IeeughPvaxjxEEAe985zt597vfvex9A/jUpz7F97//fRzHYcuWLXziE5+gr6+vJu5kHrtWx8IYw8c+9jEefPBBkskkn/zkJ9mxY8ey9aecQ4cO8Yd/+IccPXoUrTXvete7+J3f+Z2KmEcffZSbb76ZTZs2AbB7927e9773nZT+tTpPp/LYPffcc7z//e8v/b1//35uvfVWrr/++tJjp/LYrTnMKueZZ54xzz77rLnuuuvM3r17S48//fTT5sorrzS5XM68+OKL5g1veIPxPK/m9Z/61KfMHXfcYYwx5o477jB//ud/flL6/YlPfMJ85jOfqfvcb/zGb5jJycmT0o+I//bf/pv5/Oc/3zTG8zzzhje8wbz44osml8uZK6+80jz99NMnpX//9E//ZAqFgjHGmD//8z9veJ5O1rGLcyx+8IMfmBtvvNEEQWAef/xx8453vGPZ+xUxMTFhfvKTnxhjjJmdnTWXXXZZTf/++Z//2bz73e8+aX0qp9V5OpXHrhzP88xrX/tac+DAgYrHT+WxW2us+suJZ555Jtu2bat5/IEHHuDyyy/HdV02b97M1q1b2bt3b924q6++GoCrr76a+++/f7m7jDGGb3/721xxxRXLvq2lZO/evWzdupXNmzfjui6XX345DzzwwEnZ9iWXXIJthxcWLrjgAsbHx0/KdhsR51hE7y2lFBdccAEzMzMcPnz4pPRvZGSkNHPp6elh27ZtTExMnJRtLwWn8tiV88Mf/pDNmzezcePGk75tIWTVi1gjJiYmGBsbK/09Ojpa90M8OTnJyMgIEH7wp6amlr1vjz32GMPDw5x++ukNY2688Ube9ra38fd///fL3p+IL3/5y1x55ZV88IMfZHp6uub5uMd0ufnqV7/KpZde2vD5k3Hs4hyL6pixsbFTcrwOHDjAz3/+c84///ya55544gmuuuoqbrrpJp5++umT2q9m52mlHLs9e/Y0/LJ5Ko/dWmJV3BO7/vrrOXr0aM3jt912G2984xvrvsbUcdtSSi1536qJ09dvfvObTWdhd911F6Ojo0xOTnLDDTewbds2Lr744mXt27XXXsvNN9+MUopPf/rTfPKTn+QTn/hERdxyH9M4x+6zn/0slmVx1VVX1W1juY5dNXGOxal6D5YzPz/Prbfeyh/90R/R09NT8dyOHTv43ve+R3d3Nw8++CC33HIL991330npV6vztBKOXT6f53vf+x6///u/X/PcqTx2a41VIWJf/OIX237N2NhYxSWniYmJ0oyrnOHhYQ4fPszIyAiHDx8uJTacKK366nke3/3ud5smHIyOjpb6tnv3bvbu3bskA3Hc4/jOd76T9773vTWPxz2mJ0qr/n3ta1/jBz/4AV/84hcbDmjLdeyqiXMsqmPGx8eX9Hi1olAocOutt3LllVdy2WWX1TxfLmo7d+7kT//0T5mamlr0ZyAOrc7TqT52ECbu7Nixg3Xr1tU8dyqP3VpjzV5O3LVrF3v27CGfz7N//3727dvHK1/5yrpx99xzDwD33HMPb3jDG5a1X4888gjbtm2ruFRSTjqdZm5urvT7ww8/zPbt25e1T0DF/Yb777+/7jbPO+889u3bx/79+8nn8+zZs4ddu3Yte98gHFDuvPNOPvvZz5JKperGnMxjF+dYRO8tYwxPPPEEvb29J20gNsbwoQ99iG3btnHDDTfUjTly5EhpxrN3716CIDgpTulxztOpPHYRe/bs4fLLL6/73Kk6dmuRVTETa8Z3v/tdPvrRjzI1NcV73vMeXvayl/GFL3yB7du38+Y3v5m3vOUtWJbFRz7yESzLAuBDH/oQv/mbv8l5553Hu9/9bm677Tb+8R//kQ0bNvDpT396Wfv7rW99q+aDMTExwYc//GHuvPNOJicnueWWWwDwfZ8rrrii6f2fpeIv/uIveOqppwDYuHEjt99+e03fbNvmIx/5CDfddBO+7/P2t7/9pAgswEc/+lHy+XxpQD7//PO5/fbbT9mxa3Qs7rrrLgCuvfZadu7cyYMPPsju3btJpVJ8/OMfX5a+1ONHP/oR9957L2effTZvfetbgbBs4qWXXir17zvf+Q533XUXlmWRTCb5y7/8y5Nyya7ReVopxw4gk8nwyCOPlD4HQEX/TtWxW4vIUiyCIAhCx7JmLycKgiAInY+ImCAIgtCxiIgJgiAIHYuImCAIgtCxiIgJgiAIHYuImCAIgtCxiIgJgiAIHcv/Hxi+tDmLo/6tAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x432 with 3 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"g = sns.jointplot(x=xr, y=yr, kind=\"hex\");\n",
"g.ax_marg_x.set_title('True distribution');\n",
"plt.savefig('true_dist.svg')"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"xlim = g.ax_joint.get_xlim()\n",
"ylim = g.ax_joint.get_ylim()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Define a generator and a discriminator"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"def G_layer_BN(in_c:int, out_c:int):\n",
" return nn.Sequential(\n",
" nn.Linear(in_c, out_c, bias=False),\n",
" nn.BatchNorm1d(out_c),\n",
" nn.LeakyReLU(inplace=True))\n",
"\n",
"def G_layer_SN(in_c:int, out_c:int):\n",
" return nn.Sequential(\n",
" nn.utils.spectral_norm(nn.Linear(in_c, out_c)),\n",
" nn.LeakyReLU(inplace=True))\n",
"\n",
"class Generator(nn.Sequential):\n",
" _layer = staticmethod(G_layer_SN)\n",
" def __init__(self, in_dim:int, out_dim:int, n_layers:int=5, \n",
" hidden_dim:int=128, dropout_rate:float=0.):\n",
" super().__init__()\n",
" self.add_module('h1', self._layer(in_dim, hidden_dim))\n",
" for i in range(2, n_layers):\n",
" self.add_module(f'h{i}', self._layer(hidden_dim, hidden_dim))\n",
" if dropout_rate > 0.:\n",
" self.add_module(f'dropout', nn.Dropout(dropout_rate))\n",
" self.add_module(f'h{n_layers}', nn.Linear(hidden_dim, out_dim))\n",
"\n",
"def D_layer_BN(in_c:int, out_c:int):\n",
" return nn.Sequential(\n",
" nn.Linear(in_c, out_c, bias=False),\n",
" nn.BatchNorm1d(out_c),\n",
" nn.LeakyReLU(0.2, inplace=True))\n",
"\n",
"def D_layer_SN(in_c:int, out_c:int):\n",
" return nn.Sequential(\n",
" nn.utils.spectral_norm(nn.Linear(in_c, out_c)),\n",
" nn.LeakyReLU(0.1, inplace=True))\n",
"\n",
"class Discriminator(Generator):\n",
" _layer = staticmethod(D_layer_SN)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"hidden_dim = 128\n",
"n_layers = 4\n",
"dropout_rate = 0.\n",
"g_args = (2, 2, n_layers, hidden_dim, dropout_rate)\n",
"d_args = (2, 1, n_layers, hidden_dim, dropout_rate)\n",
"generator = Generator(*g_args).to(device)\n",
"discriminator = Discriminator(*d_args).to(device)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"D_final_activation = None\n",
"if D_final_activation == 'tanh':\n",
" discriminator.add_module('tanh', nn.Tanh())\n",
"elif D_final_activation == 'sigmoid':\n",
" discriminator.add_module('sigmoid', nn.Sigmoid())"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"def num_params(model):\n",
" return sum(p.numel() for p in model.parameters() if p.requires_grad)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Number of trainable parameters in generator: 33666\n",
"Number of trainable parameters in discriminator: 33537\n"
]
}
],
"source": [
"print(f'Number of trainable parameters in generator: {num_params(generator)}')\n",
"print(f'Number of trainable parameters in discriminator: {num_params(discriminator)}')"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"def weights_init(m):\n",
" name = m.__class__.__name__\n",
" if 'Linear' in name or 'BatchNorm' in name:\n",
" nn.init.normal_(m.weight.data, 0., 0.02)\n",
" if hasattr(m, 'bias'):\n",
" if m.bias is not None:\n",
" nn.init.constant_(m.bias.data, 0.)\n",
"\n",
"generator.apply(weights_init);\n",
"discriminator.apply(weights_init);"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"def gradient_penalty(y, x):\n",
" weight = torch.ones_like(y)\n",
" grad = torch.autograd.grad(outputs=y,\n",
" inputs=x,\n",
" grad_outputs=weight,\n",
" retain_graph=True,\n",
" create_graph=True,\n",
" only_inputs=True)[0]\n",
" return torch.mean((grad.norm(dim=1) - 1) ** 2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Train the generator and discriminator"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"n_epochs = 5000\n",
"n_samples_per_epoch = n_samples\n",
"print_loss_rate = 500\n",
"batch_size = n_samples_per_epoch\n",
"use_minibatches = batch_size != n_samples_per_epoch"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"x_real = x_real.to(device)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"gan_type = 'hinge'\n",
"betas = (0.,0.999) # parameters from self-attention GAN [6]\n",
"G_lr = 1e-4\n",
"D_lr = 4e-4\n",
"D_steps = 1\n",
"use_gp = False\n",
"gp_weight = 10.\n",
"G_opt = torch.optim.Adam(generator.parameters(), lr=G_lr, betas=betas)\n",
"D_opt = torch.optim.Adam(discriminator.parameters(), lr=D_lr, betas=betas)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"real_label = 1.\n",
"fake_label = 0.\n",
"real_labels = real_label * torch.ones((n_samples_per_epoch, 1))\n",
"fake_labels = fake_label * torch.ones((n_samples_per_epoch, 1))\n",
"real_labels = real_labels.to(device)\n",
"fake_labels = fake_labels.to(device)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [],
"source": [
"if use_minibatches:\n",
" MyDataLoader = partial(DataLoader, batch_size=batch_size, shuffle=True)\n",
" x_real_dataset = TensorDataset(x_real)\n",
" x_real_dataloader = MyDataLoader(x_real_dataset)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"def reset_grad():\n",
" D_opt.zero_grad()\n",
" G_opt.zero_grad()"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"def train_discriminator(x_real, z):\n",
" for _ in range(D_steps):\n",
" reset_grad()\n",
" \n",
" # discriminate real samples\n",
" D_real = discriminator(x_real)\n",
" if gan_type == 'vanilla':\n",
" loss_real = F.binary_cross_entropy_with_logits(D_real, real_labels)\n",
" D_x = torch.sigmoid(D_real).mean().item()\n",
" elif gan_type == 'lsgan':\n",
" loss_real = torch.mean((D_real - real_label)**2)\n",
" D_x = D_real.mean().item()\n",
" elif gan_type == 'wgan-gp':\n",
" loss_real = D_real.mean()\n",
" D_x = loss_real.item()\n",
" elif gan_type == 'hinge':\n",
" loss_real = F.relu(1. - D_real).mean()\n",
" D_x = loss_real.item()\n",
" else:\n",
" raise NotImplementedError(f'{gan_type} not implemented.')\n",
"\n",
" # discriminate fake samples\n",
" with torch.no_grad():\n",
" x_fake = generator(z)\n",
" D_fake = discriminator(x_fake)\n",
" if gan_type == 'vanilla':\n",
" loss_fake = F.binary_cross_entropy_with_logits(D_fake, fake_labels)\n",
" D_G_z_1 = torch.sigmoid(D_fake).mean().item()\n",
" elif gan_type == 'lsgan':\n",
" loss_fake = torch.mean((D_fake - fake_label)**2)\n",
" D_G_z_1 = D_fake.mean().item()\n",
" elif gan_type == 'wgan-gp':\n",
" loss_fake = D_fake.mean()\n",
" D_G_z_1 = loss_fake.item()\n",
" elif gan_type == 'hinge':\n",
" loss_fake = F.relu(1. + D_fake).mean()\n",
" D_G_z_1 = loss_fake.item()\n",
" else:\n",
" raise NotImplementedError(f'{gan_type} not implemented.')\n",
" \n",
" if use_gp or gan_type == 'wgan-gp':\n",
" eps = torch.rand(batch_size,1).to(device)\n",
" x_hat = (eps*x_real + (1.-eps)*x_fake)\n",
" x_hat.requires_grad_(True)\n",
" D_x_hat = discriminator(x_hat)\n",
" gp = gradient_penalty(D_x_hat, x_hat)\n",
"\n",
" if gan_type != 'wgan-gp':\n",
" D_loss = 0.5 * (loss_fake + loss_real)\n",
" if use_gp:\n",
" D_loss += gp_weight * gp\n",
" else:\n",
" D_loss = loss_fake - loss_real + gp_weight * gp\n",
"\n",
" D_loss.backward()\n",
" D_opt.step()\n",
" \n",
" return D_loss.item(), D_x, D_G_z_1\n",
"\n",
"def train_generator(z):\n",
" reset_grad()\n",
" x_fake = generator(z)\n",
" D_fake = discriminator(x_fake)\n",
" if gan_type == 'vanilla':\n",
" G_loss = F.binary_cross_entropy_with_logits(D_fake, real_labels)\n",
" D_G_z_2 = torch.sigmoid(D_fake).mean().item()\n",
" elif gan_type == 'lsgan':\n",
" G_loss = 0.5 * torch.mean(D_fake**2)\n",
" D_G_z_2 = D_fake.mean().item()\n",
" elif gan_type == 'wgan-gp':\n",
" G_loss = -D_fake.mean()\n",
" D_G_z_2 = G_loss.item()\n",
" elif gan_type == 'hinge':\n",
" G_loss = -D_fake.mean()\n",
" D_G_z_2 = G_loss.item()\n",
" else:\n",
" raise NotImplementedError(f'{gan_type} not implemented.')\n",
"\n",
" G_loss.backward()\n",
" G_opt.step()\n",
" \n",
" return G_loss.item(), D_G_z_2"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 500: D_loss=0.3533, G_loss=1.0013, D(x): 0.528, D(G(z)): 0.179/1.001\n",
"Epoch 1000: D_loss=0.4411, G_loss=0.9532, D(x): 0.762, D(G(z)): 0.120/0.953\n",
"Epoch 1500: D_loss=0.4974, G_loss=0.9421, D(x): 0.969, D(G(z)): 0.026/0.942\n",
"Epoch 2000: D_loss=0.4967, G_loss=0.9665, D(x): 0.989, D(G(z)): 0.004/0.967\n",
"Epoch 2500: D_loss=0.4981, G_loss=0.9756, D(x): 0.995, D(G(z)): 0.002/0.976\n",
"Epoch 3000: D_loss=0.4981, G_loss=0.9996, D(x): 0.991, D(G(z)): 0.006/1.000\n",
"Epoch 3500: D_loss=0.4980, G_loss=0.9862, D(x): 0.995, D(G(z)): 0.001/0.986\n",
"Epoch 4000: D_loss=0.4985, G_loss=0.9906, D(x): 0.996, D(G(z)): 0.001/0.991\n",
"Epoch 4500: D_loss=0.4981, G_loss=1.0054, D(x): 0.990, D(G(z)): 0.006/1.005\n",
"Epoch 5000: D_loss=0.4988, G_loss=1.0052, D(x): 0.990, D(G(z)): 0.007/1.005\n"
]
}
],
"source": [
"for i in range(1, n_epochs+1):\n",
" z_full = base_dist.sample((n_samples_per_epoch,)).to(device)\n",
" if use_minibatches:\n",
" z_dataset = TensorDataset(z_full)\n",
" z_loader = MyDataLoader(z_dataset)\n",
" \n",
" # train discriminator\n",
" generator.eval();\n",
" discriminator.train();\n",
" \n",
" if use_minibatches:\n",
" for x_r, z in zip(x_real_dataloader, z_loader):\n",
" x_r, z = x_r[0], z[0]\n",
" D_loss, D_x, D_G_z_1 = train_discriminator(x_r, z)\n",
" else:\n",
" D_loss, D_x, D_G_z_1 = train_discriminator(x_real, z_full)\n",
" \n",
" # train generator\n",
" generator.train();\n",
" discriminator.eval();\n",
" \n",
" if use_minibatches:\n",
" for z in z_loader:\n",
" z = z[0]\n",
" G_loss, D_G_z_2 = train_generator(z)\n",
" else:\n",
" G_loss, D_G_z_2 = train_generator(z_full)\n",
"\n",
" if i % print_loss_rate == 0:\n",
" print(f'Epoch {i}: D_loss={D_loss:0.4f}, G_loss={G_loss:0.4f}, '\n",
" f'D(x): {D_x:0.3f}, D(G(z)): {D_G_z_1:0.3f}/{D_G_z_2:0.3f}')"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [],
"source": [
"z = base_dist.sample((n_samples_per_epoch,)).to(device)\n",
"generator.eval()\n",
"with torch.no_grad():\n",
" x_fake = generator(z).detach().cpu().numpy()\n",
"xf, yf = x_fake[:,0], x_fake[:,1]"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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9uzZw8c+9jGGh4eb4s7l2HUbC2stH/nIR3j44YdJp9N8/OMfZ//+/evWn1qOHTvGH/zBH3Dq1Cm01vzWb/0Wv/u7v1sX853vfIf3vOc97Nq1C4CDBw/y3ve+95z0r9vrdD7H7plnnuH9739/9e8jR47wvve9j1tuuaV62/kcuy2H3eQ89dRT9umnn7bvfOc77aFDh6q3P/nkk/aGG26wxWLRPvfcc/YNb3iDDYKg6fGf+MQn7Gc/+1lrrbWf/exn7Z/92Z+dk35/7GMfs5/+9Kdb3vfrv/7rdnZ29pz0I+a//Jf/Yj//+c93jAmCwL7hDW+wzz33nC0Wi/aGG26wTz755Dnp3z/+4z/acrlsrbX2z/7sz9q+Tudq7JKMxbe+9S172223WWOM/cEPfmB/8zd/c937FTMzM2N//OMfW2utXVxctNdee21T//7pn/7Jvvvd7z5nfaql2+t0PseuliAI7K/92q/Z559/vu728zl2W41Nfzrx4osvZt++fU23P/TQQ1x33XX4vs/u3bvZu3cvhw4dahl34403AnDjjTfy4IMPrneXsdby1a9+leuvv37dj7WWHDp0iL1797J792583+e6667joYceOifHft3rXofrRicWrrzySo4fP35OjtuOJGMRv7eUUlx55ZUsLCxw4sSJc9K/ycnJ6splcHCQffv2MTMzc06OvRacz7Gr5dvf/ja7d+9m586d5/zYQsSmF7F2zMzMMD09Xf17amqq5Yd4dnaWyclJIPrgz83NrXvfvvvd7zIxMcGFF17YNua2227jbW97G3/913+97v2J+au/+ituuOEG/uiP/oj5+fmm+5OO6Xrzt3/7t1x99dVt7z8XY5dkLBpjpqenz8t4Pf/88/zsZz/jiiuuaLrv8ccf5y1veQvvete7ePLJJ89pvzq9Thtl7B544IG2XzbP59htJTbFNbFbbrmFU6dONd1+xx138MY3vrHlY2wLty2l1Jr3rZEkfb3//vs7rsLuvvtupqammJ2d5dZbb2Xfvn1cddVV69q3m2++mfe85z0opfjUpz7Fxz/+cT72sY/Vxa33mCYZu8985jM4jsNb3vKWlm2s19g1kmQsztd7sJbl5WXe97738cd//McMDg7W3bd//36++c1vMjAwwMMPP8ztt9/O17/+9XPSr26v00YYu1KpxDe/+U3+/b//9033nc+x22psChH74he/2PNjpqen6045zczMVFdctUxMTHDixAkmJyc5ceJENbHhbOnW1yAI+MY3vtEx4WBqaqrat4MHD3Lo0KE1mYiTjuM73vEOfu/3fq/p9qRjerZ069/f/d3f8a1vfYsvfvGLbSe09Rq7RpKMRWPM8ePH13S8ulEul3nf+97HDTfcwLXXXtt0f62oXXPNNfzH//gfmZubW/VnIAndXqfzPXYQJe7s37+fbdu2Nd13Psduq7FlTyceOHCABx54gFKpxJEjRzh8+DAvf/nLW8bde++9ANx777284Q1vWNd+PfbYY+zbt6/uVEktuVyOpaWl6u+PPvool1566br2Cai73vDggw+2PObll1/O4cOHOXLkCKVSiQceeIADBw6se98gmlDuuusuPvOZz5DJZFrGnMuxSzIW8XvLWsvjjz/O0NDQOZuIrbV84AMfYN++fdx6660tY06ePFld8Rw6dAhjzDlxSk/yOp3PsYt54IEHuO6661red77GbiuyKVZinfjGN77Bhz/8Yebm5vh3/+7f8ZKXvIQvfOELXHrppbz5zW/mN37jN3Achw996EM4jgPABz7wAX77t3+byy+/nHe/+93ccccd/M3f/A07duzgU5/61Lr29+///u+bPhgzMzN88IMf5K677mJ2dpbbb78dgDAMuf766zte/1kr/vzP/5wnnngCgJ07d3LnnXc29c11XT70oQ/xrne9izAMefvb335OBBbgwx/+MKVSqTohX3HFFdx5553nbezajcXdd98NwM0338w111zDww8/zMGDB8lkMnz0ox9dl7604nvf+x733Xcfl112GW9961uBqGzihRdeqPbva1/7GnfffTeO45BOp/nkJz95Tk7ZtXudNsrYAeTzeR577LHq5wCo69/5GrutiGzFIgiCIPQtW/Z0oiAIgtD/iIgJgiAIfYuImCAIgtC3iIgJgiAIfYuImCAIgtC3iIgJgiAIfYuImCAIgtC3/L+Uds3+PJKGqgAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x432 with 3 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAG4CAYAAAAQZHNbAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/d3fzzAAAACXBIWXMAAAsTAAALEwEAmpwYAAByQklEQVR4nO39ebSlVX3g/7/3foYz3flW1a2BqoJicEAEIhiNCXwtLI1h0MZMdGsHGmP7hbQLk+50oi5Xgh01yep0bLu/Dmi39uosfrYJkSjaoqiQgJJgwFIEZCqo8d6699YdzvgMe//+2M9zzrlDFQU1nVv381qLdeue85zzPOcAz6f23p/9+ShrrUUIIYToMfpUX4AQQgixHAlQQgghepIEKCGEED1JApQQQoieJAFKCCFET5IAJYQQoidJgBKnzMUXX8zu3btf8uvf9a538eUvfxmAv/u7v+Pf/Jt/c7wujSuvvJIHH3wQgE9+8pP8+3//74/be3/605/mgx/84HF7PyFOV/6pvgBx+tu+fTuTk5N4ntd+7P/+3//Lww8/3P79D/7gDxgbG+P973//SzrHNddcwzXXXPOCxx3tee66666XdB2LPfjgg/yH//AfuO+++9qPvfe97z0u7y3E6U4ClDgpPv3pT/MLv/ALp/oyXlCSJPi+/G8hRC+QKT5xyrzsZS/jueee40tf+hJf/epX+fznP8/FF1982BHG/fffzy//8i/zmte8hltvvZXuIih33HEH1113HQDWWj760Y/y+te/nte85jVcffXV/OxnPzvsebZv385nP/tZrr76ai666CKSJGH79u088MAD7fePoohbbrmFiy++mH/xL/4Fjz/++JLPkfuDP/gD/st/+S/U63V++7d/m4mJCS6++GIuvvhixsfHl0wZ3nPPPVx55ZVccsklvOtd7+Lpp59uP7d9+3Y+//nPc/XVV/Oa17yGW265hVardYzfvBArgwQoccr9xm/8BldffTU33ngjDz/8MJ/+9KeXHDM9Pc2/+3f/jltuuYUf/OAHbNmyhX/+539e9v3+4R/+gYceeohvfvObPPTQQ/zlX/4lQ0NDRzzPXXfdxWc/+1keeuihZUdQ99xzD7/8y7/MP/7jP3LVVVdx0003EcfxET9XuVzmtttuY926dTz88MM8/PDDjI2NLTjm2Wef5fd+7/f4wAc+wPe//30u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yCP09/dLgBJiFckz8xKzMEvP127kZFlYdNZmhWrJHpc8u9XpmKf4fN/nwx/+MO9+97tJ05R3vOMdnHvuudx+++0AXHfddVx++eXce++97Nixg1KpxEc/+tFjvnAhxMpSy9q1ewq07qSEF7O7UPdIqJHYdjPD0GPZBIzVRqvVs0E3p2wPbwK49tprueOOO071ZQghjpG1th2g8nJIR5qayxseelkVidUyjXckq/F+uLrCsRDilFBKUQ6glbguti8UcAqeYvncP7GaSIASQpwUWql2nbwXopSi4MuoabVbZUmLQgghVgoJUEIIIXqSBCghhBA9SQKUEEKIniQBSgghRE+SACWEEKInSYASQgjRkyRACSGE6EkSoIQQQvQkCVBCCCF6kgQoIYQQPUkClBBCiJ4kAUoIIURPkgAlhBCiJ0mAEkII0ZMkQAkhhOhJEqCEEEL0JAlQQgghepIEKCGEED1JApQQQoieJAFKCCFET5IAJYQQoidJgBJCCNGTJEAJIYToSRKghBBC9CQJUEIIIXqSBCghhBA9SQKUEEKIniQBSgghRE/yj+XFf/qnf8p3v/tdgiBgy5YtfOxjH2NgYGDJcdu3b6dSqaC1xvM87rjjjmM5rRBCiFXgmEZQb3jDG/ja177GV7/6Vc4880w+85nPHPbYL37xi9x5550SnIQQQhyVYwpQv/iLv4jvu0HYRRddxIEDB47LRQkhhBDHbQ3qb/7mb7jssssO+/yNN97Itddey5e+9KXjdUohhBCnsRdcg7r++uuZnJxc8vgtt9zCm970JgA+9alP4Xke11xzzbLvcfvttzM2NsbU1BQ33HAD27Zt49JLLz3GSxdCCHE6e8EA9YUvfOGIz//t3/4t3/ve9/jCF76AUmrZY8bGxgAYHR1lx44d7Ny5UwKUEEKIIzqmKb777ruP2267jU996lOUSqVlj6nX61Sr1faf77//fs4999xjOa0QQohV4JjSzD/ykY8QRRE33HADABdeeCG33nor4+PjfOhDH+K2225jamqKm2++GYA0TbnqqquOuFYlhBBCwDEGqG9961vLPj42NsZtt90GwObNm/m7v/u7YzmNEEKIVUgqSQghhOhJEqCEEEL0JAlQQgghepIEKCGEED1JApQQQoieJAFKCCFET5IAJYQQoidJgBJCCNGTJEAJIYToSRKghBBC9CQJUEIIIXqSBCghhBA9SQKUEEKIniQBSgghRE+SACWEEKInSYASQgjRkyRACSGE6EkSoIQQQvQkCVBCCCF6kgQoIYQQPUkClBBCiJ4kAUoIIURPkgAlhBCiJ0mAEkII0ZMkQAkhhOhJEqCEEEL0JAlQQgghepIEKCGEED1JApQQQoieJAFKCCFET5IAJYQQoicdU4D65Cc/yS/90i/xtre9jbe97W3ce++9yx5333338Za3vIUdO3bw2c9+9lhOKYQQYpXwj/UNrr/+em688cbDPp+mKbfeeiv/83/+T8bGxvjVX/1Vtm/fzjnnnHOspxZCCHEaO+FTfDt37mTr1q1s3ryZMAy58sorueeee070aYUQQqxwxxyg/uqv/oqrr76aP/zDP2R2dnbJ8+Pj46xfv779+9jYGOPj48d6WiGEEKe5F5ziu/7665mcnFzy+C233MJ1113HTTfdhFKKT3ziE3z84x/nYx/72ILjrLVLXquUOoZLFkIIsRq8YID6whe+cFRv9Gu/9mu8973vXfL4+vXrOXDgQPv38fFx1q1bd/RXKIQQYlU6pim+iYmJ9p+//e1vc+655y455oILLmDXrl3s3r2bKIq466672L59+7GcVgghxCpwTFl8f/7nf87jjz8OwKZNm7j11lsBN0r60Ic+xG233Ybv+3z4wx/m3e9+N2ma8o53vGPZQCaEEEJ0U3a5RaIece2113LHHXec6ssQQohTbjXeD6WShBBCiJ4kAUoIIURPkgAlhBCiJ0mAEkII0ZMkQAkhhOhJEqCEEEL0JAlQQgghepIEKCGEED1JApQQQoieJAFKCCFET5IAJYQQoidJgBJCCNGTJEAJIYToSRKghBBC9CQJUEIIIXqSBCghhBA9SQKUEEKIniQBSgghRE+SACWEEKInSYASQgjRkyRACSGE6EkSoIQQQvQkCVBCCCF6kgQoIYQQPUkClBBCiJ4kAUoIIURPkgAlhBCiJ0mAEkII0ZMkQAkhhOhJEqCEEEL0JAlQQgghepJ/LC++5ZZbePbZZwGYn5+nv7+fO++8c8lx27dvp1KpoLXG8zzuuOOOYzmtEEKIVeCYAtRf/uVftv/88Y9/nL6+vsMe+8UvfpGRkZFjOZ0QQohV5LhM8Vlr+cY3vsFVV111PN5OCCGEOD4B6qGHHmJ0dJQzzzzzsMfceOONXHvttXzpS186HqcUQghxmnvBKb7rr7+eycnJJY/fcsstvOlNbwLga1/72hFHT7fffjtjY2NMTU1xww03sG3bNi699NJjuGwhhBCnuxcMUF/4wheO+HySJHzrW986YuLD2NgYAKOjo+zYsYOdO3dKgBJCCHFExzzF98ADD7Bt2zbWr1+/7PP1ep1qtdr+8/3338+55557rKcVQghxmjumLD6Ar3/961x55ZULHhsfH+dDH/oQt912G1NTU9x8880ApGnKVVddxWWXXXaspxVCCHGaU9Zae6ov4nCuvfZa2TMlhBCszvuhVJIQQgjRkyRACSGE6EkSoIQQQvQkCVBCCCF6kgQoIYQQPUkClBBCiJ4kAUoIIURPkgAlhBCiJ0mAEkII0ZMkQAkhhOhJEqCEEEL0JAlQQgghepIEKCGEED1JApQQQoieJAFKCCFET5IAJYQQoidJgBJCCNGTJEAJIYToSRKghBBC9CQJUEIIIXqSBCghhBA9SQKUEEKIniQBSgghRE+SACWEEKInSYASQgjRkyRACSGE6EkSoIQQQvQkCVBCCCF6kgQoIYQQPUkClBBCiJ4kAUoIIURPkgAlhBCiJ0mAEkII0ZP8U30BR7J3716uvfbaU30ZQghxwgwPD/P5z3/+qI5bbZS11p7qixBCCCEWkyk+IYQQPUkClBBCiJ4kAUoIIURPkgAlhBCiJ0mAEkII0ZMkQAkhhOhJPb0P6lh94xvf4L/9t//G008/zZe//GUuuOCC9nOf+cxn+Ou//mu01nzoQx/il37pl5a8fmZmhve///3s3buXTZs28Zd/+ZcMDg4e9+u85ZZbePbZZwGYn5+nv7+fO++8c8lx27dvp1KpoLXG8zzuuOOO434ti33yk5/k//yf/8PIyAgAv/u7v8vll1++5Lj77ruPP/mTP8EYw6/92q/xnve854Rf25/+6Z/y3e9+lyAI2LJlCx/72McYGBhYctzJ+t5e6Duw1vInf/In3HvvvRSLRT7+8Y9z/vnnn5Br6bZ//35+//d/n8nJSbTW/Pqv/zq/9Vu/teCYBx98kJtuuokzzjgDgB07dvA7v/M7J/za4IX//ZyK7+2ZZ57h/e9/f/v33bt38773vY/rr7++/dip/M5WDXsae+qpp+zTTz9t3/nOd9qdO3e2H3/yySft1VdfbVutln3++eftFVdcYZMkWfL6P/3TP7Wf+cxnrLXWfuYzn7F/9md/dsKv+WMf+5j95Cc/uexzb3zjG+3U1NQJv4Zu//W//lf7uc997ojHJElir7jiCvv888/bVqtlr776avvkk0+e8Gv7+7//exvHsbXW2j/7sz877L+fk/G9Hc138L3vfc/eeOON1hhjH374Yfurv/qrJ/SacuPj4/YnP/mJtdba+fl5++Y3v3nJtf3gBz+w73nPe07K9Sz2Qv9+TtX3lkuSxP7CL/yC3bNnz4LHT+V3tlqc1lN8Z599Ntu2bVvy+D333MOVV15JGIZs3ryZrVu3snPnzmWPe/vb3w7A29/+dr797W+f0Ou11vKNb3yDq6666oSe53jbuXMnW7duZfPmzYRhyJVXXsk999xzws/7i7/4i/i+mwS46KKLOHDgwAk/5+EczXeQ//eklOKiiy5ibm6OiYmJE35t69ata484+vr62LZtG+Pj4yf8vMfLqfrect///vfZvHkzmzZtOmnnFM5pHaAOZ3x8nPXr17d/HxsbW/Z/2KmpKdatWwe4/8mnp6dP6HU99NBDjI6OcuaZZx72mBtvvJFrr72WL33pSyf0Wrr91V/9FVdffTV/+Id/yOzs7JLnj/b7PJH+5m/+hssuu+ywz5/o7+1ovoPFx6xfv/6kf0979uzhscce48ILL1zy3COPPMI111zDu9/9bp588smTel1H+vdzqr+3u+6667B/aTyV39lqsOLXoK6//nomJyeXPH7LLbfwpje9adnX2GWqOymljvu1dTua6/za1752xNHT7bffztjYGFNTU9xwww1s27aNSy+99IRe23XXXcdNN92EUopPfOITfPzjH+djH/vYguNO5Pd5NN/bpz71KTzP45prrln2PU7U99btaL6DU/HfXbdarcb73vc+PvCBD9DX17fgufPPP5/vfOc7VCoV7r33Xm6++Wbuvvvuk3JdL/Tv51R+b1EU8Z3vfIff+73fW/LcqfzOVosVH6C+8IUvvOjXrF+/fsF00Pj4eHuk1G10dJSJiQnWrVvHxMREO1HgRFxnkiR861vfOuIC/tjYWPu6duzYwc6dO4/LjfZov8Nf+7Vf473vfe+Sx4/2+zwR1/a3f/u3fO973+MLX/jCYW9aJ+p763Y038HiYw4cOHDcvqcXEscx73vf+7j66qt585vfvOT57oB1+eWX88d//MdMT08f03/zR+uF/v2cyu/tvvvu4/zzz2fNmjVLnjuV39lqsSqn+LZv385dd91FFEXs3r2bXbt28epXv3rZ477yla8A8JWvfIUrrrjihF3TAw88wLZt2xZMZXSr1+tUq9X2n++//37OPffcE3Y9ue65/m9/+9vLnvOCCy5g165d7N69myiKuOuuu9i+ffsJv7b77ruP2267jU996lOUSqVljzlZ39vRfAf5f0/WWh555BH6+/tPyo3WWssHP/hBtm3bxg033LDsMQcPHmyPVHbu3Ikx5qRUzz6afz+n6nsDN7135ZVXLvvcqfrOVpMVP4I6km9961t85CMfYXp6mn/7b/8tr3jFK/j85z/Pueeey1vf+lZ+5Vd+Bc/z+PCHP4zneQB88IMf5Dd/8ze54IILeM973sMtt9zCX//1X7NhwwY+8YlPnLBr/frXv77kf4Tx8XE+9KEPcdtttzE1NcXNN98MQJqmXHXVVUdcczle/vzP/5zHH38cgE2bNnHrrbcuuTbf9/nwhz/Mu9/9btI05R3veMdJCZ4f+chHiKKofdO98MILufXWW0/J93a47+D2228H4LrrruPyyy/n3nvvZceOHZRKJT760Y8e9+tYzg9/+EPuvPNOzjvvPN72trcBbrvAvn372tf2zW9+k9tvvx3P8ygWi/zFX/zFSZlGO9y/n1743hqNBg888ED7v3lgwXWdqu9sNZF2G0IIIXrSqpziE0II0fskQAkhhOhJEqCEEEL0JAlQQgghepIEKCGEED1JApQQQoieJAFKCCFET/r/A0CYcLAxaFyHAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x432 with 3 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sns.jointplot(x=xr, y=yr, kind=\"hex\");\n",
"g = sns.jointplot(x=xf, y=yf, kind=\"hex\", xlim=xlim, ylim=ylim);\n",
"g.ax_marg_x.set_title('Fit distribution');\n",
"plt.savefig('fit_dist.svg')"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python [conda env:gan] *",
"language": "python",
"name": "conda-env-gan-py"
},
"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.8.5"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment