Skip to content

Instantly share code, notes, and snippets.

@lirnli
Last active November 9, 2022 02:41
Show Gist options
  • Save lirnli/8c2cf5b4ef1454b455aaef8deaffbc15 to your computer and use it in GitHub Desktop.
Save lirnli/8c2cf5b4ef1454b455aaef8deaffbc15 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Walk through Variational Autoencoder (VAE)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2017-09-09T18:05:11.584462\n"
]
}
],
"source": [
"import datetime\n",
"print(datetime.datetime.now().isoformat())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"VAE is a generative model, which is trained on a training set and generates completely new data in evaluation. One popular example is generate new [MINIST hand-written digits](https://github.com/kvfrans/variational-autoencoder/blob/master/main.py). Here I am trying to demenstrate how this works with a simple example, and no Bayesian statistics needed. This article only offers intuition behind VAE. [This article](https://arxiv.org/pdf/1606.05908.pdf) includes all convinient details for better understanding. "
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import numpy as np\n",
"from matplotlib import pyplot as plt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Transformation of random variables\n",
"VAE use two nets, one for inference and one for genration. It plays with the back and forth mapping between training data and latent variables. Here we have to accept that our training data are actually samples from a complex space. For example, any picture in MNIST is just one of the unlimited ways to write a digit (if we don't argue that there are a limited number of pixels and grey map values has to be integer between 0-255). \n",
"- Inference net: map a random training set data *X* to a random latent variable *z*.\n",
"- Genrative net: map a random latent variable *z* back to a training set data *X*.\n",
"\n",
"In Carl's tutorial, there is one excellent example to see how mapping (or tranforming) random variables works in action. In the following code, *x* (left plot) stores 2D independent normal distribution samples (Isotropic Gaussian). By a simple transformation, $ y = f(x) = \\frac{x}{||x||}$, we can see now *y* (right plot) is a distribution on a unit circle. Here we explicitly code f(x). VAE trains neural networks, and two of them.\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nrkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1031b4780>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import torch\n",
"from torch import nn, optim\n",
"from torch.autograd import Variable\n",
"\n",
"x = np.random.randn(1000,2)\n",
"x_abs = (x[:,0]**2+x[:,1]**2)**0.5\n",
"y = [x[:,0]/x_abs,x[:,1]/x_abs]\n",
"plt.figure(figsize=[12,5])\n",
"plt.subplot(121)\n",
"plt.scatter(x[:,0],x[:,1],0.5)\n",
"plt.xlabel('x1')\n",
"plt.ylabel('x2')\n",
"plt.title('x (Isotropic Gaussian)')\n",
"plt.subplot(122)\n",
"plt.scatter(y[0],y[1],0.5)\n",
"plt.xlabel('x1')\n",
"plt.ylabel('x2')\n",
"plt.title(r'$\\frac{x}{||x||}$');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## VAE model creation\n",
"\n",
"Let's train the net with a simple task, to replicate data from another 2D Isotropic Gaussian with mean =(10,8) and a standard covariance matrix. In another word, shift the center of a standard Gaussian to (10,8). So the training set data would look like below, and *sample_real()* is kept as black box.\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.text.Text at 0x10b1fd470>"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10b2f70f0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"def sample_real(batch_size=100):\n",
" x = torch.randn(batch_size,2)\n",
" x[:,0] += 10\n",
" x[:,1] += 8\n",
" return x\n",
"\n",
"plt.figure(figsize=[6,6])\n",
"x = sample_real(1000).numpy()\n",
"plt.scatter(x[:,0],x[:,1],0.5)\n",
"plt.title('real data samples')\n",
"plt.xlabel('x1')\n",
"plt.ylabel('y1')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"Keep in mind that the inference model is needed for training purpose only. (This is similar to Generative Adversial Network(GAN), where the discriminative net is also only for training.) For mathematical convinience, there is an arbituary but well-accepted constraint added: **latent variables have to follow standard Isotropic Gassian distribution**, namely \n",
"\n",
"$N(\\mu=[0]_n,\\Sigma=I_{n\\times n} )$.\n",
"\n",
"Now have a look at the structure of encoder net and decoder net in the following Pytorch code.\n",
"- Encoder: takes training set data as input, and output latent variables in terms of mean $\\mu$ and standard deviation $\\Sigma$.\n",
"- Decoder: takes latent variables as inputs, by scaling a new standard Isotropic Gaussian random sample with respect to $\\mu$ and $\\Sigma$. And it tries to reproduce the training set data. The *decode()* function is used for new data generation, not in training.\n",
"\n",
"*Why make the latent variable $z$ follow a standard Isotropic Gaussian?*\n",
"- Mathematical convinience (for KL Divergence)\n",
"- After training, sampling new latent variables = sampling standard Isotropic Gaussian. Super easy.\n",
"\n",
"*Why is the latent variable $z$ disembled into $\\mu$ and $\\Sigma$? *\n",
"- It easy for regularization. Pushing $\\mu \\rightarrow 0$ and $\\Sigma \\rightarrow I$ would result in a standard Gaussian.\n",
"- ( The parameter trick. All net weights are isolated from the random Gaussian sampling. Easy backpropagation.)\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"class Encoder(nn.Module):\n",
" def __init__(self):\n",
" super(Encoder, self).__init__()\n",
" # Build two layer net\n",
" self.linear1 = nn.Sequential(nn.Linear(2,8),nn.ELU())\n",
" self.linear_mu = nn.Linear(8,8)\n",
" self.linear_std = nn.Linear(8,8)\n",
" self._init_parameters()\n",
" \n",
" def forward(self, input):\n",
" output = self.linear1(input)\n",
" mu = self.linear_mu(output)\n",
" std = self.linear_std(output)\n",
" return mu, std\n",
" \n",
" def _init_parameters(self):\n",
" for p in self.parameters():\n",
" if p.ndimension()>1:\n",
" nn.init.kaiming_normal(p)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"class Decoder(nn.Module):\n",
" def __init__(self):\n",
" super(Decoder,self).__init__()\n",
" self.linear1 = nn.Sequential(nn.Linear(8,8),nn.ELU())\n",
" self.linear2 = nn.Linear(8,2)\n",
" self._init_parameters()\n",
" def forward(self, mu, std):\n",
" output = Variable(torch.randn(mu.size()))\n",
" output = mu + output*std\n",
" output = self.linear1(output)\n",
" output = self.linear2(output)\n",
" return output\n",
" def _init_parameters(self):\n",
" for p in self.parameters():\n",
" if p.ndimension()>1:\n",
" nn.init.kaiming_normal(p)\n",
" def decode(self,z):\n",
" output = self.linear1(z)\n",
" output = self.linear2(output)\n",
" return output"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Loss function\n",
"\n",
"We can avoid the math here, but still just have a glance at the original loss function.\n",
"\n",
"$E_{z~Q}[log_P{X|z}] + D_{KL}[{Q(z|x)}||{P(z)}]$.\n",
"\n",
"Now forget the equation and focus on the logic.\n",
"- loss = reconstruction_loss + latent_loss\n",
"- reconstruction_loss = X_generated should equal X => MSE, Regression, or whatever\n",
"- latent_loss = drive $\\mu$ and $\\Sigma$ toward an Isotropic Gaussian => how about $\\mu^2 + tr \\Sigma$\n",
"\n",
"If we are not a strict Bayesianist, we do not have to follow the loss function in paper, because the simple ones will do as well.\n",
"\n",
"Let's take a look at kvfran's code. The reconstruction loss = $-x\\cdot \\log{x_{generated}} - (1-x)\\cdot \\log{1-x_{generated}}$. And it's derivative is\n",
"\n",
"$\\frac{\\partial{LOSS}}{\\partial{x_{generated}}} =\\frac{x}{x_{generated}}+\\frac{(1-x)}{1-x_{generated}}$\n",
"\n",
"It equals zero only when $x$ equals $x_{generated}$. No better than MSE loss, the same global minimum. And I do not have to confine the output to $[0,1]$ with MSE."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.text.Text at 0x10b462198>"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10b3212e8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Check minimum of reconstruction loss\n",
"xs = np.linspace(-10,-0.0001,1000)\n",
"xs = 10**xs\n",
"xt = 0.4\n",
"ax, = plt.plot(xs, -xt*np.log(xs)-(1-xt)*np.log(1-xs))\n",
"plt.gca().set_yscale('symlog')\n",
"plt.xlabel('x')\n",
"plt.ylabel('loss')\n",
"plt.title('LOSS used in paper (x_{t}=0.4)')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The same goes for the latent loss. The function in paper is just a fancy to to say $\\mu = [0]_n$ and $\\Sigma = I_{n\\times n}$ at global minimum, because KL divergence is always positive otherwise. This means L1, L2 regularization would do as well. (Compared with GAN, we can also optimize inference net and genrative net seperately, as long as weights converge."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.text.Text at 0x10ad6fda0>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nLgWf3hVdubQAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10b2f7320>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Check minimum of Sigma\n",
"xs = np.linspace(1e-1,3,1000)\n",
"plt.plot(xs, xs**2-1-2*np.log(xs))\n",
"plt.xlabel('$\\sigma$')\n",
"plt.ylabel('$\\Sigma$ loss part')\n",
"plt.title('$\\Sigma$ loss part\\n $\\sigma^2 - log(\\sigma^2) -1$')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Actual training\n",
"\n",
"During the training, we can see the genrative data floating gradually toward training set data, like in my post for GAN."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# a helper function to plot results\n",
"def plot_decoder():\n",
" z = Variable(torch.randn(200,8))\n",
" x_gen = decoder.decode(z).data.numpy()\n",
" plt.figure(figsize=[5,5])\n",
" plt.scatter(x_gen[:,0],x_gen[:,1],0.8)\n",
" x_real = sample_real(200).numpy()\n",
" plt.scatter(x_real[:,0],x_real[:,1],0.8)\n",
" plt.legend(['VAE','Real Data'])\n",
" plt.xlim([-1,11])\n",
" plt.ylim([-1,11])"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"epoch=0, loss=436.6822204589844\n"
]
},
{
"data": {
"image/png": "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\nTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10ad7c1d0>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"epoch=1000, loss=144.72250366210938\n",
"epoch=2000, loss=74.672607421875\n",
"epoch=3000, loss=40.348846435546875\n",
"epoch=4000, loss=22.122989654541016\n",
"epoch=5000, loss=11.838520050048828\n",
"epoch=6000, loss=6.60239839553833\n",
"epoch=7000, loss=4.117464065551758\n",
"epoch=8000, loss=2.964491367340088\n",
"epoch=9000, loss=2.362375259399414\n",
"epoch=10000, loss=2.2519819736480713\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAATwAAAEyCAYAAABnD2x2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X2QVOWdL/DvD5xUOwgoLzEsqDNlEZQXGaR1JZZeWYji\nChEK14IYK1d2Y8ps1ujNZkUqllRuYplKYqFVJhabYNwSYY0vJGJU1izGpK5iGsWCgBQREGckMsAF\nBrEvM8zv/tF9Zs40fbrPy3Pe+nw/VamZabv7PD2V+fL8nrcjqgoioiwYFHcDiIiiwsAjosxg4BFR\nZjDwiCgzGHhElBkMPCLKDAYeEWUGA4+IMoOBR0SZcUaUFxs1apS2tLREeUkiyoDNmzcfVNXR9Z4X\naeC1tLSgUChEeUkiygAR+cDN81jSElFmMPCIKDMYeESUGZGO4VXT3d2N9vZ2FIvFuJvSEHK5HMaN\nG4empqa4m0KUOLEHXnt7O4YOHYqWlhaISNzNSTVVxaFDh9De3o7W1ta4m0OUOLGXtMViESNHjmTY\nGSAiGDlyJHvLRA5iDzwADDuD+LskcpaIwCMiikLmA2/mzJl45ZVXBjy2YsUK3HHHHX3f53I5HD16\ntO+/v/baaxg+fDja2tr6/vfqq69G2m4i8i7zgbd48WKsXbt2wGNr167F4sWLAQBr1qzBZZddhuee\ne27Ac6666ips2bKl73+zZ8+OrM1E5E/mA++mm27Ciy++iJMnTwIA9u7di48++ghXXXUV3n//fRw/\nfhzf//73sWbNmphbSkRBpTLwuordeGrTPnQVuwO/14gRI3D55ZfjpZdeAlDq3d18880QEaxduxaL\nFi3CVVddhZ07d+Ljjz/ue90f/vCHASXt+++/H7gtRBSuVAbeC+/ux7Lnt+KFd/cbeT97WVtZzi5a\ntAiDBg3CwoUL8atf/arvNZUl7YUXXmikLUQUntgXHvsxb+qYAV+DuvHGG3H33Xfj7bffxokTJzB9\n+nRs3boVu3btwhe/+EUAwMmTJ9Ha2opvfvObRq5JRNFLZQ9vaK4JX/7b8zE0Z2b71FlnnYWZM2di\nyZIlA3p3y5cvx969e/vG9T766CN88IGrU2iIKIFSGXhhWLx4Md59992+wFu7di0WLFgw4DkLFizo\nK30rx/CeeeaZyNtMlGjFY0Dh8dLXhEhlSRuG+fPnQ1X7ft69e/dpz3nooYf6vrevyyOiKrY9C6y/\nq/R9/rZ421JWN/BEZBWAuQAOqOrk8mMjAPwngBYAewHcrKr/N7xmElHqTF448GsCuClpfwlgTsVj\nSwH8TlXHA/hd+Wcion65YaWeXW5Y3C3pUzfwVPV1AIcrHr4RwBPl758AMN9wu4iIjPM7aXGuqlqL\n4P4K4FxD7SGiJErgBIQfgWdptTTSr07/XURuF5GCiBQ6OzuDXo6I4mBNQGx71vtrExSWfmdpPxaR\nMaq6X0TGADjg9ERVXQlgJQDk83nHYCSiBAsyAZGg2Vq/PbzfAPhq+fuvAvi1mebEY/DgwWhra8Pk\nyZMxb948HDlyxPd7tbS04ODBg1UfnzJlCqZMmYKJEyfiu9/9bt2TiY8cOYKf/vSnvttCZEyQCYjJ\nC4G5KxIxW1s38ERkDYA3AEwQkXYR+UcADwL4oojsAjC7/HNqnXnmmdiyZQu2bduGESNG4NFHHw3l\nOhs3bsTWrVvx1ltvYffu3fj6179e8/kMPDIqrtIyQbO1bmZpF6vqGFVtUtVxqvoLVT2kqrNUdbyq\nzlbVylnc1JoxYwY6Ojr6fv7Rj36Eyy67DJdccgnuv//+vsfnz5+P6dOnY9KkSVi5cqWna5x11ll4\n7LHHsG7dOhw+fBjHjx/HrFmzcOmll2LKlCn49a9LHealS5fi/fffR1tbG77zne84Po/IlSDjcCZU\nBm4cAayqkf1v+vTpWmn79u2nPVbXp0dV/7Sq9NWAIUOGqKpqT0+P3nTTTfrSSy+pquorr7yiX/va\n17S3t1dPnTqlN9xwg/7+979XVdVDhw6pquqJEyd00qRJevDgQVVVveCCC7Szs/O0a1R7fOrUqfrm\nm29qd3e3Hj1a+iydnZ164YUXam9vr+7Zs0cnTZrU93yn51Xy9Tulxmf478azP61SvX9Y6Wu1nwMA\nUFAXGZTOrWWGB0E//fRTtLW1oaOjAxdffHHfCSkbNmzAhg0bMG3aNADA8ePHsWvXLlx99dV45JFH\n8PzzzwMAPvzwQ+zatQsjR470dF0tb2VTVSxbtgyvv/46Bg0ahI6OjgFn79mfX+15n/vc54J8fMoK\nq7SMS+XERww7MdIZeIZ/UdYY3okTJ3Ddddfh0UcfxZ133glVxb333nvaWNtrr72GV199FW+88Qaa\nm5txzTXXeL41YldXF/bu3YvPf/7zWL16NTo7O7F582Y0NTWhpaWl6vu5fR5RIlUGbuXPxWOlzszk\nhaGN96XztJSQBkGbm5vxyCOP4Cc/+Ql6enpw3XXXYdWqVTh+/DgAoKOjAwcOHMDRo0dxzjnnoLm5\nGe+99x7efPNNT9c5fvw4vvGNb2D+/Pk455xzcPToUXz2s59FU1MTNm7c2HcE1dChQ9HV1dX3Oqfn\nETWECMYY09nDC9G0adNwySWXYM2aNbj11luxY8cOzJgxA0BpsuHJJ5/EnDlz8Nhjj+Hiiy/GhAkT\ncMUVV7h675kzZ0JV0dvbiwULFuC+++4DANxyyy2YN28epkyZgnw+j4suuggAMHLkSFx55ZWYPHky\nrr/+etxzzz1Vn0eUOtV6cxGUuGKNI0Uhn89roVAY8NiOHTtw8cUXR9aGLODvlGJjDzLAuUQtPF7q\nzc1d4X1csUpYishmVc3Xeyl7eETUL+g4mn1CEXCeXDS1c2PyQmDbsxgs7obnGHhE1C/oCohqQVYt\n1IJMWNivUW7vqGYZ4aZ5iQg8VYWIxN2MhhDlEAU1oKDjaJVB5jY0vQSt/Rrldh783hJXmx9iD7xc\nLodDhw5h5MiRDL2AVBWHDh1CLpeLuymUVnGt1fMbtOX2ntIlvW6eHnvgjRs3Du3t7eDRUWbkcjmM\nGzcu7mZQI7HKzfO/APzhx8Ds5cDwsWavEVHQxh54TU1NaG1tjbsZROTEKjfHTgc6NpceW/jvpz8v\ngoXDQcUeeESUcFaZae/hVRPluXc+w5WBR0S12cvNaj07S5R7Y32GKwOPiMyIcsLDZ7imcy8tETUO\nP+fi+dxPz8AjIjP8HugZ4cGkDDwiqs1tkPkNrlr3vDB8KjLH8IioNrcTBJXjam5nUmuN/Rme+WXg\nEVFttSYIKkPNHkomwsrwzC9LWiKqzR5kb/4MeONn/SWmUxlbPAZ0F4E5Dw4Mq6MdwLNfK331cm17\nDzFAmcvAI2p0psbBtj0LvLwUeGVpf8DZx9/s19n2bOl5Z+QGhtWry4GtT5e++m1zgEkOlrREjS5o\naWkF2PhrSz02RX+vzd77sw71BJxL0dnLB361v799rK9WmwOUuQw8okZWPAb0FIHrHvQ/DmaFz9wV\nwBV3OD/PHkROExHDx56+W6NauI2/Fphyc+mrQSxpiRqZVYY25ZxnSuuVvLWWjdjVWgxc6xrV3n/X\nhlLpu2tD9c/EkpaITuOm/KvsYVWWmCa2jNW7RuXpx9UmPOyfqadYek7xGA8PIMqUWuvd3IRVZSjW\nG/MrHgO2rC6N5U27xV3gTF5YCqieYn97na5hTXjMXVH9vXPDSpMh6+8q9Vx5eABRhgSdlKgMxXq9\nQqtMBoCP3gZu+En90MsNK4XT+rtKYVXrGm56pT4nLhh4RGln+limer1Cq6Tct6k0znbBF/pvqFNr\nV4Xbdrq5wY/PMpuTFkRp5/PkkEDXu+IO4EuP9E82uJlIsLfTy8RDtef6XFvIHh4R+VPl7mGue5le\nnl/tuT7LeInytn75fF4LhUJk1yOiKvzee8L+OgB4ZzUgANpcTlyYVPEZRGSzqubrvYw9PKKs8TvJ\nYX8dUJpJBUqTEPXex/QNfnyO4THwiLLG7yRH5eu6i6Uenpv3scLyg//jblbXrXKQfmYwmtw8nYFH\nlDV+FxJXvm5GjW1mlSYvLIWdNasbZCGzvbdYDtLzhomrmzEz8IiyKOp7yOaGlXp21hKWIOyldfm9\nPvz+knY3L+WyFKIs8rIsxNTxUkGXz1jtGH9t/3KY8nuePIVuN28RqIcnIncD+CeUNplsBXCbqhaD\nvCcRRcDLOJ4Vjj3F/l0SUc/K2tsxd0X/ftzC4556jL4DT0TGArgTwERV/VREngawCMAv/b4nEUXE\nyzietbNi7x+B99aXvq91TFRYnPb8dhdx7hAZ5eYtgo7hnQHgTBHpBtAM4KOA70dESWNt1n9vfeln\nr0t3TY0XOu35LR7BuGFygZu38D2Gp6odAH4MYB+A/QCOqupph1eJyO0iUhCRQmdnp9/LETUGw7cd\njMzkhaXjmmYtLy1F8dJ+qyf24rfNfm4rAM/IuX6J78ATkXMA3AigFcDfABgiIl+pfJ6qrlTVvKrm\nR48e7fdyRI0hwptOO6oXusVjpRv1vGm7WY+1f/bMs0snpXhp/+SFpdOLtz7t/XO7+Qei7Ra0H9MP\n3LxdkJJ2NoA9qtoJACLyHIAvAHgywHsSNTbTJ5v4UW+nhXUeHQB0VBz/VK/91c7KC7Ikxc2ukNww\nHDyhh928XZDA2wfgChFpBvApgFkAuFGWqBYTpwe75XRQZ73Qsg7rbN90+kLheu23n5VnP5yz3uuc\nxvkqDw51GAMc1SwjnN+8n+/AU9VNIvIMgLcB9AB4B8BKv+9HRIb5DZ/csNIuiuItQOv/6L8Fo5uJ\nB2tG135ns+Kx+gcNOPXkKg8OdWh3FD08qOr9AO4P8h5EZJA9mKqFj9NznY5St9a7vfjtUm8PqB+W\nlUtW3lld/6ABPycg29p/StHr3Kh+3FpG1Egqe0q11svVGh+r3K+69en+2yZai33dLjGR8tdJC/yN\nXTr1SCtPb3GBgUfUSIIerGmxemXdxdL4n/U8P0dLtd1Sf4eGn/cd0P4lrl7CwCNqJF4mRWo9t6fY\n/9Xvycb2XqLXO6fVez+ft4/k4QFEWeK0rq1y7Z21mLdyUa/9AIB6a+S8rDl0c7CAgTWM7OERZYlT\n6Whfe3dGrlTGNuVqT3b0FPtngb1MRPjdamZgDSMDjyhLnELDWu9mnWBsLxcrA8oKzese7D+mqRo3\nkw1ON/q2rvf/uoBXlwOzlwPDxwZew8jAI8oSpxCy1t5VUxlQ9tD0cxiA9XqnGV/79axTkgFg4b9X\nf7/ischOSyGiNPFTTlb2CnPD3N1424kVuoXHq/f07Ncbf23p+9nLnT9LTzH801KIKIX8DPxXm1Co\n9T5uT4QZf23/2j6n6w0fW+rZDR/r/FkUkRweQERpY+rwgmrvY/W4uov9EyC1xtx2bah9U596vVFb\nGz7+5BsH3TSbPTyiNPN6vl7Q+0rUeh+rxyWoPZlhmbzQ+XnWdjarF1n5OX3O9LKHR5Rmfm+qHYZ6\nkxn2kAJK34+/tnpwWdvZJi4oLX+x78fN3+b7czPwiNIsCefrWdwcHWXf+7r+rv6DQYHTJy6sI6pe\nXlo6bdneG6w8NsolBh5RmpVDpqvYjRc27cO8qWMwNNdk5r0ry8ag96aoFs7jr61+MKh1LNSfny+F\nYuWxUpXHRrnEMTyipPFx34sX3t2PZc9vxQvv7jfXjsqZWLczvE7tt/cAreC0FhNbYWZ/rTXGZz9x\n2a7WGKAD9vCIksbH+NS8qWMGfDWiskfmtnx2c4S8/b9XHkVl/2/1zt7zOG7JwCNKGh/jckNzTfjy\n354f/NqVZWvl6cNuAsbNEfL2r/aQC3lMUlS93mTSv3w+r4UCb3tBlFjW7oe5K07vfQVdyuLEwDVE\nZLOq5us9jz08IupXq/cV1rKXCG9sxMAjon6V4eO1xIyiRxgAZ2mJssbLLLDXnRlBD+l02zYfM9kA\nA48oe+yh5DM4HHlZKlLt2m4D02ewsqQlyhp7mbpldWknQ0+x9h3O3PIyHldtfNBtCe1zNpeBR5Q1\n9lCyFmlEt1ijX7XQchuYPic6WNISZYFT6TrtllIJat2K0eR713te5fig6fK6CgYeUZKE9UfvNOZl\n4rgoU+NuBu5KVg9LWqIkCWvdW5g7GEyNu0Vw8gt3WhAlScLXsdUVVfsrruN2pwVLWqIkMXUicVwi\nKEuDXIclLRGZE9WBpD6vwx4eEZlTr4caZFLG/lqfPWEGHhFFJ0jJa6BcZklLRO6Fccx7FK8tYw+P\nKGRdxW48tWkfuordcTeln9/SMugNuINMyhiY0GEPjyhk1v0mAJg5ldgEv+v9avWyknTLSAcMPKKQ\nhXK/CQ+6it144d39A+9o5rc8rLWHNUm3jHQQqKQVkbNF5BkReU9EdojIDFMNI0qTWmWrdb8JY7dP\n9KjqHc3CWO9n4j1D3k8btIf3MICXVfUmEfkMgGYDbSJKnSBla9UemEFx9zA9Cbks9h14IjIcwNUA\n/icAqOpJACfNNIsoXYKESthjfMbuaBYFp7LY0Ja1ID28VgCdAB4XkakANgP4lqp+Yn+SiNwO4HYA\nOP/8lPzSiTwKEiqp6oGFzWmM0FDPz/fhASKSB/AmgCtVdZOIPAzgmKre5/QaHh5ARL7U6eFFcXhA\nO4B2Vd1U/vkZAJcGeD+iyCRybRw5MzTJ4jvwVPWvAD4UkQnlh2YB2B6oNUQRqTpzSQ0v6CztvwBY\nXZ6h3Q0gmasNiSpw3CybAgWeqm4BULduJkqaVM1ckjHcS0tEmcHAI6LMYOARUWYw8IgoMxh4RJQZ\nDDwiygwGHhFlBgOPMolby7KJgUepYTKkuLUsm3jEO6WGyXPj7FvLwj6Ak5KDgUepYXL/q31r2VOb\n9kVykx0Ga/wYeJQaYe1/jeoggUTevSxjGHiUeVEdJMATWuLHwCOKCE9oiR9naYkoMxh4RJQZDDwi\nygwGHhFlBgOPKAbc2hYPBh6lTiOEBbe2xYPLUih1GmEBL9fkxYOBR6lg35aV1rCo3FqW1rBOM5a0\nlAr2EtAKi7TtR2UZGz/28CgV0tqrs2uEz5B2DDxKhUYoARvhM6QdS1oim0aYASZnDDwiG46zpUzx\nGFB4HIPFXZYx8Cg17L2vsHpi86aOwQMLphgfZ2PPMSTbngXW34VRzTLCzdM5hkepYV9/BwDLnt+K\nt/Ycxv+eP6nujK3b04bDGmdrhLWDiTR5IQDg4PeWHHbzdAYepUblLOdbew5j3ZYOXN46om6IxB04\nnKENSW4YkL8Np3RJr5uni6qG3aQ++XxeC4VCZNejxublHhG8n0RjE5HNqpqv9zyO4VFowh638rIA\nOa2LlcksBh6FhjOelDQcw6PQJG3cimUtsYdHoTFdRgYtkdnjJAYepYbfwLKCcuaE0aGssaP0CFzS\nishgAAUAHao6N3iTKOucSk+/JbIVlA8smMI1cBlnYgzvWwB2ABhm4L2IHNfMVS4Kdjsml7SxRIpP\noMATkXEAbgDwAwD/y0iLKPPcBpTbxcQ8pYQsQXt4KwD8G4ChBtpCDcjPzKjbgGLPjbzyPWkhInMB\nHFDVzXWed7uIFESk0NnZ6fdylFJhzoyamAV2mvnlZv/GFGSW9koAXxKRvQDWAvg7EXmy8kmqulJV\n86qaHz16dIDLURqFdfqIKU6BnKYlLAxn93yXtKp6L4B7AUBErgHwr6r6FUPtogZhavwsrEXDTmVx\nmsrluA9GSBOuw6PQmeiBhNXjciqLw9h7G1b5nPRedJIY2Vqmqq8BeM3Ee1HjMdEDSVOPy4nT7yHo\n74ez0O5xLy2FzkRYpfWP2s39dBshzNOCJS2FLgtHMzmVpW7up5uF309SsIdHvvDkkYGcylL23pKF\ngUe+cGZwIKdgS2sp3qgYeOQLey4DMdjSgYFHvvAPnNKIkxZElBkMPIoUt0FRnBh45AmPWY8G/2EI\nB8fwyJOgs7Oc7HCHs+DhYOBRXfV2C3hZk1drsoNr+/rxH4ZwsKSluuqVoW7KVDclGsvdftx9EQ72\n8Kgue2+jWqnlpjdS7XWVPTovvRqTvUH2LLODgUd12ctQeyjZg6LeOFO1MKsMQS9r+0yOcXG8LDsY\neA0m7N6KPZSe2rTPdVBUC7Mg41Qmx7g4XpYdDLwGE1ZvpVqQBg0KLz066/ozJ4zGxp2drnqVYbSD\n0o2B12DC6q1UC9Iog8K6/vy2sVi3pWNAO4jcYuA1mLBCKO6yz7ruzAmjcXnriFSVn5wUSQ4GHrkS\nd9lnv37aenacFEkOBl6GsecRjbh7x9SPC48zLMyFvl3Fbqz64x6s+uMeo/tB/ewxjXtfKhcRJwd7\neBnmpufhtxf4wrv78b312wEAuabBxko5P+UhS0qyMPAyzM24nN+wmDd1DIrdp/q+N8VPeciSkiyi\nqpFdLJ/Pa6FQiOx6FFy19W8szShpRGSzqubrPY9jeFST1QvcuLOz5nhf3ONkRG6wpCVX6pWFHCej\nNGDgpViUy0rs431hbDMjigJL2hSL6/y4atdtlKUXLM0bG3t4KeDUk4urV9XIvTmW5o2NgZcCTn+E\ncW33inubWZgaOcyJJW0qzJs6Bg8smOL5jzBIeVb52qyUeo1SmlN1DLwEcQoVv3+EQcb4rNfet+7P\nfSU17zdBaceSNkFMjx8FPVH4rT2HsW5Lx4DjmFjqUZpxp0WCJO30knrtSVp7Kbu40yKFvJau1Upg\nk2Nt9drDMpfShoGXYtUCp9pjYU04+J1MqZSVCRGKH8fwUsw6kaTYfQpdxW7He7uaHhv0cntGN7j2\njaLiO/BE5DwA/wHgXAAKYKWqPmyqYVTf0FwTck2Dsez5rX1nzpm8HaLTGF0ckyscLyQTgvTwegB8\nW1XfFpGhADaLyH+p6nZDbWtYJv94q/XyKvldKOwUbKZnbMM8l4/Iznfgqep+APvL33eJyA4AYwEw\n8Oow+cdr7+UBpdOFTfWCnIItjp0WXBZDJhgZwxORFgDTAGyq8t9uB3A7AJx/Pv9lBsz/8VrvU+w+\nZbQXlKQtZElqC6VX4HV4InIWgN8D+IGqPlfruVyHF56uYjd+VWgHAPxDfhzHuShTIlmHJyJNAJ4F\nsLpe2DUyU8sqgryPddOcXNNghh2RA9+BJyIC4BcAdqjqQ+aalD6mFuAGeR9Ta+KSzO8/CFznR5Yg\nY3hXArgVwFYR2VJ+bJmq/jZ4s9LF65hcGOfbZWGMy+9kD2d4yRJklvaPAMRgW1LLa9gk7Xy7tPD7\nDwJneMnCnRYxqPwDNLUur9EX5/r9B4H/kJCFe2ljULkpPwljgEnkZuyN43PkBXt4CWCq5Gq00s3N\n2BvH58gLBl4CmCq5ar1PvXJ3/5FP8cOXd+KeORMw5uwzPb8+DG4CvNFCnsLFkjYj6pW7P3x5J9Zt\n6cAPX97p6/VhcHM+IO9BQV6wh2dI0icM6vWE7pkzYcBXr68Hkv87IGIPz5BaPaAkDKzX6wmNOftM\nrFjUVrWcdfN6oPEmTajxsIdnSK0eUFYG1jmeRknHwDOk1oRBVoKA690o6VjSRiBJA+tJKK+J4sLA\nyxi/42xOQckApTRh4GWM21NVKoPMKShNByhRmDiGh2wtp3A7zlY50eI0Dul3fDIrEzmULAw88I+v\nmsogcwpKvxMVWZnIoWRh4IF/fNWEMeNa2ZPmPy4UNY7hIVmzqI2MC5MpbuzhUWTYk6a4sYcXsyzN\nVrInTXFj4MWMZR5RdFjSxoxlHlF02MMLkZtylWUeUXQYeDamx9NYrhIlCwPPxnRAzZwwGvPbxmLm\nhNFG3o+IguEYno3p8bSNOzuxbksHLm8dwUW2RAnAwLMxvfqfExJEycLACxG3TxElC8fwiCgzGHiU\nqd0elG0MPOLyGcoMjuE1gKAHmHJyhbKCPTwPklr6Be2hcbcHZQV7eHXYe09JPRmZPTQidxh4ddhD\nLopg8VOecvkLkTuZKGmDlKL2u3wFLf3ctCPOCYSkluxEpmSihxekFDXZe3LTDqv3OHPCaDy1aV+k\nd1JLaslOZEomAi8pY1xu2mEF7FOb9kUePkn5PRGFRVTV/4tF5gB4GMBgAD9X1QdrPT+fz2uhUPB9\nvTh4HVMzdY/bLN0rlygoEdmsqvl6z/M9hicigwE8CuB6ABMBLBaRiX7fL6m8jqmZGoPjUhEi84KU\ntJcD+Iuq7gYAEVkL4EYA2000LCm8lnksC4mSK8gs7VgAH9p+bi8/NoCI3C4iBREpdHZ2BrhcPLz2\ntEz2zDhrSmRW6MtSVHWlquZVNT96dHJO/rXCZP+RTxMbKlEuUQkSrgxmSosgJW0HgPNsP48rP+ao\nVzXypRZOrDCZ3zYW67aUmp20pRhRlsdBlqRwOQulRZDA+xOA8SLSilLQLQLw5VovOPzJycT8YdjX\nu13eOqLv5yTNjka5gyJIuHLcktIi6LKUvwewAqVlKatU9Qe1nt9y0RR94IkXExEmTqz1bw8smBJ7\nKBORO26XpQRaeKyqvwXwW7fPHzHkM4kPEfZWiBpXpHtpB4lEebk+XgbV3c6yJm2gPmntIUqihjg8\noN4fexiznUk7JThp7SFKoobYS1tvljCMMjVppW/S2kOURIEmLbwKay9t0JnVJM3MRiFrn5caX+h7\naZMk6O6GtJSDpsbp0vJ5w8Qxz2xqiJI2qLSUg6YW+Kbl84aJi6WziYGH9ByRbiqo0vJ5w8TQzyYG\nXoowqMzh7zKbGmIMj+rjmBVRAwReo/4hm/5cnKggSlngVQsBN3/IaQxF0wFlv/saUVZFOoYX9Hio\najNrbgafkzQj53YNnOlBdY5ZEUUceEdOdA+4qbXXxa/VQsDNH3JUM3Juwsxt+DKgiMyLNPDObm7C\nv5bLKj+9Lr8hEFV4eLnvrInw5Y4JIm8iDbxBIp5K0bTxct9ZE5JUqhOlQWzr8BqxZIv6M82bOgbF\n7lModp9CV7GbvTyiOlIxS+t0w500zr56Ue/zDc01Idc0GN9bv53LTYhciPS0FBHpBPCB19cNaj57\n1BnDRl3QW/zk8KDckBE9xw5+0HviyEHr8fLPAHDQXUMGDRp05rARvZ8eOwzt7fXanhCMQpW2V3y+\n6p8t3s99cPOfAAADa0lEQVRStd0pkda2p7XdQLhtv0BV694WMdLAC5OIFNwcD5NEaW17WtsNpLft\naW03kIy2p6KkJSIygYFHRJnRSIG3Mu4GBJDWtqe13UB6257WdgMJaHvDjOEREdXTSD08IqKaGHhE\nlBkNEXgiMkdEdorIX0RkadztcUNEzhORjSKyXUT+LCLfirtNXojIYBF5R0TWx90WL0TkbBF5RkTe\nE5EdIjIj7ja5JSJ3l/+/sk1E1ohILu42VSMiq0TkgIhssz02QkT+S0R2lb+eE0fbUh94IjIYwKMA\nrgcwEcBiEZkYb6tc6QHwbVWdCOAKAP+cknZbvgVgR9yN8OFhAC+r6kUApiIln0FExgK4E0BeVScD\nGAxgUbytcvRLAHMqHlsK4HeqOh7A78o/Ry71gQfgcgB/UdXdqnoSwFoAN8bcprpUdb+qvl3+vgul\nP7yx8bbKHREZB+AGAD+Puy1eiMhwAFcD+AUAqOpJVT0Sb6s8OQPAmSJyBoBmAB/F3J6qVPV1AIcr\nHr4RwBPl758AMD/SRpU1QuCNBfCh7ed2pCQ4LCLSAmAagE3xtsS1FQD+DUAStuV50QqgE8Dj5XL8\n5yIyJO5GuaGqHQB+DGAfgP0Ajqrqhnhb5cm5qmpt+P4rgHPjaEQjBF6qichZAJ4FcJeqHou7PfWI\nyFwAB1R1c9xt8eEMAJcC+JmqTgPwCWIqrbwqj3ndiFJo/w2AISLylXhb5Y+W1sLFsh6uEQKvA8B5\ntp/HlR9LPBFpQinsVqvqc3G3x6UrAXxJRPaiNHzwdyLyZLxNcq0dQLuqWj3pZ1AKwDSYDWCPqnaq\najeA5wB8IeY2efGxiIwBgPLXA3E0ohEC708AxotIq4h8BqWB3N/E3Ka6RERQGkvaoaoPxd0et1T1\nXlUdp6otKP2u/1tVU9HTUNW/AvhQRCaUH5oFYHuMTfJiH4ArRKS5/P+dWUjJhEvZbwB8tfz9VwH8\nOo5GpP5G3KraIyLfBPAKSjNXq1T1zzE3y40rAdwKYKuIbCk/tkxVfxtjm7LgXwCsLv/juBvAbTG3\nxxVV3SQizwB4G6UZ/neQgK1a1YjIGgDXABglIu0A7gfwIICnReQfUToi7uZY2satZUSUFY1Q0hIR\nucLAI6LMYOARUWYw8IgoMxh4RJQZDDwiygwGHhFlxv8HjX6IfV9OBp8AAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10b9f4eb8>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"epoch=11000, loss=2.001847267150879\n",
"epoch=12000, loss=1.9321744441986084\n",
"epoch=13000, loss=1.7556941509246826\n",
"epoch=14000, loss=1.5743131637573242\n",
"epoch=15000, loss=1.3681771755218506\n",
"epoch=16000, loss=1.193957805633545\n",
"epoch=17000, loss=1.139652967453003\n",
"epoch=18000, loss=1.0215452909469604\n",
"epoch=19000, loss=1.0091431140899658\n",
"epoch=20000, loss=0.9863891005516052\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10b35bba8>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"epoch=21000, loss=0.8752180337905884\n",
"epoch=22000, loss=0.86528480052948\n",
"epoch=23000, loss=0.8038061261177063\n",
"epoch=24000, loss=0.7847016453742981\n",
"epoch=25000, loss=0.7540460824966431\n",
"epoch=26000, loss=0.7160094380378723\n",
"epoch=27000, loss=0.6847584247589111\n",
"epoch=28000, loss=0.6442784667015076\n",
"epoch=29000, loss=0.6994226574897766\n",
"epoch=30000, loss=0.7081389427185059\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10bf8e4a8>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"epoch=31000, loss=0.665640115737915\n",
"epoch=32000, loss=0.6675183773040771\n",
"epoch=33000, loss=0.6595953702926636\n",
"epoch=34000, loss=0.6120516061782837\n",
"epoch=35000, loss=0.6155518293380737\n",
"epoch=36000, loss=0.6090721487998962\n",
"epoch=37000, loss=0.6442124247550964\n",
"epoch=38000, loss=0.6256004571914673\n",
"epoch=39000, loss=0.5959101319313049\n",
"epoch=40000, loss=0.6226564049720764\n"
]
},
{
"data": {
"image/png": "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\nGkc/R7DREwAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10c1ce710>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"epoch=41000, loss=0.6222885251045227\n",
"epoch=42000, loss=0.5961275100708008\n",
"epoch=43000, loss=0.6078194975852966\n",
"epoch=44000, loss=0.5783437490463257\n",
"epoch=45000, loss=0.5719038844108582\n",
"epoch=46000, loss=0.5930940508842468\n",
"epoch=47000, loss=0.5737977027893066\n",
"epoch=48000, loss=0.5682644248008728\n",
"epoch=49000, loss=0.5548349618911743\n",
"epoch=50000, loss=0.5370006561279297\n"
]
},
{
"data": {
"image/png": "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\nrkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10c0cd780>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"epoch=51000, loss=0.5493415594100952\n",
"epoch=52000, loss=0.5419579744338989\n",
"epoch=53000, loss=0.5405133366584778\n",
"epoch=54000, loss=0.5426663756370544\n",
"epoch=55000, loss=0.531787633895874\n",
"epoch=56000, loss=0.5497375726699829\n",
"epoch=57000, loss=0.5347996950149536\n",
"epoch=58000, loss=0.5381063222885132\n",
"epoch=59000, loss=0.49506258964538574\n",
"epoch=60000, loss=0.4922448694705963\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10c3248d0>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"epoch=61000, loss=0.5111017823219299\n",
"epoch=62000, loss=0.500586211681366\n",
"epoch=63000, loss=0.5040217638015747\n",
"epoch=64000, loss=0.5039775371551514\n",
"epoch=65000, loss=0.4869287312030792\n",
"epoch=66000, loss=0.49210983514785767\n",
"epoch=67000, loss=0.5162792205810547\n",
"epoch=68000, loss=0.5087706446647644\n",
"epoch=69000, loss=0.49685966968536377\n",
"epoch=70000, loss=0.483656644821167\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10c2824a8>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"epoch=71000, loss=0.4990684986114502\n",
"epoch=72000, loss=0.4868820905685425\n",
"epoch=73000, loss=0.47061997652053833\n",
"epoch=74000, loss=0.482888400554657\n",
"epoch=75000, loss=0.49680575728416443\n",
"epoch=76000, loss=0.49500730633735657\n",
"epoch=77000, loss=0.4855635166168213\n",
"epoch=78000, loss=0.49255508184432983\n",
"epoch=79000, loss=0.5036917328834534\n",
"epoch=80000, loss=0.5041812658309937\n"
]
},
{
"data": {
"image/png": "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\nNVJkAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10c39e3c8>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"epoch=81000, loss=0.5055104494094849\n",
"epoch=82000, loss=0.5007817149162292\n",
"epoch=83000, loss=0.47791537642478943\n",
"epoch=84000, loss=0.48685455322265625\n",
"epoch=85000, loss=0.4642658829689026\n",
"epoch=86000, loss=0.47821861505508423\n",
"epoch=87000, loss=0.5052059888839722\n",
"epoch=88000, loss=0.5013373494148254\n",
"epoch=89000, loss=0.48423299193382263\n",
"epoch=90000, loss=0.4594705104827881\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAATwAAAEyCAYAAABnD2x2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X10VOW9L/DvjyR1QBJFTDUXiqHeFAzBBBONoPYUUYRK\neDGWC2rtQq1d9lrFxW1BjpUuj8dTT0sXx1tbrwKe3iVCEXwhUDBqtW9KaiLhBgIs5EVMiBrg5E0y\nZQK/+8eemcxM9szsmdmTyWR/P2uxkkwmez/Jqt8++3n5PaKqICJygiGpbgARUX9h4BGRYzDwiMgx\nGHhE5BgMPCJyDAYeETkGA4+IHIOBR0SOwcAjIsfI7M+bXXzxxZqfn9+ftyQiB6irqzuhqrnR3tev\ngZefn4/a2tr+vCUROYCIfGLlfXykJSLHYOARkWMw8IjIMfp1DM+Mx+NBU1MT3G53qpsyKLhcLowe\nPRpZWVmpbgrRgJPywGtqakJ2djby8/MhIqluTlpTVZw8eRJNTU0YO3ZsqptDZB93B7BnM1BUCbhy\n4r5Myh9p3W43Ro4cybCzgYhg5MiR7C3T4LNnM7B1sfExASnv4QFg2NmIf0uKi009qKQpqgz+GKeU\n9/CIaACwqQeVNK4coGxRwmHs+MCbOnUq3nzzzaDXVq1ahQceeMD/ucvlQnt7u//77733Hi644AKU\nlJT4/7399tv92m4iWxVVArNWJdyDGugcH3gLFy7Ehg0bgl7bsGEDFi5cCABYv349rr76arz66qtB\n77nhhhtQX1/v/3fTTTf1W5uJbGdTD2qgc3zg3X777di2bRvOnDkDADh69CiOHz+OG264AYcOHUJX\nVxeefPJJrF+/PsUtJRoA3B1A7YvGxzSUloHX6fbg5Zpj6HR7Er7WRRddhGuuuQbbt28HYPTu5s+f\nDxHBhg0bsGDBAtxwww04cOAAPv/8c//P/eUvfwl6pD106FDCbSEa8Ab6WF8UaRl4VbtbsPy1BlTt\nbrHleoGPtaGPswsWLMCQIUNQWVmJV155xf8zoY+0l19+uS1tIRrQ0nysb0AsS4lVRXFe0MdEzZkz\nB4888gg++ugjnD59GqWlpWhoaMDBgwdx8803AwDOnDmDsWPH4sEHH7TlnkRpyTfWl6bSsoeX7crC\nHeVjkO2yZ/vU8OHDMXXqVNxzzz1Bvbuf/exnOHr0qH9c7/jx4/jkE0tVaIion3S6PRgy7MKLrbw3\nLQMvGRYuXIjdu3f7A2/Dhg2YN29e0HvmzZvnf/QNHcPbtGlTv7eZiIwhrsyciy+z8t60fKRNhrlz\n50JV/V8fPny4z3t+9atf+T8PXJdHRKlTUZyHno4T9hQAFZG1IvKFiOwJeO0iEXlLRA56P45IpMFE\nRPHKdmXh3Om2E1bea+WR9j8BzAh5bRmAd1S1AMA73q+JaDBL8zV4gIXAU9U/AzgV8vIcAL/zfv47\nAHNtbhcRpUq4YEvzNXhA/GN4l6iqbxHcZwAusak9RJRqvmADgpeg2FSxJCY2V3FJeJZWjZF+Dfd9\nEblfRGpFpLa1tTXR2xFRsoVbXOzKQWfRXXh5d1tMu5zC7oyy8ohsc68y3sD7XETyAMD78Ytwb1TV\n51W1TFXLcnOjHhtJRP0kbBBFKCQQzy4n38/89PW9wfeyEmY27+yIN/C2APie9/PvAXjDltakSEZG\nBkpKSlBUVISKigq0tbXFfa38/HycONF3wig/Px8TJ07ExIkTUVhYiMceeyxqZeK2tjb85je/ibst\nRJHEE14VxXl4at7EmHY5VRTnYW7JKLxe3xx8LythZqWKi7sDl5wvlhYeQ1Uj/gOwHkALAA+AJgD3\nAhgJY3b2IIC3AVwU7TqqitLSUg3V2NjY57X+dv755/s/v/vuu/XJJ5+M+1qXXXaZtra2Rny9s7NT\nFy5cqHfffXfEax05ckQnTJgQcxsGwt+UBr6O7jO6bucn2tF9Jr3v9eFaLc0bomohg6zM0i5U1TxV\nzVLV0aq6RlVPquo0VS1Q1ZtUNXQWN21NnjwZzc3N/q9/8Ytf4Oqrr8aVV16JFStW+F+fO3cuSktL\nMWHCBDz//PMx3WP48OF47rnn8Prrr+PUqVPo6urCtGnTcNVVV2HixIl44w2jw7xs2TIcOnQIJSUl\n+PGPfxz2fUTxsHuLpq33imUJTFElmjrU2p5PK6lo1z/benjd7aofrjU+2sDXw+vp6dHbb79dt2/f\nrqqqb775pn7/+9/Xc+fO6dmzZ/XWW2/VP/3pT6qqevLkSVVVPX36tE6YMEFPnDihqtZ6eD7FxcW6\nc+dO9Xg82t5u/C6tra16+eWX67lz5/r08MK9LxR7eJT2PlyruiLH+GgBgFq1kEHpubUs3LR5nLq7\nu1FSUoLm5mZcccUV/gop1dXVqK6uxqRJkwAAXV1dOHjwIL75zW/imWeewWuvvQYA+PTTT3Hw4EGM\nHDkypvuqdyubqmL58uX485//jCFDhqC5uTmo9l7g+83ed+mllyby6xMNPElaApOegWfzH2Po0KGo\nr6/H6dOnccstt+DZZ5/FQw89BFXFo48+ih/84AdB73/vvffw9ttv44MPPsCwYcPwrW99K+ajETs7\nO3H06FF84xvfwLp169Da2oq6ujpkZWUhPz/f9HpW30eU9pJUhio9q6Ukqf7+sGHD8Mwzz2DlypXo\n6enBLbfcgrVr16KrqwsA0NzcjC+++ALt7e0YMWIEhg0bhv3792Pnzp0x3aerqws//OEPMXfuXIwY\nMQLt7e346le/iqysLLz77rv+ElTZ2dno7Oz0/1y49xGRNenZw0uiSZMm4corr8T69evx3e9+F/v2\n7cPkyZMBGJMNL730EmbMmIHnnnsOV1xxBcaNG4drr73W0rWnTp0KVcW5c+cwb948/PSnPwUA3Hnn\nnaioqMDEiRNRVlaG8ePHAwBGjhyJ6667DkVFRZg5cyaWLl1q+j6i/tTp9qBqdwsqivP6ZcLDTuIb\nR+oPZWVlWltbG/Tavn37cMUVV/RbG5yAf1NKppdrjmH5aw14at5E3FE+JrGLRdk6ZjVcRaROVcui\n3Y49PCKKSdgjFuLZ9xplAtK3OBpA4uEKBh4RAehsP4XG6hdROH0Rss/LjBhcvjV1fcSzeiLKBKTd\n59cMiEmL/nysHuz4t6R4NFa/iPK9T6Cx+sW+e1wjLAIO2o8bz75X7wRkJ4aa7usNWrBsQz2+lPfw\nXC4XTp48iZEjR0JEUt2ctKaqOHnyJFwuV6qbQgOZuwOoX2fUOJp0J+DKQeH0RagBUDh9EXCeNxZ8\nwRWh59bnkTNCzy7SeNwrtU14Ymsj3J6zuOf6seYXsGH9bcoDb/To0WhqagJLR9nD5XJh9OjRqW4G\npUCkQAn63p7NwA5vkfIsF1C2CNkXXITy7yzp/QGLdfBieeRMeDwuXDtiKB6Q8sDLysrC2LFhEp2I\nrHF3oLHqBTxVNwZAeZ9ACQqb4kqgx2308EzCo8/4XeAi4JDvhx3PMxEpHL9TNhqurIyYxup8IX6b\nVmN0jlg6tWxAjOERUYL2bEb53iewpvSYaWgElXVy5QDXPgBMfqDvpITvsXHbkt6xMt/YWXuz8Xq0\nGnbuDrh3rsbGvzYGjckFjscFjf25O5C95yXcUXxh5HV9IWOLvhDf0jPFcvGAlPfwiCgKK8s9vD21\n8qJKwCQ0Qnti4R5/OwvmoDXvLXy9YSNw2RSjZ+cLmonzgYaNxkeziQlfOz1uuN5chl2ee9GTtdi0\nBxjU48x4p+/YnNnvHPJI6wv2mcV5+PxLtXRqGQOPaKCzMlgf497TcONpVfu78NSReVhTWmqEJ9Ab\nNAXTjRAMF7z164yxwWk/g3vGSkzqmYKZxXmm4RX8eGsyNmf2O/t+R2+PM7uoMuaxQAYe0UBntVhG\nDAt/w42nGV+Xo7B4bm9PMTBMA0M19H6+FVGZLriuvQ/zfe+rfalPeAX3OLP69uwKpodf4mIShhli\nbXiOgUc00FntvXmDwN1zFq/K9PDbsdwdyN6zGRXj5/R5rPUHkbvDCKpI4RkaPJPuNGZ9Q0Mqwuxq\nn4D2XXPWqvC/s8n1Lh4mF4X7swRi4BENYDFt1PcGwBZ3OZZvjbD8wxsqjRNO4am6Mbj82DGUV3w/\nONisPEaHBk+4YA73ullAW+nNmlzvxGlrVdcZeEQDWExr17xBMNPtQU/W8PBLPLxhUlgwB2tg7LDA\n2ItiP4M2Ws8z0iO2uwPwuIEZP8eWninBAV1UGfOe3LOKc1bex8AjGsDi2UuajW7cptXYUjsFM8sK\n+vYMvUGVDRg9u7EXmZ5BG9duhsCQ8/USPe7eR93AR9c3lwGzVmFmSUFwQNtc0TwQA49oAItlYW/g\nQlzXjiURl4X4JVJZOHCC4WB1cMgBvSHa4+4bYN7vdRYEjCOi2xg3jDRhYfL7xvJ/Bgw8okHC9/ib\nOWsKZgcuCwlkYSbX8rhh6Po8GAHWOOEUCsfcaGxh84VWZshkhisHnUV3YdnmBmxraDH20LreA7Yu\nRs2Ex1FY8VDUMcvAx32rGHhEg0TgQlyXq7B3WUggC4+LlscNC6YbYXfD//Kvz6va3YbldePxe2wy\nxgZ99wlT625bQ/DB3DVHTuHeujFYPqYlas82nsd9Bh7RIJGNbmPXAioBhOkdWZiMsBwkB6uBho04\nfOJL5C74NbJdOagoHgoAKBw/2XRssNPtwSu1TQCAmUWX4vFZhQCMvbRwZWHMzT/ETWcPYOq43Mj3\nRmyP+z4MPKLBwrfTocdt7JU1Y2HMznKQFFXicN1b+HrLNtRUl6L8O0uCfzZMr+6JrY1GU7Iy+pSC\nevdAK16vb8Y1Yy+ypcJxKAYe0WChAR+jLQmJcdlHS1s3nt5xAEtnjEPehUYvDq4c5C74NWqqS406\nehZUFOfB7Tnr/9zs+2bfCxpXRHfspeS9GHhEg0XgTgezsTpf0PW4e+vhWZyhfXrHAbxe3wwAWLWg\nBIA3hPZ3ocLCBINPtisrfIFPhC9y4Pac9fcMTYsNWMTyUESDReB5zWbl1n0hqIi87MOklPrSGeMw\nt2QUls4Y53/NN7lRtbulzyV85Z9a2rpNS7dbFTiB4i9vFU8peS/28IgGI7OxusAJi0iPgqG9Q3cH\n8j7ejFVzKwHXUP/bIk1u+IJqbskof88w4phcmMfswHv4e5Hu7vDXiYKBR+QUVhcZh87khlnKEmly\no6I4D5meLkzXv2LK6Ov7rgcMFeYRPHvPZqNCszfsOt0eNFa9YCx5CdzBYREfaYkcJKjScDjeRcEv\n724zP40sTEXjIP/oRNneJ3HhOz/GfFdN9DE+35q+gum9r4Wengaj53hv3RjUTHgcEESvvhyCPTwi\np4hy7kWgiKeR7dns37rWhR+ZTkI0Vr+I8pZtOJx3K74eEJRmj62dbg8aqzegfG9AlWXAdM1gUL0+\ndBs7OAqmWz7Ehz08osEqdPIhzLkXoedLoPZFVIwf3jtJEKqoEn8b/xiqzk4Oe9/iS89D7filyF3w\n67617kJ6ZL5e2+8vXYLOgjm93wichPEKOqfW9/2D1g/xYQ+PaLAKHRcLc+6F2fkS2bOAO8rDVze+\ncu5iLB9rvnHfXb8Rrnf+GcUTbkfWeQERE2aXR0VxHv5+pABL64fh7P4u3FFuqZZn0HWbOu7lIT5E\njhMYTEWVcPecxRZ3OWa6Pcg2m7Rwd+A2rUbmLF+hgYCfaT+F7INvGAUBql8M2hsbacJiS88UZPZc\nh9v2bgLGXt/3TIoQ2ejGz/NrMWX0FNwwLhcv1xyzVvA04Pe1WgCUj7REg0Sn24Oaqhd6HxtdOXhV\npuOJrXvRWPVM0Lo6P+94nH9iwfszP9l6BI3VLxqVkatf7J0oCOydmazXA4CZZQXomfFLuGesRGfB\nnOiTJAFtePdAa9i1fWbc9RuBrYtx8flD0uMgbiKKT2gZp6rdLXiqbgzWlD7uP3GsojjPKOFuVtUY\niDAx0FsAoLBgDpaP6Qo+2AcAdq0zinh63MYZt4B/Kcn8skrAdR9erTkWcAD4heZbwgJORbtt3/aA\n3mZ0W3qmYJfnXpzStZben1APT0QeEZG9IrJHRNaLiCuR6xFReKFLSkJ3OlQU52H5vHIUVjzkD5Rs\nV5ZR1XjWKmPJR0CPrNPtMZaeFN1lPjFwgTcgz8s2b5D0fvS1zdfj8k1MBB0A7h1TrKl6IbjH510G\nU1O9Aa4dSzA78328UtuEtX89EnWHxsyyAkycvRie052WzqWNO/BEZBSAhwCUqWoRgAwAC+K9HhEF\n62w/hZpXVqKz3RieMgu4x2cVwu05i063J3gGM1DAbGZgGPXZGuZ7RG1vDgrGsFvISu6Ee8ZKbOz5\nJ7xS24TlrzVgxaEr0DbtF3i1qwjunauNklW+NhVVombC47i3bkzwtdwdaKx6Bg/V5aJmwuPY0jMF\nT2xtxBNbG1G1u8V0FtnXNv9Yop7rlzMtMgEMFREPgGEAjid4PSLy8k0U1AAo/86SPlu5sl1ZcGVl\nYPlrDXBlZUQvpxTy+Npna5hJBWOULQq/hcyVYzxSbl+NwpsXYW7JKPy+vhn/yLgGQxv+L27LWgNk\nZqCz6C7/o3dhxUNYPiZkdte7XObnOd9CXfbjmFc0Fo9jqP+eZrPIvrbFTFXj/gfgYQBdAFoBrAvz\nnvsB1AKoHTNmjBKRNR1tJ3Xnxl9qR9vJ8O/pPqPrdn6iHd1nTL9//L9O68Prd+nx/zod/Ybd7aof\nrlVtazI+drdHvVf3By+orsjR7g9e8H//+H+d1s3v/l3PbLxHta1J1+38RC9bulXX7fwk7H3/vrJS\ndUWOLlv+iP8evo9B9/W1MbBt3e16yflyVK1klpU3mf4gMALAHwHkwiiv+jqAuyL9TGlpafQ/OhHZ\n5uH1u/SypVv14fW7Er7Wup2f6ISlG3Xnxl/2Bo5JAHV0nzHesyJH9cO12tF9Rtf85bCu+cvhsMH8\n8bFm/d//vlyf3V7rD7hoIem/74drtTRviKqF3ErkkfYmAEdUtRUARORVAFMAvJTANYnIRr5yToFl\nnWLlmw2eOi4Xl5eGzPiarK3zzRb/n5LHcLirDJ7aJvyj5yye3nEAAEy3otUc78EvT07BUyNyke3K\nwtRxuZhbMip8qfeQ09H6Y+HxMQDXisgwAN0ApsF4dCWiASLvwqH4l7kTsL32IGZnvg9XyfyYqwT7\nxtCemjcRd0xfAA8aUdVVhJvdHtPqw779rgc8Zf6inbdONFlmErBIOnScMGqp95BSV59/qZZmaeMO\nPFWtEZFNAD4C0ANgF4Dn470eESVH1e4WNGxfjfneSYTQHlmn2xMxEIPCaM9LyNq7CR96LoB76CWm\nkwi+mdPAJSUziy7Fdf/94t7JCncHsG2Jf3Iku2xRULCFBmCfoyPjPE83oVlaVV0BYEUi1yAie4WG\ng1Gb7j64MwvhMqkdFy0Qs11ZxqLhXauBHjfcN/0rJuFG/1Y0AKY16ULLuQf11PZsBho2wjPhdlR1\nFeHbO1cHhW3oCWyWj46MgjstiAYwy4diBwgNh2xXFuZfXwjAOBLR/yhZMB04WI2K8XMiBiIA4/1v\nGudguGatwvwy77WQFd/yEO99qrqKgLdXwJX5t6AlLLdpNVw7lhjvjbQ0JkYMPKIBLJ6eTdRwCFlv\nlz0LmH/9IvgDEehbu66o0thCJjCvMBzLKWkBX3+7fiNcmX+DZ8LtyCqq9P++mbOmYH5A0dGwxQq8\n1/pKRriDeIMx8IgGsHh6NlHPlS2qhLv7SzQea0XhTf9q9OpCQ8m3DezIKRROX4Tsg28Yp6L5wizM\n+wH07fGFfi/ga1fJfLhh7ImdiaGoGN+Dy0v3o3DiZOC8yujHMXr38465YMjXrPxtGHhEAeJ5hEwm\ny4dix8KVg92f/QPlB1eh5iuPo9yVY2zXCqmdV3PkFB6qy8X6Uw8iu2WbcbxjZphjIMPUugt6LeCj\nvwQVhqJKpmP51gb0ZA3HHRnv9C57AaLvqvDu5z3t0S+t/OoMPKIAdg2OJ4OdYVw4fRFqvB8B9A0l\nVw4KKx7CM3gGX9+7zXj8VQBbFxth1TMFs2es7B3z8z32BowN+ntmoTOq3hJUvpAL7sX2Dc7Ogjmo\nClcjr+ROINOFz5+4p9XSL25ldbJd/7jTgga6aFu1Unn9qLsPktGWgB0NHZ8f1UPPLdT1b31g3o4P\n1xq7K37/PePjB7+J794huzf6/N4muzsA1GqSd1oQDTpJeYQMkEgP0q6ZSp/ttQfRsH01Mj33eWdx\nTQT0zhqrXkB5yza0XDAJT837H33b4X1UbTz0Ka4CjB6hGZPjF4OEPC777jPVWw05dAY3Fqx4TNSP\ngurDhRHuKMWw5Z8iCVOVGABmZ76Pf8tag9mZ74e/t7sD2PlbuP/6axwZcR12fuPHKB09FHcUX2ja\njt2ftuOBhsvxt/GPYePZfzKvZxfmMB/f/Te6y+GesbLPDO32PZ9h+WsNeMVdHnxsZAzYwyPqR1Z6\nkLaOI0aYPXWVzAcyM4LW3vW5957NwI5lcAHY7bkXY0tGwfX2PwOu8/v2rnatQ/neJ/BsyVL8v9EL\n8cTWRv8YXdDYo9kEh3fWd7u7HD/ZegQ986bjjjAzs57M4fGt/QMDj2jAsfXRNcLsaSeGoursNFRg\nKHw1jfvcu6jS2F3RcxaTcCMuK7gYtWf/gSL3l3C5O4xr+MLMO2Nalj8C40pGw5WV0beeXfkY821h\n3mCePWMleuZNR8X44UbPNGBJynfKjGtODTjoBzBCGjLE0tMqA49ogLF1HDHCnlOznmSfe7tygGsf\ngAvAfAAv1xxDQ8MJlO1/GnCdj6qz03qv4Z0xRVFl0HUiBnjgro9Zq+AqqjR6dqHLZALa9nLAORkA\nsPy1BgwZmmPpbEcGHtEgEsvSlXh6kqH7cisCKhN3An16jFEF7vq4dWXvAuMIPVOzdt/57x08ppHI\nacKeP2EinkkQ375c17X3Aa6coGuEu3fENhVV9paUD5zE8PVMvQEYOJkSeM/+PtOCiAaQWHpttixk\njlDTzlKbXDlGz+6yKRFnXVkthYj6MBv/CxdsUUMkQkEA3zUD18SF1rSL1Kbg67ShoviuiKHLailE\nThapOkmIcMFmuaoKYFrG3ayqSaz81/F0Yb6rJuzvY9dEDgOPKB1Fqk4SIlywWamqEvTR5Jozi/MA\nl/kuDX/Pcvxwo9qK7zr164xdGJPu9F9ntlYDW+PbPRELBh5ROopUnSRELI+5QSIsaYllAfXlpfuN\nCig+O4xCoshy9T4Gu41F0PH2FK1i4BGlozjPdPAJ95jb6fbgldomAMZC30Sqsvh6b4XjJxvlnnxh\n1uM2eniB4Zbg72MVA49ooIthvM6qcI+5Vbtb/CeNubIy4ho3C+w9+n8+MMyufSC+RtuAgUc00MUw\nXmdVuEfSiuI8uD1n/Z/Hoz9rCvrClVvLiAaLGMbrYmLScww9aSwas7FAu8tYReILV6tby7jTgmig\nC9l1YBtfz3HbEtPyUUD4UlU+Zrso4ipjFSdfua1z3dxaRuQMEWreRRRuW1eAaFvVrNT3Sxp3B7L3\nvGScmcutZUQO4e2ptXV78LPma7B0xjjkXTg0+s9Z2NYV7vHUdGLCAlsPSQoc27SIPTyiNNdZMAc1\nEx7Hvxy5Aq/XN+PpHQes/3CYx2XfoyzgPcwb3UG9SKtFCkIfiWMpbhBVUWXMlY/ZwyNKc1X7u7C8\nbjyW3pKHuV/JxtIZ4xK/plnlY5NzJgJ7fma9t9DrmPYY4112E8faPQYeUZoLDBG7JgpMKx8HfDRb\n1hIYbr5Kx1PH5QaN8Zkuh0nCsptwxDjhrH+UlZVpbW1tv92PiPpPYA/PF35PzZsYfYzPhoXVIlKn\nqmXR3sceHhHZwnJZ90BJ2EUSCSctiCisaOvwwrG6Fs9dvxHYutj4mMD9rGLgEaWAnf9hJzMkbJ1V\nNbGlZwoe9dyLLT1T4rqffzaZW8uIBi6rhS9juRZg/95Vq7Ox8ZpZVoCerMVGXb0w94sk1q1lDDyi\nFLCz8GUy965Gm41NNGD913d3ALUvIbuoMqZr+n5nq6eWMfCIUqD3P/TEC1/ado6txQmEeAI2aq8w\nzqUpvt/9Tm4tI0oD/VT40hJf6HzyfvAZsSHiCdjttQfRsH01Mj33Yf71JiXhk1URJkRCkxYicqGI\nbBKR/SKyT0Qm29UwIupnFooJxGt25vv4t6w1mJ35vvkbklURJkSiPbz/ALBDVW8Xka8AGGZDm4go\nFSyeERvXpUuMR3dXkntw0cTdwxORCwB8E8AaAFDVM6raZlfDiCgFktXTilKkIFnr7kIl8kg7FkAr\ngBdFZJeIrBaR80PfJCL3i0itiNS2trYmcDsiSqVkhFOy1/mFSiTwMgFcBeC3qjoJwJcAloW+SVWf\nV9UyVS3Lzc1N4HZEDmNS2LO/e0SBkhFO/V1ANJExvCYATapa4/16E0wCj4jiZLJUoz8PyAlVUZyH\nTE+XsXbQPd+Wx17bltRYFHfgqepnIvKpiIxT1QMApgFotK9pRA5nslSjPw/ICZXtyjJ2hWxdYqwd\nHCjLaWKQ6CztjwCs887QHgaQfn8BooHKZI1ef/eI+uin9XLJklDgqWo9gKg1qIhokBhIC6XjwGop\nRINQS1s3Fm+oR0tbd6qbMqAw8IgGoad3HIj9QJ9+kMpZZoB7aYkGJd9BPgkf6GNzReJUzjIDDDyi\nQSnvwqFYtaAk8QvZfMBOKmeZAQYeEUVi86xsqmeZOYZHlEb6fQysn6qY9BcGHlEa6e+9p4MNH2mJ\n0kiqx8DSHQOPKI2kegws3fGRlogcg4FHRI7BwCMix2DgEZFjMPCIyDEYeETkGAw8InIMBh4ROQYD\nj4gcg4FHRI7BwCMix2DgEZFjMPCIyDEYeETkGAw8InIMBh4ROQYDj4gcg4FHRI7BwCMix2DgEZFj\nMPCIyDEYeETkGAw8Iuqj0+3ByzXH0On2pLoptmLgEVEfVbtbsPy1BlTtbkl1U2zFg7iJqI+K4ryg\nj4MFA4+I+sh2ZeGO8jGpbobt+EhLRI6RcOCJSIaI7BKRrXY0iIgoWezo4T0MYJ8N1yEiSqqEAk9E\nRgO4FcBhS/gqAAAHSUlEQVRqe5pDRJQ8ifbwVgH4CYBzNrSFiCip4g48EZkF4AtVrYvyvvtFpFZE\naltbW+O9HRFRwhLp4V0HYLaIHAWwAcCNIvJS6JtU9XlVLVPVstzc3ARuR0SUmLgDT1UfVdXRqpoP\nYAGAP6rqXba1jIjIZlyHR0SOYctOC1V9D8B7dlyLiChZ2MMjIsdg4BGRYzDwiMgxGHhE5BgMPCJy\nDAYeETkGA4+IHIOBR0SOwcAjIsdg4BGRYzDwiMgxGHhE5BgMPCJyDAYeETkGA4+IHIOBR0SOwcAj\nIsdg4BGRYzDwiMgxGHhE5BgMPCJyDAYeETkGA4+IHIOBR0SOwcAjIsdg4BGRYzDwiMgxGHhE5BgM\nPCJyDAYeETkGA4+IHIOBR0SOwcAjIsdg4BGRYzDwiMgxGHhE5BgMPCJyjLgDT0S+JiLvikijiOwV\nkYftbBgRkd0yE/jZHgBLVPUjEckGUCcib6lqo01tIyKyVdw9PFVtUdWPvJ93AtgHYJRdDSMispst\nY3gikg9gEoAak+/dLyK1IlLb2tpqx+2IiOKScOCJyHAAmwEsVtWO0O+r6vOqWqaqZbm5uYnejogo\nbgkFnohkwQi7dar6qj1NIiJKjkRmaQXAGgD7VPVX9jWJiCg5EunhXQfguwBuFJF6779v29QuIiLb\nxb0sRVX/CkBsbAsRUVJxpwUROQYDj4gcg4FHRI7BwCMix2DgEZFjMPCIyDEYeETkGAw8InIMBh4R\nOQYDj4gcg4FHRI7BwCMix2DgEZFjMPCIyDEYeETkGAw8InIMBh4ROQYDj4gcg4FHRI7BwCMix2Dg\nEZFjMPCIyDEYeETkGAw8InIMBh4ROQYDj4gcg4FHRI7BwCMix2DgEZFjMPCIyDEYeETkGAw8InIM\nBh4ROQYDj4gcg4FHRI7BwCMix0go8ERkhogcEJGPRWSZXY0iIkqGuANPRDIAPAtgJoBCAAtFpNCu\nhhER2S2RHt41AD5W1cOqegbABgBz7GkWEZH9Egm8UQA+Dfi6yftaEBG5X0RqRaS2tbU1gdsRESUm\n6ZMWqvq8qpapallubm6yb0dEFFYigdcM4GsBX4/2vkZENCAlEngfAigQkbEi8hUACwBssadZRET2\ny4z3B1W1R0QeBPAmgAwAa1V1r20tIyKyWdyBBwCq+gcAf7CpLUREScWdFkTkGAw8InIMBh4ROQYD\nj4gcg4FHRI7BwCMix2DgEZFjMPCIyDEYeETkGAw8InIMBh4ROQYDj4gcg4FHRI7BwCMix2DgEZFj\nMPCIyDEYeETkGKKq/XczkVYAnyTp8hcDOJGkaydburY9XdsNpG/b07XdQHLbfpmqRj0WsV8DL5lE\npFZVy1Ldjnika9vTtd1A+rY9XdsNDIy285GWiByDgUdEjjGYAu/5VDcgAena9nRtN5C+bU/XdgMD\noO2DZgyPiCiawdTDIyKKiIFHRI4xKAJPRGaIyAER+VhElqW6PVaIyNdE5F0RaRSRvSLycKrbFAsR\nyRCRXSKyNdVtiYWIXCgim0Rkv4jsE5HJqW6TVSLyiPd/K3tEZL2IuFLdJjMislZEvhCRPQGvXSQi\nb4nIQe/HEaloW9oHnohkAHgWwEwAhQAWikhhaltlSQ+AJapaCOBaAP8zTdrt8zCAfaluRBz+A8AO\nVR0PoBhp8juIyCgADwEoU9UiABkAFqS2VWH9J4AZIa8tA/COqhYAeMf7db9L+8ADcA2Aj1X1sKqe\nAbABwJwUtykqVW1R1Y+8n3fC+A9vVGpbZY2IjAZwK4DVqW5LLETkAgDfBLAGAFT1jKq2pbZVMckE\nMFREMgEMA3A8xe0xpap/BnAq5OU5AH7n/fx3AOb2a6O8BkPgjQLwacDXTUiT4PARkXwAkwDUpLYl\nlq0C8BMA51LdkBiNBdAK4EXv4/hqETk/1Y2yQlWbAfwSwDEALQDaVbU6ta2KySWq2uL9/DMAl6Si\nEYMh8NKaiAwHsBnAYlXtSHV7ohGRWQC+UNW6VLclDpkArgLwW1WdBOBLpOjRKlbeMa85MEL7vwE4\nX0TuSm2r4qPGWriUrIcbDIHXDOBrAV+P9r424IlIFoywW6eqr6a6PRZdB2C2iByFMXxwo4i8lNom\nWdYEoElVfT3pTTACMB3cBOCIqraqqgfAqwCmpLhNsfhcRPIAwPvxi1Q0YjAE3ocACkRkrIh8BcZA\n7pYUtykqEREYY0n7VPVXqW6PVar6qKqOVtV8GH/rP6pqWvQ0VPUzAJ+KyDjvS9MANKawSbE4BuBa\nERnm/d/ONKTJhIvXFgDf837+PQBvpKIRmam4qZ1UtUdEHgTwJoyZq7WqujfFzbLiOgDfBdAgIvXe\n15ar6h9S2CYn+BGAdd7/czwMYFGK22OJqtaIyCYAH8GY4d+FAbBVy4yIrAfwLQAXi0gTgBUAfg5g\no4jcC6NE3PyUtI1by4jIKQbDIy0RkSUMPCJyDAYeETkGA4+IHIOBR0SOwcAjIsdg4BGRY/x/7yYV\n7lTFnbcAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10b9f8668>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"epoch=91000, loss=0.48698335886001587\n",
"epoch=92000, loss=0.46511614322662354\n",
"epoch=93000, loss=0.4784753918647766\n",
"epoch=94000, loss=0.49094298481941223\n",
"epoch=95000, loss=0.4695647358894348\n",
"epoch=96000, loss=0.4995143413543701\n",
"epoch=97000, loss=0.4826538562774658\n",
"epoch=98000, loss=0.47525379061698914\n",
"epoch=99000, loss=0.487021267414093\n",
"epoch=100000, loss=0.5127369165420532\n"
]
},
{
"data": {
"image/png": "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\nR0S28f8BvqjZpclug/YAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10b517dd8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from itertools import chain\n",
"learning_rate = 0.0001\n",
"max_epoch = 100001\n",
"batch_size = 200\n",
"\n",
"encoder = Encoder()\n",
"decoder = Decoder()\n",
"\n",
"parameters = chain(encoder.parameters(), decoder.parameters())\n",
"optimizer = optim.Adam(parameters,lr=learning_rate)\n",
"\n",
"for epoch in range(max_epoch):\n",
" optimizer.zero_grad()\n",
" x = Variable(sample_real(batch_size))\n",
" mu, std = encoder(x)\n",
" x_gen = decoder(mu,std)\n",
" loss_reconstruction = torch.mean((x_gen-x)**2)\n",
" D_kl = 0.5*torch.mean(mu**2 + std**2 - 1 - 2*torch.log(1e-10+torch.abs(std)))\n",
" loss = loss_reconstruction + D_kl\n",
" loss.backward()\n",
" optimizer.step()\n",
" if epoch%1000==0:\n",
" print('epoch={}, loss={}'.format(epoch,loss.data.numpy()[0]))\n",
" if epoch%10000==0:\n",
" plot_decoder()\n",
" plt.show()\n",
" \n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Conclusion\n",
"\n",
"I think neural network would be the new toy for stastistians, as a omiponent and versatile function. The success of VAE (and Reinfocement net) really has a deep root in statistics. Time to pick it up."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.1"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment