{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Notebook 18: Ising Configurations using Deep Boltzmann Machines" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Learning Goal\n", "The goal of this notebook is to teach readers how to generate examples using Deep Boltzmann Machines in the Paysage package. The reader should understand why generating new examples is much tougher than classifying, as well as become more acquainted with pre-training using DBMs.\n", "\n", "## Overview\n", "\n", "The goal of this notebook is to show how one can employ Generative Models to learn a variational approximation to the probability distribution used to draw thermal spin configurations in the 2D Ising model.\n", "\n", "The Hamiltonian for the classical Ising model is given by\n", "\n", "$$H = -J\\sum_{\\langle ij\\rangle}S_{i}S_j,\\qquad \\qquad S_j\\in\\{\\pm 1\\}$$\n", "\n", "where the lattice site indices $i,j$ run over all nearest neighbors of a $40\\times 40$ 2D square lattice, and $J$ is some arbitrary interaction energy scale. We adopt periodic boundary conditions. Onsager proved that this model undergoes a phase transition in the thermodynamic limit from an ordered ferromagnet with all spins aligned to a disordered phase at the critical temperature $T_c/J=2/\\log(1+\\sqrt{2})\\approx 2.26$. For any finite system size, this critical point is expanded to a critical region around $T_c$.\n", "\n", "In previous notebooks, we used our knowledge of the critical point at $T_c/J\\approx 2.26$ to label the spin configurations and study the problem of classifying the states according to their phase of matter. However, in more complicated models, where the precise position of $T_c$ is not known, one cannot label the states with such an accuracy, if at all. \n", "\n", "As we explained in Secs. XV and XVI of the review, generative models can be used to learn a variational approximation for the probability distribution that generated the data points. By using only the 2D spin configurations, we now want to train a deep Bernoulli Boltzmann machine, the fantasy particles of which are thermal Ising configurations. \n", "\n", "Unlike in previous studies of the Ising dataset, here we perform the analysis at a fixed temperature $T$. We can then apply our model at three different values $T=1.75,2.25,2.75$ in the ordered, critical and disordered regions, respectively." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Setting up Paysage\n", "\n", "In this notebook, we use an open-source python package for energy-based models, called [paysage](https://github.com/drckf/paysage). Paysage requires python>3.5; we recommend using the package with an [Anaconda](https://www.continuum.io/downloads) environment.\n", "\n", "To install paysage: \n", "\n", "* clone or download the [github repo](https://github.com/drckf/paysage)\n", "* activate an Anaconda3 environment\n", "* navigate to the directory which contains the paysage files\n", "* and execute\n", "\n", "pip install .\n", "\n", "\n", "Documentation for paysage is available under [https://github.com/drckf/paysage/tree/master/docs](https://github.com/drckf/paysage/tree/master/docs).\n", "\n", "### Paysage on GPUs\n", "\n", "By default, computations in paysage are performed using numpy/numexpr/numba on the CPU. Since the coputation below on the Ising dataset is more intensive compared to MNIST, we want to make use of a GPU speedup.\n", "\n", "Not all laptops have GPUs available for computaion, but large computing facilities, such as supercomputing clusters, do. If you do not have access to a GPU, you can still run the code below with parameters corresponding to those used to generate the figurs in Sec. XVI F, but prepare for larger waiting times. As discussed in the main text, energy-based models rely on Monte-Carlo inspired methods rather than backpropagation. For this reason, they tend to be more computationally expensive than generative models.\n", "\n", "To make use of GPU power, you need to install [PyTorch](https://pytorch.org), and switch to the pytorch backend by changing the setting in paysage/backends/config.json to pytorch. \n", "\n", "Let us set up the required packages for this notebook by importing the relevant paysage modules." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Loading the Required Packages" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Running paysage with the python backend on the cpu\n" ] } ], "source": [ "import os\n", "import pickle\n", "import numpy as np\n", "\n", "# for plotting\n", "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "import matplotlib.gridspec as gs\n", "import matplotlib.cm as cm\n", "import seaborn as sns\n", "import ml_style as style\n", "import matplotlib as mpl\n", "\n", "mpl.rcParams.update(style.style)\n", "\n", "# for Boltzmann machines\n", "from paysage import preprocess as pre\n", "from paysage.layers import BernoulliLayer, GaussianLayer\n", "from paysage.models import BoltzmannMachine\n", "from paysage import batch\n", "from paysage import fit\n", "from paysage import optimizers\n", "from paysage import samplers\n", "from paysage import backends as be\n", "from paysage import schedules\n", "from paysage import penalties as pen\n", "\n", "# fix random seed to ensure deterministic behavior\n", "be.set_seed(137)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Loading the Data\n", "\n", "To load the Ising data set, we use two functions: unpack_data() loads the Ising configurations from a pickled file, and casts them in a suitable shape. \n", "\n", "The function Load_Ising_Dataset() loads the data for three fixed temperatures (see file names) out of the temperature set T, corresponding to the ordered, critial and disordered phases. These three datasets are then shuffled and returned in the form of a dictionary." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def unpack_data(path_to_data, data_name):\n", " \"\"\"\n", " Get the data from a pickled file.\n", "\n", " Args:\n", " path_to_data (str)\n", " data_name (str)\n", "\n", " Returns:\n", " numpy.ndarray\n", "\n", " \"\"\"\n", " # this file contains 16*10000 samples taken in T=np.arange(0.25,4.0001,0.25)\n", " # pickle reads the file and returns the Python object (1D array, compressed bits)\n", " with open(os.path.join(path_to_data, data_name), 'rb') as infile:\n", " data = pickle.load(infile)\n", " # Decompress array and reshape for convenience\n", " data = np.unpackbits(data).reshape(-1, 1600).astype('int')\n", " return data\n", "\n", "\n", "def Load_Ising_Dataset():\n", " \"\"\"\n", " Loads the Ising dataset.\n", "\n", " Args:\n", " None\n", "\n", " Returns:\n", " dict[numpy.ndarray]\n", "\n", " \"\"\"\n", " L=40 # linear system size\n", " T=np.linspace(0.25,4.0,16) # temperatures\n", " T_c=2.26 # critical temperature in the TD limit\n", "\n", " # path to data directory\n", " path_to_data = 'IsingData'\n", " #path_to_data=os.path.expanduser('~')+'/Dropbox/MachineLearningReview/Datasets/isingMC/'\n", "\n", " # ordered states\n", " data_name_ordered = \"Ising2DFM_reSample_L40_T=1.75.pkl\"\n", " X_ordered = unpack_data(path_to_data,data_name_ordered)\n", " # critical states\n", " data_name_critical = \"Ising2DFM_reSample_L40_T=2.25.pkl\"\n", " X_critical = unpack_data(path_to_data,data_name_critical)\n", " # disordered states\n", " data_name_disordered = \"Ising2DFM_reSample_L40_T=2.75.pkl\"\n", " X_disordered = unpack_data(path_to_data,data_name_disordered)\n", "\n", " # shuffle data\n", " np.random.shuffle(X_ordered)\n", " np.random.shuffle(X_critical)\n", " np.random.shuffle(X_disordered)\n", "\n", " return {'ordered': X_ordered, 'critical': X_critical, 'disordered': X_disordered}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Define Auxiliary Functions\n", "\n", "To help set up the numerical experiment, we make use of the functions we defined in the notebook __NB_CXVI_RBM_mnist__. Since their functionality is explained in detail there and in Sec. XVI E of the review, we simply state the code here." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def ADAM_optimizer(initial, coefficient):\n", " \"\"\"\n", " Convenience function to set up an ADAM optimizer.\n", "\n", " Args:\n", " initial (float): learning rate to start with\n", " coefficient (float): coefficient that determines the rate of\n", " learning rate decay (larger -> faster decay)\n", "\n", " Returns:\n", " ADAM\n", "\n", " \"\"\"\n", " # define learning rate attenuation schedule\n", " learning_rate = schedules.PowerLawDecay(initial=initial, coefficient=coefficient)\n", " return optimizers.ADAM(stepsize=learning_rate)\n", "\n", "\n", "def train_model(model, data, num_epochs, monte_carlo_steps):\n", " \"\"\"\n", " Train a model.\n", "\n", " Args:\n", " model (BoltzmannMachine)\n", " data (Batch)\n", " num_epochs (int)\n", " monte_carlo_steps (int)\n", "\n", " Returns:\n", " None\n", "\n", " \"\"\"\n", " is_deep = model.num_layers > 2\n", " model.initialize(data,method='glorot_normal')\n", " opt = ADAM_optimizer(initial,coefficient)\n", " if is_deep:\n", " print(\"layerwise pretraining\")\n", " pretrainer=fit.LayerwisePretrain(model,data)\n", " pretrainer.train(opt, num_epochs, method=fit.pcd, mcsteps=monte_carlo_steps, init_method=\"glorot_normal\")\n", " # reset the optimizer using a lower learning rate\n", " opt = ADAM_optimizer(initial/10.0, coefficient)\n", " print(\"use persistent contrastive divergence to fit the model\")\n", " trainer=fit.SGD(model,data)\n", " trainer.train(opt,num_epochs,method=fit.pcd,mcsteps=monte_carlo_steps)\n", "\n", "\n", "def compute_reconstructions(model, data):\n", " \"\"\"\n", " Computes reconstructions of the input data.\n", " Input v -> h -> v' (one pass up one pass down)\n", "\n", " Args:\n", " model: a model\n", " data: a tensor of shape (num_samples, num_visible_units)\n", "\n", " Returns:\n", " tensor of shape (num_samples, num_visible_units)\n", "\n", " \"\"\"\n", " recons = model.compute_reconstructions(data).get_visible()\n", " return be.to_numpy_array(recons)\n", "\n", "\n", "def compute_fantasy_particles(model,num_fantasy,num_steps,mean_field=True):\n", " \"\"\"\n", " Draws samples from the model using Gibbs sampling Markov Chain Monte Carlo .\n", " Starts from randomly initialized points.\n", "\n", " Args:\n", " model: a model\n", " data: a tensor of shape (num_samples, num_visible_units)\n", " num_steps (int): the number of update steps\n", " mean_field (bool; optional): run a final mean field step to compute probabilities\n", "\n", " Returns:\n", " tensor of shape (num_samples, num_visible_units)\n", "\n", " \"\"\"\n", " schedule = schedules.Linear(initial=1.0, delta = 1 / (num_steps-1))\n", " fantasy = samplers.SequentialMC.generate_fantasy_state(model,\n", " num_fantasy,\n", " num_steps,\n", " schedule=schedule,\n", " beta_std=0.0,\n", " beta_momentum=0.0)\n", " if mean_field:\n", " fantasy = model.mean_field_iteration(1, fantasy)\n", " fantasy_particles = fantasy.get_visible() \n", " return be.to_numpy_array(fantasy_particles)\n", "\n", "\n", "def plot_image_grid(image_array, shape, vmin=0, vmax=1, cmap=cm.gray_r,\n", " row_titles=None, filename=None):\n", " \"\"\"\n", " Plot a grid of images.\n", "\n", " Args:\n", " image_array (numpy.ndarray)\n", " shape (tuple)\n", " vmin (optional; float)\n", " vmax (optional; float)\n", " cmap (optional; colormap)\n", " row_titles (optional; List[str])\n", " filename (optional; str)\n", "\n", " Returns:\n", " None\n", "\n", " \"\"\"\n", " array = be.to_numpy_array(image_array)\n", " nrows, ncols = array.shape[:-1]\n", " f = plt.figure(figsize=(2*ncols, 2*nrows))\n", " grid = gs.GridSpec(nrows, ncols)\n", " axes = [[plt.subplot(grid[i,j]) for j in range(ncols)] for i in range(nrows)]\n", " for i in range(nrows):\n", " for j in range(ncols):\n", " sns.heatmap(np.reshape(array[i][j], shape),\n", " ax=axes[i][j], cmap=cmap, cbar=False, vmin=vmin, vmax=vmax)\n", " axes[i][j].set(yticks=[])\n", " axes[i][j].set(xticks=[])\n", "\n", " if row_titles is not None:\n", " for i in range(nrows):\n", " axes[i][0].set_ylabel(row_titles[i], fontsize=36)\n", "\n", " plt.tight_layout()\n", " plt.show(f)\n", " if filename is not None:\n", " f.savefig(filename)\n", " plt.close(f)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Building and Training the Deep Boltzmann Machine for the Ising model\n", "\n", "To study this problem, we construct a deep Boltzmann machine with two hidden layers of $80$ and $8$ units each. We apply L1 normalization to all weights of the model. \n", "\n", "To train our DBM, we use ADAM-based Persistent Contrastive Divergence.\n", "\n", "More detailed explanations about how to use Paysage to construct (deep) generative models, can be found in notebook __NB_CXVI_RBM_mnist__, and Sec. XVI E of the review." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "training in the ordered phase\n", "layerwise pretraining\n", "training model 0\n", "\n", "Before training:\n", "-ReconstructionError: 1.416018\n", "-EnergyCoefficient: 0.312046\n", "-HeatCapacity: 0.093238\n", "-WeightSparsity: 0.332238\n", "-WeightSquare: 1.901263\n", "-KLDivergence: 1.418246\n", "-ReverseKLDivergence: 0.021467\n", "\n", "End of epoch 1: \n", "Time elapsed 2.392s\n", "-ReconstructionError: 1.379553\n", "-EnergyCoefficient: 0.307597\n", "-HeatCapacity: 0.057619\n", "-WeightSparsity: 0.332574\n", "-WeightSquare: 1.937900\n", "-KLDivergence: 1.417736\n", "-ReverseKLDivergence: 0.009967\n", "\n", "End of epoch 2: \n", "Time elapsed 2.006s\n", "-ReconstructionError: 1.378414\n", "-EnergyCoefficient: 0.307451\n", "-HeatCapacity: 0.057168\n", "-WeightSparsity: 0.332711\n", "-WeightSquare: 1.927264\n", "-KLDivergence: 1.417745\n", "-ReverseKLDivergence: 0.010077\n", "\n", "End of epoch 3: \n", "Time elapsed 2.223s\n", "-ReconstructionError: 1.376378\n", "-EnergyCoefficient: 0.307472\n", "-HeatCapacity: 0.055935\n", "-WeightSparsity: 0.332605\n", "-WeightSquare: 1.923876\n", "-KLDivergence: 1.417233\n", "-ReverseKLDivergence: 0.011251\n", "\n", "End of epoch 4: \n", "Time elapsed 2.024s\n", "-ReconstructionError: 1.373554\n", "-EnergyCoefficient: 0.307749\n", "-HeatCapacity: 0.053438\n", "-WeightSparsity: 0.332602\n", "-WeightSquare: 1.923925\n", "-KLDivergence: 1.417157\n", "-ReverseKLDivergence: 0.011339\n", "\n", "End of epoch 5: \n", "Time elapsed 2.067s\n", "-ReconstructionError: 1.373257\n", "-EnergyCoefficient: 0.307675\n", "-HeatCapacity: 0.049568\n", "-WeightSparsity: 0.332324\n", "-WeightSquare: 1.924588\n", "-KLDivergence: 1.416038\n", "-ReverseKLDivergence: 0.012267\n", "\n", "End of epoch 6: \n", "Time elapsed 2.271s\n", "-ReconstructionError: 1.373893\n", "-EnergyCoefficient: 0.307736\n", "-HeatCapacity: 0.051387\n", "-WeightSparsity: 0.331965\n", "-WeightSquare: 1.926347\n", "-KLDivergence: 1.417908\n", "-ReverseKLDivergence: 0.014040\n", "\n", "End of epoch 7: \n", "Time elapsed 2.151s\n", "-ReconstructionError: 1.372088\n", "-EnergyCoefficient: 0.307758\n", "-HeatCapacity: 0.050337\n", "-WeightSparsity: 0.331588\n", "-WeightSquare: 1.930513\n", "-KLDivergence: 1.418421\n", "-ReverseKLDivergence: 0.013712\n", "\n", "End of epoch 8: \n", "Time elapsed 1.969s\n", "-ReconstructionError: 1.372142\n", "-EnergyCoefficient: 0.307809\n", "-HeatCapacity: 0.048689\n", "-WeightSparsity: 0.331065\n", "-WeightSquare: 1.936446\n", "-KLDivergence: 1.417220\n", "-ReverseKLDivergence: 0.013795\n", "\n", "End of epoch 9: \n", "Time elapsed 1.957s\n", "-ReconstructionError: 1.370387\n", "-EnergyCoefficient: 0.307870\n", "-HeatCapacity: 0.062417\n", "-WeightSparsity: 0.330443\n", "-WeightSquare: 1.944099\n", "-KLDivergence: 1.417128\n", "-ReverseKLDivergence: 0.014291\n", "\n", "End of epoch 10: \n", "Time elapsed 1.941s\n", "-ReconstructionError: 1.369075\n", "-EnergyCoefficient: 0.307832\n", "-HeatCapacity: 0.046418\n", "-WeightSparsity: 0.329509\n", "-WeightSquare: 1.953275\n", "-KLDivergence: 1.417435\n", "-ReverseKLDivergence: 0.014749\n", "\n", "training model 1\n", "\n", "Before training:\n", "-ReconstructionError: 1.847496\n", "-EnergyCoefficient: 0.507495\n", "-HeatCapacity: 0.284584\n", "-WeightSparsity: 0.334511\n", "-WeightSquare: 1.689175\n", "-KLDivergence: 6.589260\n", "-ReverseKLDivergence: -0.200949\n", "\n", "End of epoch 1: \n", "Time elapsed 0.526s\n", "-ReconstructionError: 1.787965\n", "-EnergyCoefficient: 0.476779\n", "-HeatCapacity: 0.203586\n", "-WeightSparsity: 0.362549\n", "-WeightSquare: 1.765384\n", "-KLDivergence: 6.572429\n", "-ReverseKLDivergence: -0.221725\n", "\n", "End of epoch 2: \n", "Time elapsed 0.534s\n", "-ReconstructionError: 1.675233\n", "-EnergyCoefficient: 0.449412\n", "-HeatCapacity: 0.172845\n", "-WeightSparsity: 0.385844\n", "-WeightSquare: 2.007614\n", "-KLDivergence: 6.541926\n", "-ReverseKLDivergence: -0.214976\n", "\n", "End of epoch 3: \n", "Time elapsed 0.524s\n", "-ReconstructionError: 1.523965\n", "-EnergyCoefficient: 0.420117\n", "-HeatCapacity: 0.145816\n", "-WeightSparsity: 0.418526\n", "-WeightSquare: 2.423471\n", "-KLDivergence: 6.474742\n", "-ReverseKLDivergence: -0.185631\n", "\n", "End of epoch 4: \n", "Time elapsed 0.527s\n", "-ReconstructionError: 1.411560\n", "-EnergyCoefficient: 0.400275\n", "-HeatCapacity: 0.185296\n", "-WeightSparsity: 0.439076\n", "-WeightSquare: 2.874234\n", "-KLDivergence: 6.401207\n", "-ReverseKLDivergence: -0.165587\n", "\n", "End of epoch 5: \n", "Time elapsed 0.519s\n", "-ReconstructionError: 1.312838\n", "-EnergyCoefficient: 0.374927\n", "-HeatCapacity: 0.379550\n", "-WeightSparsity: 0.454840\n", "-WeightSquare: 3.360993\n", "-KLDivergence: 6.293105\n", "-ReverseKLDivergence: -0.151064\n", "\n", "End of epoch 6: \n", "Time elapsed 0.52s\n", "-ReconstructionError: 1.253359\n", "-EnergyCoefficient: 0.366056\n", "-HeatCapacity: 0.544755\n", "-WeightSparsity: 0.469570\n", "-WeightSquare: 3.819495\n", "-KLDivergence: 6.209590\n", "-ReverseKLDivergence: -0.185873\n", "\n", "End of epoch 7: \n", "Time elapsed 0.521s\n", "-ReconstructionError: 1.201659\n", "-EnergyCoefficient: 0.350541\n", "-HeatCapacity: 0.896285\n", "-WeightSparsity: 0.481907\n", "-WeightSquare: 4.346788\n", "-KLDivergence: 6.114139\n", "-ReverseKLDivergence: -0.190155\n", "\n", "End of epoch 8: \n", "Time elapsed 0.526s\n", "-ReconstructionError: 1.166295\n", "-EnergyCoefficient: 0.360977\n", "-HeatCapacity: 1.198606\n", "-WeightSparsity: 0.494238\n", "-WeightSquare: 4.820575\n", "-KLDivergence: 6.042021\n", "-ReverseKLDivergence: -0.212867\n", "\n", "End of epoch 9: \n", "Time elapsed 0.531s\n", "-ReconstructionError: 1.123683\n", "-EnergyCoefficient: 0.358994\n", "-HeatCapacity: 1.750758\n", "-WeightSparsity: 0.505190\n", "-WeightSquare: 5.354546\n", "-KLDivergence: 5.997106\n", "-ReverseKLDivergence: -0.221060\n", "\n", "End of epoch 10: \n", "Time elapsed 0.531s\n", "-ReconstructionError: 1.089719\n", "-EnergyCoefficient: 0.388677\n", "-HeatCapacity: 1.719922\n", "-WeightSparsity: 0.516168\n", "-WeightSquare: 5.806932\n", "-KLDivergence: 5.977907\n", "-ReverseKLDivergence: -0.232858\n", "\n", "use persistent contrastive divergence to fit the model\n", "Before training:\n", "-ReconstructionError: 1.384621\n", "-EnergyCoefficient: 0.307611\n", "-HeatCapacity: 0.021748\n", "-WeightSparsity: 0.329509\n", "-WeightSquare: 1.953275\n", "-KLDivergence: 1.417578\n", "-ReverseKLDivergence: 0.013598\n", "\n", "End of epoch 1: \n", "Time elapsed 1.627s\n", "-ReconstructionError: 1.375602\n", "-EnergyCoefficient: 0.307841\n", "-HeatCapacity: 0.014072\n", "-WeightSparsity: 0.330181\n", "-WeightSquare: 2.012930\n", "-KLDivergence: 1.418471\n", "-ReverseKLDivergence: 0.015064\n", "\n", "End of epoch 2: \n", "Time elapsed 1.611s\n", "-ReconstructionError: 1.373938\n", "-EnergyCoefficient: 0.307639\n", "-HeatCapacity: 0.011750\n", "-WeightSparsity: 0.330667\n", "-WeightSquare: 2.051635\n", "-KLDivergence: 1.418747\n", "-ReverseKLDivergence: 0.014487\n", "\n", "End of epoch 3: \n", "Time elapsed 1.612s\n", "-ReconstructionError: 1.369542\n", "-EnergyCoefficient: 0.307737\n", "-HeatCapacity: 0.009947\n", "-WeightSparsity: 0.330934\n", "-WeightSquare: 2.075672\n", "-KLDivergence: 1.418514\n", "-ReverseKLDivergence: 0.014764\n", "\n", "End of epoch 4: \n", "Time elapsed 1.605s\n", "-ReconstructionError: 1.367383\n", "-EnergyCoefficient: 0.307688\n", "-HeatCapacity: 0.009424\n", "-WeightSparsity: 0.331193\n", "-WeightSquare: 2.096537\n", "-KLDivergence: 1.418550\n", "-ReverseKLDivergence: 0.014307\n", "\n", "End of epoch 5: \n", "Time elapsed 1.601s\n", "-ReconstructionError: 1.365041\n", "-EnergyCoefficient: 0.307657\n", "-HeatCapacity: 0.010809\n", "-WeightSparsity: 0.331288\n", "-WeightSquare: 2.110878\n", "-KLDivergence: 1.418112\n", "-ReverseKLDivergence: 0.014794\n", "\n", "End of epoch 6: \n", "Time elapsed 1.839s\n", "-ReconstructionError: 1.363319\n", "-EnergyCoefficient: 0.307765\n", "-HeatCapacity: 0.014756\n", "-WeightSparsity: 0.331485\n", "-WeightSquare: 2.128010\n", "-KLDivergence: 1.418123\n", "-ReverseKLDivergence: 0.014296\n", "\n", "End of epoch 7: \n", "Time elapsed 1.789s\n", "-ReconstructionError: 1.363269\n", "-EnergyCoefficient: 0.307684\n", "-HeatCapacity: 0.012619\n", "-WeightSparsity: 0.331478\n", "-WeightSquare: 2.133768\n", "-KLDivergence: 1.418506\n", "-ReverseKLDivergence: 0.015521\n", "\n", "End of epoch 8: \n", "Time elapsed 1.764s\n", "-ReconstructionError: 1.361441\n", "-EnergyCoefficient: 0.307873\n", "-HeatCapacity: 0.011803\n", "-WeightSparsity: 0.331544\n", "-WeightSquare: 2.145938\n", "-KLDivergence: 1.418212\n", "-ReverseKLDivergence: 0.015166\n", "\n", "End of epoch 9: \n", "Time elapsed 1.827s\n", "-ReconstructionError: 1.359982\n", "-EnergyCoefficient: 0.307686\n", "-HeatCapacity: 0.012059\n", "-WeightSparsity: 0.331523\n", "-WeightSquare: 2.151562\n", "-KLDivergence: 1.419503\n", "-ReverseKLDivergence: 0.015737\n", "\n", "End of epoch 10: \n", "Time elapsed 1.838s\n", "-ReconstructionError: 1.358325\n", "-EnergyCoefficient: 0.307772\n", "-HeatCapacity: 0.012598\n", "-WeightSparsity: 0.331595\n", "-WeightSquare: 2.161634\n", "-KLDivergence: 1.418562\n", "-ReverseKLDivergence: 0.015386\n", "\n" ] }, { "data": { "image/png": "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\n+/Zt+eWXX7LLln6LCQAAAAAAMCtcL3g2NzdlOBxKt9uVpaUlaTabqnIvX76UO3fueJoGAAAAAADA\nO64XPPuly+qoAAAgAElEQVT7+7Kzs5O9ls61a9eyy4zT5hRryo/y5tZp6hov493qU/P5J5ETX3Vc\nSsSWgbnnM3o9j9wcccs6RN48+Oht+k7jXWNEq8SaGRq56/FUyd2Gdfw4zTotJfPQve3nzlva+TQq\nUvS0eix9mMZ1BSz3AU1fSo0NLW1fLPcey7o3dW1jm1tv1XEa2j5axknu54/8XCVY5g3N9xa5Totl\n/YpS6+Z4ede7s5zX6LWaNP/uba/quMh1d1L/XjXOLPOGZ52XSdyrzpI7b0T+TrawrP9X6rN4edc1\ntNyTtM8orl20lpaWzC9q1tfXPU0DAAAAAADgHdcLnitXrpjLttttT9MAAAAAAAB4x5WiVUcIZSRP\naLMl9CrVtoU2tDnVL2+blrQRb6pGXVtLetOtLOGfljBnjeht+jzn0pLWmDpeWyZHHdeHpS/eVA1L\nSoSmXm35yNRObb2R6XJW3ra8qVAadaXaaljC6TV90Y4N7fOA5d6j/QzedI9SaWqjLCnEVfcBDUtq\na+TxuZ9RxJ4aHJm+l6rXmzqTur94TSJtxJsya0mDsz7LavoTOVdbro9Jp/uk2ohOlznt+Kp6Nf8e\nJXdMW75n77N9Hb85tO1Y0uxK3SurymuPS80prgieO3fuyMbGhqnsF198wXbpAAAAAAAAAVwveBqN\nhqyursrGxoa8evUqq+wvv/ziXmgZAAAAAAAAzhSt3d1dERFpNpvS6XRERFTbpff7/dBweW9ImGXn\nglK7N0SutJ1qv2TIdKrNVF0lQhdzz2HEKuYakZ/bu8NGqdD+uq65UdGpN5bdFyJTckql1dV13XtD\n4L3916YWeHdH8oY5jyt1rZZiCYf3HKMVea8UyRsnlj5pRKZDpnjvj6XSVFPtVZVPlYlMb/KME895\n86bMlUxNzq3b0pc67rtVLNfZ6N+s80luSnb081OpdJNIlrTdUvcn79iKSPn0jvVRlt8ZqWNS9WpF\n/jb2ptxZfi9409O1XC94tra2TtKsjjv2yy+/qMqe14dWAAAAAACAaeN6wXPp0iUREbl9+7bMz8+r\ny7148UJ+/PFHT9MAAAAAAAB4x/WCp9lsys2bN+XLL7/MKtdut+Xp06fZ7Xl3b6gjhFcbwp8brlUq\n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\n+nRWu5a5LzK1UjtOc7/P8brqSA2cRHq6tU/ee0Kp9AatyGfZ3Dk08rnWO04sqd1ntRU5j3nvL5Z0\nLe/YTtUV+R1Gps1ry0dcj94Uee94KHUv9Z7PUqlnqb5E/n6qKj/++VNpn65dtEa9evVK9vb2kn//\n4x//KLu7u1HNAQAAAAAA4B33C57Xr19Lp9ORW7duSafTke++++7U49bW1uTSpUty//59ef36tbdZ\nAAAAAAAAvON+wbO1tSXdbleuXr0qw+FQms1m8tgbN25Ip9ORra0tGQwG3qYBAAAAAAAgInNv3rwx\nJ6B999138umnn5681BkMBtJoNM4s1+/3ZXd3V7766qus9hYWFk79d0vepXddgNLbZVa1EZ1DnZsb\nG5nnqj2vOVtLesdJqkxKybU4tO3ktq89xpPDGpnbXXXcOO3aKpcvX86u27vmROT5jMw19n5Xmrrq\nmk+110nOGjynjRXvOgsl1xvwXp+ee0/0OI0cD5b2LeOk5JyuUSr3f/xvKd77q3d9NO35jlz3KucZ\nJffeU3oNj9PaOU/zhqZMybWFItvJmU9Gn2U9v1+qjksp9bwZ3RfL3Bq5Nkvks9focd7nk6p2vdda\nlTrWutHyjmFNXSXvtVqpseKK4Pnll1/ei9jRvNwREWk2myfbqAMAAAAAAMDH9YLn7du3Uf0AAAAA\nAACAkWubdE8UzsHBQXYZb3pEqq7IrfEsWzhq+mJJXSmV6uNVVVd0ulvk1qeRaV0WkaHxqTLa0M1S\nKTXa1ICIsEbNVp9VZXLrPetvZ/17VduR35N2Pkx9B94tVCNDfKs+c05KxXHblrFRautWy3XrDef3\nzkHez+INxy8t9/NFXpOpa1BbRvuda/qiHfOWuSK3Te05Pg/jpK6Uo1yWc1hqzI6KfMauai8yvSTn\nvlNqTHqvj1Ll6/gtVtWO5br0Pq+kyueME019XpOYj0ql0o3Sjg1NXZY5yPIcp+WK4Ll06ZL83//9\nX3a5/f19WVxc9DQNAAAAAACAd1wveNrttqytrclf//pXdZl+vy93796VmzdvepoGAAAAAADAO64U\nrZWVFdne3pbPP/9cfve738l//Md/VB6/u7srGxsbsrS0JJ9++ml2e7mhZyVX5Y9Mf8r9XN5dLUqm\neEWu9G9dUT7FGzI5KjJE0Bt+WlVXbvpg5Pj1jlPt38brtYS2llpt35KeoL1Wvddaqi5tCL0m1cSy\n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\nbt26JVeuXJFWqyVLS0sf/L3UquiWsHNNXZG7YkSGGWt504siU0UieFO3IkNWtWPD0r6mnciwSMt5\nLfUZRfy7aHmv20mkAo6ypGamjotM+YtMS6wqrx3n2nGSqicyBXf8b5GpxpYUp1L3FE2/vPcXb1+s\nKZ+p+sZFplKl2oxO2cstb5kDctsb501nPQ+83603DaLU3F8q1dibDq29h5dO2UuJTMuKfOaKvKek\nynifHSznxZu2H5luliN3Ho9+FrSMh9zjvM/bXudpbtT+5nG/4Ol2u94qTjSbTVlbWwurDwAAAAAA\nYBaErMEzGAze+9/jET0PHz6UZ8+eyeHhoVy/fl1u3rwpn376aUTTAAAAAAAAM8/9gqfT6cje3p6I\n/BqBs7S0JOvr67K4uCiDwUC++uorOTg4kKtXr0q73RYRkT/84Q/S6/Xk97//vbd5AAAAAACAmed+\nwfP1119Lv9+Xr7/++oN1c7755ht5+fKlrKysyIMHD07+fW1tTbrdruzv78vy8rK6LW+enycH1LI1\nnmUbWs3xVbznyJtTn/tZqvJZR/97znoZuTm1ketdRNTtyfUs2V7dY7bkmi3jddS1bWLkuiG51+d4\ne5HrmZTKT04dk/O31DHRa6vk8m7ra2nHux6QZS2BOuYwS/tV9/dROfceTX2p4yzzXR3rEpS8P6Zo\nn8NSZVIsz3ElRK4Poylvmd8tz3+5bUasP5GSu+ZF5PO6Zf2ZCNr7vaZMye8jVV57f8ldZ8Y7t1ad\nV+9ckWrfu0ZgzjF1rheU05dRlntCqrz2OO+aZpoy2rFV1f/Us6x7F63t7W159OjRBy93BoOBPHv2\nTObm5uT+/fsflOt0OvL48WNv8wAAAAAAADPP/YJnOByeuotWr9cTEZHl5eXkLlvz8/Pe5gEAAAAA\nAGaeO0VrYWHh1H9//vy5zM3Nyccff5wsWyL8S5s+ZNkOLyUyLHaUJcSwVNrHKMv2g94tC3NEhsNG\nhq96Uxq8Wxl6x2ZkelGpa8bKEo7r/T5S6rxWTivvTWX0hrV6269r20xtH0pdn5NInbFcq95rvVS6\nkbbekql8lnu35hx67zul5h3LmC15T/CkZ4yXtaaRa9r10qZ7TXIO0qa+eMeDt15L6tro/86ZTzSp\nM5N4ftPUqx1blmshcrmFyDRN79iwfi+Rv1NK/YYdFXnvL5lKGPmbS3OMdT5O3XvcETypD7e/vy8i\n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\nTbGyjI1I2ufiVBnN8doy2rTG3HMRmZIz/reI5QZSdXtTckrd7y398T5Lauvy9kvzO8uS1pjzfOK9\nr+eW9z5/afvlTb+LFJkeHnmvE0nPKe4XPCIirVZLPvroI7l27Zr0+325ffv2yd+2trbk3r17sre3\nJ71e7+Tf19bWZHl5OaJ5AAAAAACAmRbygkfk112xVldXT/3bxsaGHBwcSK/Xk8PDQ2m1WtJqtaKa\nBgAAAAAAmGlhL3jOsrS0JEtLS8XbqStMOVXXKG/qzyTSPryhrN4VzFN9zglrjVwtvY6QZ8sOAaXC\nHbXtlEyx0oj+XuoKMy6VLmOZgyzhzKm6S6WbeT9X1Jg7rqfU5xyvLzfs21tvVTuRvOH0mnqj27ek\nVEwiNTLVhvda0X4Wb3kNSxqON01BO8/ljBNPWo32udL7LGmR+1ybOkbbF8t925LmGXnfL7krn+bf\no1nm8cjfP5FpPKV+I1iew6zzSardUssAjNdtSdHPrcubxp1qT1tX5DOVJZ1Yu9yAe5FlAAAAAAAA\nTBYveAAAAAAAAKacO0Vrd3dX2u125THdbleOjo5E5Ncwo4WFBbl165YsLi56mz+p85g3JaFUeo+X\nJfXFu5OEV2R426RYQhwjV06P3DXGm1ZVapx5w0itofKRoaSWMqXC6UulEU06LNai5FxTMozfG6as\nbdNTV4rlvESmI2vDx7Wf2bKbSfR1m+p3ZDpbqTTPUmkC0XXX1WdLu6VS9iypL5Epf5H3V21dkePE\n0r51uYHcdqM/Z+4YLPW8G1E+MpUwxftMF71zcMlzGzlOc+deb3nt80odz17Rz8XuFzwbGxtnvuDp\ndDrv/e/jLdI/++wzdtICAAAAAABwcqdoWd4SNxoN6XQ68vjxY2/zAAAAAAAAM88dweMJ+zpO27Kw\nhG6VaGOcJQS8js+irUvT58gdOqpEhCtGpr5YQjbrSFPz7hJSKrR9EiG6dbJ8t57Q/0mcT284srcu\nrcgUFm073hD28fLeHXRyeT9L5E4SdaSyjrejVXI3E2+6iTdN0xtq7h0nkWO+1FxXOl3Lm5KQqivy\nu7WkQ6b6pTm+qn0tT7qYdj7Unpfo1JtUHyxp1JP4bjWqxnLudeItr6VJ7xl3Hp55S323lvLe7zbV\nvuVaz/39aOlLxHNx6hllYoss93o9ef369aSaBwAAAAAAuDBUETwHBwfy4sWL5N9//PFH1VuowWAg\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "training in the critical phase\n", "layerwise pretraining\n", "training model 0\n", "\n", "Before training:\n", "-ReconstructionError: 1.415932\n", "-EnergyCoefficient: 0.168717\n", "-HeatCapacity: 0.086845\n", "-WeightSparsity: 0.335200\n", "-WeightSquare: 1.903544\n", "-KLDivergence: 0.418750\n", "-ReverseKLDivergence: 0.016154\n", "\n", "End of epoch 1: \n", "Time elapsed 1.621s\n", "-ReconstructionError: 1.406319\n", "-EnergyCoefficient: 0.163837\n", "-HeatCapacity: 0.086406\n", "-WeightSparsity: 0.334989\n", "-WeightSquare: 1.912629\n", "-KLDivergence: 0.419178\n", "-ReverseKLDivergence: 0.009721\n", "\n", "End of epoch 2: \n", "Time elapsed 1.765s\n", "-ReconstructionError: 1.406428\n", "-EnergyCoefficient: 0.163416\n", "-HeatCapacity: 0.095853\n", "-WeightSparsity: 0.334077\n", "-WeightSquare: 1.936154\n", "-KLDivergence: 0.418361\n", "-ReverseKLDivergence: 0.010860\n", "\n", "End of epoch 3: \n", "Time elapsed 1.769s\n", "-ReconstructionError: 1.404644\n", "-EnergyCoefficient: 0.163221\n", "-HeatCapacity: 0.089165\n", "-WeightSparsity: 0.331146\n", "-WeightSquare: 1.995651\n", "-KLDivergence: 0.418375\n", "-ReverseKLDivergence: 0.010820\n", "\n", "End of epoch 4: \n", "Time elapsed 1.764s\n", "-ReconstructionError: 1.403115\n", "-EnergyCoefficient: 0.163061\n", "-HeatCapacity: 0.103023\n", "-WeightSparsity: 0.322988\n", "-WeightSquare: 2.121297\n", "-KLDivergence: 0.418421\n", "-ReverseKLDivergence: 0.011584\n", "\n", "End of epoch 5: \n", "Time elapsed 1.766s\n", "-ReconstructionError: 1.401116\n", "-EnergyCoefficient: 0.162706\n", "-HeatCapacity: 0.090711\n", "-WeightSparsity: 0.308076\n", "-WeightSquare: 2.375455\n", "-KLDivergence: 0.418526\n", "-ReverseKLDivergence: 0.011441\n", "\n", "End of epoch 6: \n", "Time elapsed 1.882s\n", "-ReconstructionError: 1.396247\n", "-EnergyCoefficient: 0.162316\n", "-HeatCapacity: 0.097823\n", "-WeightSparsity: 0.290417\n", "-WeightSquare: 2.813981\n", "-KLDivergence: 0.418140\n", "-ReverseKLDivergence: 0.011047\n", "\n", "End of epoch 7: \n", "Time elapsed 1.764s\n", "-ReconstructionError: 1.391057\n", "-EnergyCoefficient: 0.162318\n", "-HeatCapacity: 0.156150\n", "-WeightSparsity: 0.277064\n", "-WeightSquare: 3.387026\n", "-KLDivergence: 0.417023\n", "-ReverseKLDivergence: 0.011452\n", "\n", "End of epoch 8: \n", "Time elapsed 1.773s\n", "-ReconstructionError: 1.386753\n", "-EnergyCoefficient: 0.164018\n", "-HeatCapacity: 0.096086\n", "-WeightSparsity: 0.271732\n", "-WeightSquare: 3.903247\n", "-KLDivergence: 0.418223\n", "-ReverseKLDivergence: 0.010849\n", "\n", "End of epoch 9: \n", "Time elapsed 1.789s\n", "-ReconstructionError: 1.383381\n", "-EnergyCoefficient: 0.164432\n", "-HeatCapacity: 0.104761\n", "-WeightSparsity: 0.270478\n", "-WeightSquare: 4.339828\n", "-KLDivergence: 0.417762\n", "-ReverseKLDivergence: 0.011049\n", "\n", "End of epoch 10: \n", "Time elapsed 1.767s\n", "-ReconstructionError: 1.382252\n", "-EnergyCoefficient: 0.164712\n", "-HeatCapacity: 0.238932\n", "-WeightSparsity: 0.271573\n", "-WeightSquare: 4.715862\n", "-KLDivergence: 0.415905\n", "-ReverseKLDivergence: 0.011317\n", "\n", "training model 1\n", "\n", "Before training:\n", "-ReconstructionError: 1.794070\n", "-EnergyCoefficient: 0.466996\n", "-HeatCapacity: 0.234012\n", "-WeightSparsity: 0.300811\n", "-WeightSquare: 1.756950\n", "-KLDivergence: 1.553442\n", "-ReverseKLDivergence: -0.096339\n", "\n", "End of epoch 1: \n", "Time elapsed 0.571s\n", "-ReconstructionError: 1.727621\n", "-EnergyCoefficient: 0.427378\n", "-HeatCapacity: 0.155453\n", "-WeightSparsity: 0.308928\n", "-WeightSquare: 1.792456\n", "-KLDivergence: 1.516493\n", "-ReverseKLDivergence: -0.134326\n", "\n", "End of epoch 2: \n", "Time elapsed 0.573s\n", "-ReconstructionError: 1.638799\n", "-EnergyCoefficient: 0.394371\n", "-HeatCapacity: 0.117594\n", "-WeightSparsity: 0.330185\n", "-WeightSquare: 1.969587\n", "-KLDivergence: 1.474517\n", "-ReverseKLDivergence: -0.145711\n", "\n", "End of epoch 3: \n", "Time elapsed 0.565s\n", "-ReconstructionError: 1.548471\n", "-EnergyCoefficient: 0.360888\n", "-HeatCapacity: 0.114263\n", "-WeightSparsity: 0.346174\n", "-WeightSquare: 2.224576\n", "-KLDivergence: 1.424795\n", "-ReverseKLDivergence: -0.143040\n", "\n", "End of epoch 4: \n", "Time elapsed 0.561s\n", "-ReconstructionError: 1.484413\n", "-EnergyCoefficient: 0.320946\n", "-HeatCapacity: 0.119142\n", "-WeightSparsity: 0.358682\n", "-WeightSquare: 2.491204\n", "-KLDivergence: 1.365482\n", "-ReverseKLDivergence: -0.137105\n", "\n", "End of epoch 5: \n", "Time elapsed 0.558s\n", "-ReconstructionError: 1.434320\n", "-EnergyCoefficient: 0.288636\n", "-HeatCapacity: 0.225017\n", "-WeightSparsity: 0.371516\n", "-WeightSquare: 2.731192\n", "-KLDivergence: 1.311713\n", "-ReverseKLDivergence: -0.126853\n", "\n", "End of epoch 6: \n", "Time elapsed 0.563s\n", "-ReconstructionError: 1.384970\n", "-EnergyCoefficient: 0.261125\n", "-HeatCapacity: 0.318864\n", "-WeightSparsity: 0.384397\n", "-WeightSquare: 2.951550\n", "-KLDivergence: 1.249885\n", "-ReverseKLDivergence: -0.115450\n", "\n", "End of epoch 7: \n", "Time elapsed 0.568s\n", "-ReconstructionError: 1.357032\n", "-EnergyCoefficient: 0.242608\n", "-HeatCapacity: 0.443690\n", "-WeightSparsity: 0.396455\n", "-WeightSquare: 3.120169\n", "-KLDivergence: 1.209868\n", "-ReverseKLDivergence: -0.121128\n", "\n", "End of epoch 8: \n", "Time elapsed 0.566s\n", "-ReconstructionError: 1.335232\n", "-EnergyCoefficient: 0.227526\n", "-HeatCapacity: 0.603513\n", "-WeightSparsity: 0.406631\n", "-WeightSquare: 3.283245\n", "-KLDivergence: 1.171637\n", "-ReverseKLDivergence: -0.127378\n", "\n", "End of epoch 9: \n", "Time elapsed 0.563s\n", "-ReconstructionError: 1.310408\n", "-EnergyCoefficient: 0.218963\n", "-HeatCapacity: 0.752361\n", "-WeightSparsity: 0.416695\n", "-WeightSquare: 3.467413\n", "-KLDivergence: 1.139205\n", "-ReverseKLDivergence: -0.128760\n", "\n", "End of epoch 10: \n", "Time elapsed 0.563s\n", "-ReconstructionError: 1.302709\n", "-EnergyCoefficient: 0.209014\n", "-HeatCapacity: 0.922406\n", "-WeightSparsity: 0.425585\n", "-WeightSquare: 3.608723\n", "-KLDivergence: 1.112624\n", "-ReverseKLDivergence: -0.138681\n", "\n", "use persistent contrastive divergence to fit the model\n", "Before training:\n", "-ReconstructionError: 1.387465\n", "-EnergyCoefficient: 0.164625\n", "-HeatCapacity: 0.071721\n", "-WeightSparsity: 0.271573\n", "-WeightSquare: 4.715862\n", "-KLDivergence: 0.418873\n", "-ReverseKLDivergence: 0.011377\n", "\n", "End of epoch 1: \n", "Time elapsed 1.602s\n", "-ReconstructionError: 1.387398\n", "-EnergyCoefficient: 0.164290\n", "-HeatCapacity: 0.066539\n", "-WeightSparsity: 0.273881\n", "-WeightSquare: 4.846795\n", "-KLDivergence: 0.418016\n", "-ReverseKLDivergence: 0.009853\n", "\n", "End of epoch 2: \n", "Time elapsed 1.597s\n", "-ReconstructionError: 1.389336\n", "-EnergyCoefficient: 0.163973\n", "-HeatCapacity: 0.061145\n", "-WeightSparsity: 0.275646\n", "-WeightSquare: 4.955679\n", "-KLDivergence: 0.418730\n", "-ReverseKLDivergence: 0.010060\n", "\n", "End of epoch 3: \n", "Time elapsed 1.598s\n", "-ReconstructionError: 1.386184\n", "-EnergyCoefficient: 0.164008\n", "-HeatCapacity: 0.060462\n", "-WeightSparsity: 0.277244\n", "-WeightSquare: 5.054227\n", "-KLDivergence: 0.418704\n", "-ReverseKLDivergence: 0.009643\n", "\n", "End of epoch 4: \n", "Time elapsed 1.591s\n", "-ReconstructionError: 1.385169\n", "-EnergyCoefficient: 0.164049\n", "-HeatCapacity: 0.062364\n", "-WeightSparsity: 0.278765\n", "-WeightSquare: 5.151093\n", "-KLDivergence: 0.417621\n", "-ReverseKLDivergence: 0.009391\n", "\n", "End of epoch 5: \n", "Time elapsed 1.624s\n", "-ReconstructionError: 1.384383\n", "-EnergyCoefficient: 0.163983\n", "-HeatCapacity: 0.057981\n", "-WeightSparsity: 0.280205\n", "-WeightSquare: 5.242036\n", "-KLDivergence: 0.418790\n", "-ReverseKLDivergence: 0.008976\n", "\n", "End of epoch 6: \n", "Time elapsed 1.727s\n", "-ReconstructionError: 1.384648\n", "-EnergyCoefficient: 0.164681\n", "-HeatCapacity: 0.055776\n", "-WeightSparsity: 0.281468\n", "-WeightSquare: 5.326574\n", "-KLDivergence: 0.418375\n", "-ReverseKLDivergence: 0.008905\n", "\n", "End of epoch 7: \n", "Time elapsed 1.589s\n", "-ReconstructionError: 1.383661\n", "-EnergyCoefficient: 0.163952\n", "-HeatCapacity: 0.065393\n", "-WeightSparsity: 0.282735\n", "-WeightSquare: 5.407551\n", "-KLDivergence: 0.418462\n", "-ReverseKLDivergence: 0.009416\n", "\n", "End of epoch 8: \n", "Time elapsed 1.593s\n", "-ReconstructionError: 1.381536\n", "-EnergyCoefficient: 0.163919\n", "-HeatCapacity: 0.055674\n", "-WeightSparsity: 0.283956\n", "-WeightSquare: 5.491248\n", "-KLDivergence: 0.418470\n", "-ReverseKLDivergence: 0.008893\n", "\n", "End of epoch 9: \n", "Time elapsed 1.588s\n", "-ReconstructionError: 1.380898\n", "-EnergyCoefficient: 0.164533\n", "-HeatCapacity: 0.060710\n", "-WeightSparsity: 0.285176\n", "-WeightSquare: 5.570600\n", "-KLDivergence: 0.419187\n", "-ReverseKLDivergence: 0.009425\n", "\n", "End of epoch 10: \n", "Time elapsed 1.614s\n", "-ReconstructionError: 1.380922\n", "-EnergyCoefficient: 0.164201\n", "-HeatCapacity: 0.063200\n", "-WeightSparsity: 0.286492\n", "-WeightSquare: 5.658150\n", "-KLDivergence: 0.417993\n", "-ReverseKLDivergence: 0.008283\n", "\n" ] }, { "data": { "image/png": "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\ntvX9pG3XvWw1Q8393dTxrK207+Z1vMN7tKGNdQn7wHORpaUlWVpaqqo6AAAAAACAS8M9yTIAAAAA\nAADqVVkETxvNUlhgHcfiTXVB/TQhs0Wh9ZhtkSH0GnWOx566I8fBJqeF5dKmMcV73Tzq6Bu5UlOb\ndM2bcP9UdT/X2X+1cqVj5l7p59Tx8XG2eiLlTDWv+3pUoWnPYMuYahmTU+tpwrmZVe4PPHt7e9Lv\n90u32djYkJOTExH55WIuLCzInTt3ZHFx0Vs9AAAAAADApef+wLO5uXnhB5719fX3/vfpEumffvop\nK2kBAAAAAAA4uefgsYRXdTodWV9fl6dPn3qrBwAAAAAAuPTcETyeXOnTtK1ITct7xK9xjco1aS6C\nWV7mfdaWWa7aZT/+JmvqtfEudT8L407dmjTvTpGm9t8onqXRy5af9qrzvDf53m7CO6umDdpz2KT7\nq4pzm/OeKTJrS76Xtdtz7zb5vm+72lbRGgwG8ubNm7qqBwAAAAAAmBmqCJ7Dw0N5+fJl4b9///33\nqq+So9FIjo+PZTAYyOHhoaytrelbCgAAAAAAgHOpPvB0Oh25cuWKDIdDGQwGMhgMzsKqxuOxbGxs\nqCs8/RC0uroqX3zxhaHJuvIjzEJYXRNZlk9swtKSVS37Tsji+aJTNS7DPc3yujEmn3dVmNW0pFlJ\nJymiaVPb3yva2OZZMkvnvy1jW1vOeR3PjTpS3VPfN5p0/cquS5PamWJW31faTvWBp9vtSrfbFZFf\nPsycnJzIV199Jfv7+zI3NydffvmlusJutyu9Xk86nY6txQAAAAAAAHiPaZLl+fl52dzclAcPHsiP\nP/4oq6ur0e0CAAAAAACAkmsVrXv37smPP/4Y1JR43lC4tobL4WKWkEJL6GFqyH7dtH2+jjY36Ty1\nRR1jGONmrMt2PstWPJmFc2FZAaeK4/amWkSmnrVxNSDoFPWT6P6vSeNpUp+/iGfltWiRq6t629nU\nMYAxbHa1JSXN9YHn+vXr8tlnn6m2HQwG8vr1a+l0OtLtduXGjRukaQEAAAAAAARwL5O+vr6u2q7b\n7cry8rLcuHFDxuOxbG1tyevXr73VAwAAAAAAXHquCJ4Up5M0n+r1enL//n3Z2trKVmeTQ9/avpJG\n29WxwoCXJbQ/l1xtqSv08bLfj3WshJGqzmt0GftEXaLTe9py7eoO+45MlbCsqqc55rZcywiz9Eyq\n41g80zBo08Xafl2QT1v7huVebVKaUtXP0cj6os+3O4LHan9/X16+fFlX9QAAAAAAADMjLILnzZs3\nsru7Ky9fvpTRaCTHx8fnbjcajc7+O6tvAQAAAAAA+IV84Nnf35f19XV1eFGv15Nbt25Jv9+PqL6V\n2hq+d5HUlQvKtmuCOsLmNXVWkfpVh7pCPZt0DiJpw22bevxNCv29rDR9qEnpJNo0oLrbWabJbZtU\nRVpVW85FtFk6bku6VFPH/suaSpjrerRlTM6lycff1HuwblXcCxHcH3iGw6E8ePBAbt68Kffu3ZOl\npSUREdne3pa1tbVfbTsYDGQwGEiv1/NWDQAAAAAAAAmYg2d3d1fW1tZkY2Pj7OOOyPlforrdrqys\nrMjGxobs7Oy8l64FAAAAAAAAG/cHnrdv3547l854PC79gHP//n3Z2dnxVo+GGY/HZ/+ZNDc3d/af\nNqmj3UV1VtGWyTq09bT12l4GRfdjW0y2v+3HEmH6/qzivosc0+seK6rqQ1VenzoV3Z+R57moz2vP\ncROvQ51tiqw7Zz9vw3jP80kv8vw06Vx7+3+TjmUWVDG2tuWauT/wXLly5dy/f/DBB3JwcFC4X6fT\nkZOTE2/1AAAAAAAAl162DzzLy8vy9ddfl+779u1bb/UAAAAAAACXnvsDT1GIUrfblZOTE/n2228L\n9x0Oh97qAQAAAAAALj33B56VlRV5/PixiIhsbGzIxx9/LD/99JOIiKyursrW1pY8efLkV/ttbm5K\nt9v1Vt84Tcz3nmbJY/fS5Oo3PZ+x7bxzaRRt571+dV1/7dwOTbmnm9QWlIvsP5H3XWT/mdUxPOKa\nzdo5iaI9t5b3hVzPpxxytUkz7uSaC6VJ59eL99Xq5ldq+/lse/u1tPfELF3btnMvk97tdmV5eVk2\nNjZkb29PRERevHghv/nNb2RlZUWePXsmOzs7sru7K8vLyzI/Py+DwUBGo5FsbW25DwAAAAAAAOCy\nc3/gERHp9Xry4YcfyvXr12U4HMrdu3fP/m17e1sePHgg+/v7MhgMzv6+uroqy8vLEdUDAAAAAABc\naiEfeER+WRVrZWXl3H/b3NyUw8NDGQwGcnx8LL1eT3q9XlTVJkUhh5OhZJPbaEPM6ghF0xyL5u+z\nSHOsOcJPLypbs000bz2ac1nHceXUpHulSW0pYxk3qzDdH4+OjrLVFXncTS0rsv6L0nWqNF3f8fFx\npfWL/Pp81JG+WiT1mTq5fdm+dffNWVD0/LU8i7kel5vl+jf12V+Vy378Teb9bWLZv+7fQ2EfeC6y\ntLQkS0tLVVUHAAAAAABwabgnWfZ48+ZNndUDAAAAAADMhMoieKaNRiO5ffu2/OUvfzHtn5qWZNH2\nELu6wwXbfv6sNKF42mtTd5qTpw+dt8rJRXU0Td2pEm3UhjTV6Hqm69L06Tb2pVznuY3nIqe676G2\nXM9Z7jeW65E67jT52Yv2mdX7sUkpxLDxjnVtHCtri+D561//WlfVAAAAAAAAM6Uwgufw8FC2t7ez\nVPr27Vs5PDzMUjYAAAAAAMBlU5qiNbmseaS5uTkZj8eukCfL6kja1RxmxWU4xgjaVKJcqkoDyhWa\n3cbQRZH23R+WfmKZ7b8Nqg6ZTk27nNS2c3sZlV3fnKutRfKmWF2GftrElNvIlO4irKgK5KGZeqDK\n+6yO9/wmrbDbpBTUuusv/MDT6XREROTOnTvS7/dlYWGhsJDhcCjb29uysrJSulLWaDSSFy9eyN7e\nnmxubso//uM/OpoOAAAAAAAAkZIPPN1uV0RE7t69e/axp8jOzo5sbW2pKlxaWpJbt27J48eP5dGj\nRwlNBQAAAAAAwHlKJ1leXV298OPON998Iw8fPkyqtNvtyqeffip7e3tJ+6Uaj8fv/SfV3Nzc2X+a\nzHOMOTXt/E22p+w/VfP2Uy3vMTblfF1Wln4yvU/Rf9rGciyeY67zPEXea9oxsKjONveZMm26N2b1\n2lTxfGnitU1tT5PeXdqCcwQP7/tGlaro65ZxtKp7sIpnRx37W5R+4FlbW7uwgOPj4ws/Ap3n5s2b\n8urVq+T9AAAAAAAA8D73MuknJycR7QAAAAAAAICR+wPP27dva9kXAAAAAAAAvyhdJl1jPB7L69ev\n5dq1a0n7DYdDV/SPZgk675KYTcnRvkjTluk7r8662tLGnOs2tlmjScsXRqv7XpslTV5uvKwNufrA\nZShr1u+f1PeVi+Z2mBVVLBEO0G+KcX+lmbV3V+h4r3sd/cYdwbOysiLr6+vyt7/9LWm/zc1NuXXr\nlrd6AAAAAACAS8/9gafX68m//Mu/yGeffSb7+/sXbn9wcCB3796Vt2/fSr/f91YPAAAAAABw6blT\ntER+ica5c+eOrK+vi4jI8vKydLtdmZ+fF5FfJmIeDofy8uVLGY1Gsri4KLu7uxFVi0hxiOFlDDds\n6jFX2a62pQJp29i245rmDQXWpu4cHx8nl+3V1PuujTTn0pt+m4O3DUX3R5NT1qDThmuVK1XDUm7b\nn3VWkWNI21Ux7pGe1H5VX8PpOpo6RUZOszTO1KGq51vIBx4Rkd3dXdna2pJvvvlGBoNB4Qt4v98/\n+xAEAAAAAAAAv7APPCIi9+/fl9/97nfyww8/yIsXL2Q4HIqISLfblQ8//FBu3rwp3W43skoAAAAA\nAIBLL/QDj4hIp9ORfr+ffX6dtobxR5jV48qh7lDvyPoJi6xeznutqSG8kaHxbVhZqoku271eNk7O\n+rU+VfdxautPvactz0BN2oO2fq2mjscp2truFNrrpNnuMpyvi7T9HFTRfsvzuO3nNYJlxcjL8O5T\n1TG6J1kGAAAAAABAvfjAAwAAAAAA0HLhKVpNMqshcrN6XE1kSQXU/ttlZkkDKgr1ny7r6OjI2Tpd\ne5pctkdkWiEpFO/zhnqX9fuifdqmzW1vM+39lfpMtIzpnrqtNOkEVbXlMtKOZ7xT1aNJz1/NipN1\nr0jXpPN1kTrvr5z1pY7pTeO9LkTwAAAAAAAAtBwfeAAAAAAAAFpuplO0cDlFht95V2LQhJICVbCs\nQNOk0OLokOvIVL6q5ApHb5JZTT1rulwpDZYVU7RpiVX0h1nuc3WvWGcZw6K3Q7tV8S49a+/uVd0b\nbV+5uG7e9hPBAwAAAAAA0HJ84AEAAAAAAGg5PvAAAAAAAAC0HHPwtFDdedNeszp3xKm2530iH03f\nz3V/5LzXZv2e9tCOB5HLT7cZ/dQv53LBnvIsz8ZZvk4RPNe67r4ReW3b/l58Hs39op1zxHs+Uvf3\nXo+6lymvap8mqHMeI+28bFpN+v2Vukx79LkgggcAAAAAAKDl+MADAAAAAADQcqRotVBbwwBPtbX9\n2pBPzRKvVS3llxoiGFmfpY6coZtN0LalybXa0ObpNh4fH9dS7yltf25bWlFbljnXhklbyiwrI0e9\nVt5n0iyMySnKjvfo6MhdZq60kLaNIRazeFx1prxZeN/54Kd536jjnM/qdS57bqYec/Q5IoIHAAAA\nAACg5fjAAwAAAAAA0HKkaE25DKGs8GvjTO9VpIg1tSxcTrM2ns/a8VQtd2ps1Smxqe0o06S0rCal\nsRXVH3UeqjimXHXUfT2qchnH3ehU26rP4WXt86krr2n38fKmnzb190BV7bKcCyJ4AAAAAAAAWo4P\nPAAAAAAAAC1HitYUbYh108P0AJHiUL6mhjsCk7T9tGg8btM4PatpAHUfSxPGutRz0Mb3DU0IeVtW\nRrSkOUSvyjer40EbNLVfVsnb5+pOyeH+0a3oW7Zd3ZrUlrpZzgURPAAAAAAAAC3HBx4AAAAAAICW\nI0VLKees8amhhG0M34ZeU1ZiQXUuezjxZezb3hD2pmpaG5safl6mqnNY9bPGkhpQR3/StGv670dH\nR9naUFZv0+63NrH0c8uzenKf6H7SJGX3Df20epYx1fu8nKXr3MZ3h0lE8AAAAAAAALQcH3gAAAAA\nAABajg88AAAAAAAALXep5uBJzaGrapnA1HrqyHFs0xwhbc+bjGxzFXMs1HG+y/pg9HK1kYruo6bf\nUyJ5c+rbfs/OsqrnRmHuhnKRz+JcZU0qu7ebNO9OEcam9qvinaou3nso1z3onbcU+eR8xnqfKU2a\ng7Tu/uh99hDBAwAAAAAA0HJ84AEAAAAAAGi5S5WilboEeVPTkuoIYc+5THy0qsPqpo9NU3+u8NXo\n81xneLr2vEYsV1tVX23SOJKqjqWbmzoGV6kNx102NjQpBbkN5/IiVaXG1VluHfe9ps4mpAZrn4uz\n0Neboq5zWcW0EnX3k8h3zCalrLZJnalIdadBNZn33BDBAwAAAAAA0HJzR0dHl+czJQAAAAAAwAwi\nggcAAAAAAKDl+MADAAAAAADQcnzgAQAAAAAAaDk+8AAAAAAAALQcH3gAAAAAAABajg88AAAAAAAA\nLccHHgAAAAAAgJbjAw8AAAAAAEDL8YEHAAAAAACg5fjAAwAAAAAA0HJ84AEAAAAAAGg5PvAAAAAA\nAAC03N/X3YAUV69ede0/Ho/P/vvc3Ny5f69DZFs0ZU1uU8bSFm3ZRXUU7X90dKQuc2FhIakN04rO\noebvFmXnOVdbLH1Ds09kn7GcFxGR4+NjVb2T/STXeDB9bJqyI+/PXNemrDzN9dSW6723yljGlLLz\naenHnv2951B7f3nbomlXWXtz1andJqWfaN5RLONo6n2c651Cq44+7+V9P9Q+d0R07yhVPOPb+O5b\n1bhRVJZm/7L7N3o80bahqD257lXt/kVy9k3PO4rluVmmqLyU8aSon3jHjVz75HzHq+LZket3etkY\nZvnNQwQPAAAAAABAy/GBBwAAAAAAoOX4wAMAAAAAANByrZqDZ5JlLgvPfCY580Ejy9a0P+c8P1XM\nl3AR77w1Rceg7Ru55j3xluvdJ7U/RV/z6PsxVx66t29UMQ+XhfZYNHVa5q+JnA8o1Wk5kbnj2nzr\non2i51iIaotlPNX8XdtGbT+d/HvEnF6T+1rmAyk77tS5Ibx9I9dcN9o+X8e7V+oxe+ZqKivnVFXP\n+DpZ5p+YVNWzztOuHO2oex4l71yCmuPKNf9f2f6p26TUqdk/4lpGjhu5fjN435EtvxO872513Ive\nsongAQAAAAAAaDk+8AAAAAAAALRca1O0LGFxkeFT3iX/PKFX3hB4L2/4tyUE3xImr21PGW/qiIUn\nBNi7hKMlvcFynTWhuNrzag2V94YZa8qtMuXsorK040bqNueV3ZS2RN2nqe3LuZyzpg5vCHvRv0Wm\nM3vHMMtzxNKulNSb81L5yljOYWo/s9xr2u0jx+6q08XKym5yqpM2vVW7f6Rcy08XyZVq7+1zZceS\n8i7rSTfxvu96x3FteyLfS4tYl5/W8N5PRW1Jee54+26uaS00dVj28aZ2lon8XRD5naCsrKK+QgQP\nAAAAAABAy/GBBwAAAAAAoOX4wAMAAAAAANByrZ2Dp0jO5dcmefP6NdvlWmbPko8auSRurnN8kSrm\nb5jeJ3KeiSrKKivb265c+ajT22lz3L2565HXJnI+Hk3ectk+k7xzmmmPK9c8EhH9xCLXPGCWezhy\nnpa653XT7B85F4eIff63SalzlnnnFbDcd9qxQkN7biOfCRap892VnaOI8STXvFZFdZTt750fKnWb\nsj5vKbeKedCK6rfMl5FCc528zwfLGFTV3FVVzAtnKcsyB1Xd58xb1nR53jlsUsdk7b9VNYYWbZfr\nt1gZIngAAAAAAABajg88AAAAAAAALdeqFK3UcKfIVCDLkrTeOiP31Ya0RS6hqq1fs49lqdqI9lSR\nMmdhSTGMDB+tIr3Jur8lBNqbkpLzPtCUpQln94bAW8ZTy3mNvH+j7r/z6oseh4vK9obde9KGtNtF\njo3eY9SGj2vDvyNSKiLTGYvKjUxB9o5TkfvXnVqQI/XG0yerft8s29+S7l+2v4b23cPze0Gb7mW5\n/6ypfJZ0lUmpKVbT23jTcFKfHdrnnjfl1ZP+qq1fa3KfnCmflu0s+3tTynOlM5fVEZkOXdW7U1Ff\nIYIHAAAAAACg5VwRPHt7e9Lv90u32djYkJOTExH55avTwsKC3LlzRxYXFz1VAwAAAAAA4J25o6Mj\nc+zmxx9/LH/5y1+S9hmNRrK1tSWffvqpLC8vJ+179erVC7eJDOfV1jPJG0obma7inQXeMmt+ruNP\nCX/W9JN4Z1N1AAAgAElEQVRJ3vBlS5iyJeQ0V9i6pu6ytkSXXVSHtj9rQ1uL+om331a1KoJG5Eos\n3rSqsrIi98+RUnFeX4log0auNJpc1zM6nblIrjQ9T4rWaT/xprxp94m8v4t4+7klnD4yJcjbT7Tj\nYUpKReSzZ1Ku97fIdE7Nvhe1U7OPhvYYU89LWT9N6ScLCwuFZaa0p2x/TVll22l5rlXV9U3XWcdv\nyejxxHs9I5+3dfRTy70amWbqHY/LFL2juFK0LDddp9OR9fV1efr0qadqAAAAAAAAvOP6wOP5qnma\ntgUAAAAAAACfWlbRGgwG8ubNm7DyLLNTNzWlYpI3FLuorGme2fm9IdPeGcytcqapacrVbqcp29vP\ny1YriDz+VGXlRtdpCb/MtU90ymDR3z2rWkxvl3rfa9tikSNV6rQc7coeOdOnNNun1m+574v2r/u5\nG5l6Zq0754ojlueyhvZejeR595jezrviiqbcsvMSsdpaURu0Isf0yD6k2aZsDCvazpuKl+v+KzsW\naz+JTN33vrtEvttHpt9Z0nC8ZaXK8dxLHbu1KYiaOsrkSpOzpHhpx0bPO4plDLPcc1oXfuA5PDyU\nly9fFv77999/rzoJo9FIjo+PZTAYyOHhoaytraW1FAAAAAAAAOe68ANPp9ORK1euyHA4lMFgIIPB\n4OxL0ng8lo2NDXVlpx+CVldX5YsvvjA2GQAAAAAAAJMu/MDT7Xal2+2KyC8fZk5OTuSrr76S/f19\nmZubky+//FJdWbfblV6vJ51Ox97iC2jDqyJnxC76uyVsXVOfJVVCW7ZXrrBGK8vs8J4w4+l/iwwH\n9qb3eEOLI0WWa+2/3hRIS5ixN3VmUq40Hu8Y5g3xrWus0PD2DW8IvKUtudICc6USWurxpiZY2lW2\nb2QKcNl23vR0TbvKtsuVLjYpZ2qA5fl+3jYiaaveaNpjeUdNTZ2xPO8t6RGpbTyv7JQ6tCxjqDc9\nKaWfpI7RlpS3XLy/UyJ/y3jTeCx1FtEeS0QqX64UWG8qUs7z7H0v8bwveccw7f7aZ0/yHDzz8/Oy\nubkpDx48kB9//FFWV1dTiwAAAAAAAEAg8ypa9+7dC2wGAAAAAAAArMwfeK5fvy6fffZZZFsAAAAA\nAABg4FomfX19PaodKpH5bN55b7x5hp65VaJzEavIgdUqOuaUvOVcbdDmMKdeN8syfZH5rJZ8bMvc\nQt45Y4pM16PNXfbmJ0fmF1vq14jMR9bm1E/yjoeWvqVdTtM6F0JReZp9I+dmsZyPom3KpOb0R5ab\nc39NuSK2uVUs90pZG7T/dl79ZfOBFO2jbVvqefc+68pE9qG65hL0PlOq2L/sPSj1OWCZi837Xuqd\ni9DyfJqUMrdKrncmyzF4nk/T6h43PGNw9BwvOceUnO9/UW3RvrtY5qsrq+ei7cv20ZYV+bugrP6i\nMcX1gUfkl+XPJ01PoPz48WN5/vy5HB8fy40bN+T27dvyySefeKsFAAAAAADAO+4Inv39fRH5ZYWs\npaUlWVtbk8XFRRmNRvLll1/K4eGhXLt2Tfr9voiI/PGPf5TBYCC///3v/a0HAAAAAACA7wPPH/7w\nBxkOh/KHP/xBlpaW3vu3r776Sl69eiW3bt2SR48enf19dXVVNjY25ODgQJaXl5Pq84Y7eULMopeF\nSw0R1C5/WHVaVWTY2bTJ9qeEtUaGfWtoQy4jw7694Y4W3vDv1OuiDcO0plREpgJNyhWWqeUdg7yp\noRre8XSaJZ3AsgxpZApi9P4adabnRJdb931WxjsmWvpG5NKrkX2rrC3e7bypjJ53hYjxpEwVqWHR\nqZGaZ0fkfetN9yoqy1JP7vQ9L2/qyyTLfaPpD2X7F5Wl3Sd1O29KUFF92vcwawq5971WIzJlzlJW\nzvfCXO8SVYxB08yTLIuI7OzsyJMnT371cWc0Gsnz589lbm5OHj58+Kv91tfX5enTp56qAQAAAAAA\n8I7rA894PP7VnDsiIoPBQERElpeXz/13EZH5+XlP1QAAAAAAAHjHlaK1sLBw7t9fvHghc3Nz8tFH\nHxXu6w1njJxh37J/aj3emcIjVw7IlVJTVr83PM6ykslF7UvdX3sMnnK9bbHsY0lJ8qxCUNZGC2uo\nfM40PU+d3rK0odCR40ORKtIMqqynqE7tdtpU29SypqWeg5ypEqlpft7zaimvbH9L6k3OZ4J3HI5M\nFS4qt6z+1P21+6Sma5Vtl+v90krbHzT7WN5rtX3Om+aW2i4t7xjQtBTQ1Pe6aZbj8aYiRaZ+53q+\n5UrzbLrI35pF5WrqttafynI9I38PF+1jfUcv+n3siuApOpiDgwMRkV+lbk16+/atp2oAAAAAAAC8\n4/rAc57hcCjD4VBEpHAS5dFoRIoWAAAAAABAEFeK1ng8ltevX8u1a9fO/ra7uytzc3Nny6Kf59Gj\nR+dOvhyh7jDLyNnpNX/X1l/F6ieWsrX7p4TJe1fWSA1TzhXaPl2PZkZ5r8hZ3KtKYdGGK+Zk6RuR\nfcgSpp0aPltVGo/lnrP0x5R+ct6xW1ZfsNxflvvek3pi2ceSJpq6zUX1RO3v4T2+Ip60LG0/zZXe\nnjMNR7OP992pylSsSZZ0m1zjtXYbT7pYVfdtrjQc7bFETDeQ65pPsqR2elPCI9PvLKkvRbzn2HJe\nrKvyRb6L5npWWdLLc7XRK+dvc287XR94VldX5c6dO/L555/L4uKiPHv2TPb29mR+fl7W1tbe23Y0\nGskPP/wg29vbsra2Vjj5MgAAAAAAANK4PvCIiDx+/FgePnx4tnLW0tKSbGxsnH3Aef78uXz99ddy\neHh4ts/m5qa8evVKHjx44K0eAAAAAADg0ps7OjrKnrc0Go3O/XtqFM/Vq1eTto8OMUyts47Z1S0h\n7Knt9IZPW85xSrhi0epuWrlWpUitb3r/KtJ4vGG1kelJ2pBta+pN0XgSGSqeMx2jbaGslrSRnKHc\nKaHyp32lqpDnXNetivszcgwpKzs6tbNISj9JffZUkaqgrb+orMj3oKpYntVF++dIDU599tTdHyzl\n5nrfzrVPVanVKe+yk/0k8jeEdxyNTAmPfK/O9ZvNcl5St5lmHU8i362L5BoDLvo3TRur6Bup25Tt\no2X5zRM+yfJ5Op3Or/7z8uXLKqoGAAAAAACYeZV84DnP+vp6YWQPAAAAAAAA9Nxz8FiMRiMZjUau\niZYtqyd4wkRzplh564wMOS0qV7PyRhnt/hHh3N4QP025k7zHEJlSoE190fYN7b11UR3a/bVpPBH3\nY1FdZf0n9RpYxqCisqZp2pIrbUO7T9E2lj5v2T/KecfuvW8t/TsyBNiaAplabmSqsmU886bJWlcz\n0fA+F73PBM0YWMa7f2q52vPiHcPqSCuz1puaIhD5fLO0yzIGePfxvu9HvmNXtcqn9jppr423b3ie\nI9PlFrU58n2/qC1a3t8YEatoWUSOAZY6Ut9dyvpGarlelrTGlPJSuT/wnK6O9ezZM3nz5o1q8CJy\nBwAAAAAAII7rA89oNJK7d+/Kzz//nLxvXf8PCQAAAAAAwKxxfeDZ2tqS8XgsGxsbsrS0JN1uV7Xf\nq1ev5N69e56qAQAAAAAA8I7rA8/BwYHs7u4mz6Vz/fp11/w7IrHzrOSac8JLm7+XevzeeVqqyke1\nyjV/hWc+mrLtInNDvfM2Wcrz9jNt3dr7QZu7nGu5VEuurff+qHseLw3tGJY6j8T0/tp9UnLcT/f1\njsOR92fktSkru0jkeBbZN+p+bqewzH+ROleMd04ky1xNuZ61Zft73+OqmKMhd13eMSFy3kWvyGur\nETkvY5Rc74ZVzItWJvV6Vnlvnoqcm8gyBqXM1ZRr3pyqxnHNPpFzd3nnc8z1GyF6/kLXKlpLS0vm\nDzVra2ueqgEAAAAAAPCO6wPPBx98YN633+97qgYAAAAAAMA7rhStOsLmzuNdDjByCcdcaVGafaf3\niUzPSN1XK/dyx5GpM5FhiJZrk2uZvVxpPNHhhtHjTc4Ul6j6LUuFFqVwWO61yPMSudyxtp5J03V6\nl6vV9sdcIfCWe82b9pvaxjJVLAltEd1PpkWGalueT1Wfw7I6Up8JZcfi3b/Jcj5XJ3nfiz3XM3qJ\nYU2dkyLTRMvqjFj+OldqY1XvpUVt0dTnLUtbdq57Kbqe6fIjn/fe/mDpp550ZEudOe+ZyOtiuU9d\nETz37t2Tzc1N076ff/45y6UDAAAAAAAEcH3g6XQ6srKyIpubm/L69eukfX/++Wf3RMsAAAAAAABw\npmjt7e2JiEi325X19XUREdVy6cPhsHGrWZzKFZaa83irCGXVhvCltiXHecl13LlS+Syrp2i2j2iL\nJy3LkgbXBJbwUe3+nnK9obzasFzL9YwMi60q3SdFFakcdabhWNI+vClqkamd2jDnutMyp+VKPfCm\nRZWFxqeOG1WlvljKjUxPt6beFJVZRYqIJWUtd7rJeWVFPpMmaVNAvGPFZFtSUj5T6/WmRkb2P63I\nZ01quTn3r7KeXCnV2vHRm46Zul2uFKmy/XONzWV/1457Rc8e1wee7e3tszSr08p//vln1b5NeLkC\nAAAAAACYBa4PPFeuXBERkbt378r8/Lx6v5cvX8r333/vqRoAAAAAAADvuD7wdLtduX37tnzxxRdJ\n+/X7fXn27Jmnane4VarI9ITpf0sNpc2ZhhPZFm+qifV6ecP6NOVa0ppy8fb5qkJxvWlI0amIlvBN\nb/hortBob3qDN43FmyqRWm5ZPUX7R6RU5Eqpmd6n6lB5b6pGFSupaMuuajw7z2n7LKmuFpHvQd42\natriLUvbNu2xeMbz6e0jUm9yPRNypSZG9jNvKqB2u1zHn+O9z5sypym37n5WRdpszud26riZ+/lU\nVVq8tuyL6rCk7Ua+o5Ztl1qP5T2qbH8v1yTLmvl2ity4ccNTNQAAAAAAAN5xRfCsra2Z993a2vJU\nDQAAAAAAgHdcH3iKHBwcyHA4FBGRhYUFWV5ezrokemSKlHZ/zXZ1zM6taVdkqkT0KgwRImdhT61P\n+2+RKRxlx5IaiqsN47T0LU3ooyWM1BoqrylPGz5qST3Q/D2n1JQKb98o2t7Sxmm5U5qi0nvLUjxS\n68iZnpBr3NLUUba/JUy6qKwc/eS0TEvYuaUPRz7jtWOypm1VpWamlm0Zz6scm3OlPeZKly87n5Hv\n1ZZ3n9SyLHKlXlp5U6S8vHXmSuMpU8WzzpLKGLEqX+RvY8t7uvdd0FJ/FWVNypXiWEb7myfsA8+b\nN29ke3tbnj9/fu6/93o9WVtbk2vXrkVVCQAAAAAAAHHOwXNqb29Pbt++Lc+ePZPxeCydTkcWFxel\n0+nIeDyW8XgsL168kDt37si3334bUSUAAAAAAADecUfwPH/+XDY2NqTf78vt27dlaWnp3O0Gg4F8\n9913srW1JZ1ORz777DNv1QAAAAAAABDnB57RaCTb29uyu7tb+GHnVK/Xk16vJ4PBQB4+fCi9Xk/+\n6Z/+yVP9GcuSmJq/a8vyzjtTxf6Ry7GWybUEZcoSpN55Trw5lal5r97lQS1zAGm38eRKe+el0Zpu\nvzZ3WTNuWOZJiVzi1zKvgGb7srZ556KoYglW7T5F7RJJG1M05aXy9g2LyDmgvPMNWOZbiLxniurw\nOC1f+76Qq92R4453voXI+97Slsj+2IT5eMq2Sx27ve+VZeU16b00tZ463nebVFdK/ZHz5lh454nx\njoep717T20eclyrm7oq8JyLHHe/v/LL9Ncefc04v77VwpWjt7OzIgwcPLvy4M6nX68n6+rrs7Ox4\nqgYAAAAAAMA7rg88P//8s/R6veT9bt26dbbKFgAAAAAAAHxcKVpXrlwx7+tdNt0bBpajvrLtvOlB\nlpQcS+ikp1wLSwqMVeRyrZFhedpwfm8aRa6+qdnewhpab1km3btsovaapaZFaUN7NWWVsVxPbypi\naru8qYTWVL7JcnItqztZx/R2kfe995kQGbLtvWe0Y2Nk+PpFUtPWvOkN3vRyTVsuatt5++dahras\nTs3fvWNYlNTncl1pYufVP0mbbhL5fIlMjfX2E0v/sS5/HdlXvWNA7nE0pY5cx58rBbnM5D4R01Kk\nblO2jyXlLTXdKUKutOFJ3nds7TuJdruiMcUVweO5sevOJwUAAAAAAJgVrg881kkqR6ORnJyceKoG\nAAAAAADAO64UrY8++kg2NzflwYMHSfs9evRIbt265an6PZGzhk8qC8PShJ6VhSlXEX5bRapPzrA/\nK2/IsyWEV7O/JfUmNb3AEs6uPRcaOWeUr4o2BNeyjSeFw5JaWbZ9ZKqHJZ1UU0+u1TZE0v4PitN2\nVHVs3pDryDS5ojotqU9VpPHUkcIyzXuvlpWXKz02MrXTcp9Y3jFS21zVGJbC2zci7ynve15qnU2K\n5PemAdU17lTVVyOfSd532SrTblPkSiu8SGSap2VMjHz+pt5rOZ913udb3e8irgiefr8vf/3rX+W/\n/uu/VNuPRiN5+PChHB4eSr/f91QNAAAAAACAd1wRPCIijx8/ln6/L0+fPpVbt27J8vKyLCwsnE2i\nPBqNZDgcyosXL+Tg4EA6nY7s7u66Gw4AAAAAAIBfuD/wzM/Py97enqyvr8sPP/wgz549O3e78Xgs\nS0tLsrGxIYuLi6a6coWierYpa5c3tNiSYhU5035k6KM3hN+y4k2EyDQ3TR2WenKuNpCaDlDW9sgw\n55yhuJGpCnWkqeVKwdSmmabWZ+FNJbTWZxm7NNtPSx13LGkwZSLDpCPTezXP/egVcCyr3ljOc+Tz\npaoQds1Y4X0+advvTRm01FkH7/tCTprzniuNW5vqXrR/0b7afarsM1VMk2B53nvfnSLHqshntaX+\nKnnvO8tUEh7eFCntNpb7W0Nbburv/IvKK/p70XQD7g88Ir985Nne3pbBYCDPnj2Tg4MDGQ6HZ/+2\nvLwsv/3tb+XmzZsR1QEAAAAAAGBCyAeeU71eT3q9XmSRAAAAAAAAuEDoB57cItOEisrVhlF5Z0v3\nhAZ7Qw+1IW2WtuRKEbOseKMtu+zfIkNRtXVorpu3nxWJTvXQ7FPU56pOwzmv3qalghXtP8lyD0au\nZJFah3a76PBrS+pNUT0X1aXZJvX5ZLlXvKuPRD73LHV6+7bl+ehdba1MHenEucYdy7Mycgzzrnji\n3SeCZeyLTJPT1JkrvSF6/8gUschzmTKeaMqLZEmd8aZjWu7bon/TtsXzXq9ti3dstb6fWJ5xqccd\n+ZunaemwnntL+3vYUp/l/LtW0Zr0+vVr2d/fL/z3P/3pT7K3txdVHQAAAAAAAN5xf+B58+aNrK+v\ny507d2R9fV2++eabc7dbXV2VK1euyMOHD+XNmzfeagEAAAAAAPCO+wPP9va2bGxsyLVr12Q8Hku3\n2y3c9ubNm7K+vi7b29syGo28VQMAAAAAAEBE5o6OjswJZ99884188sknZx91RqORdDqdC/cbDoey\nt7cnX375ZVJ9V69ePffv3nlzcs1LUMYzf4U3Z897XrS853VSSj7qwsKCq64i3pxcbbmeNkcv01dU\ndt1LU5aVpe0rRf3Eu8RumdR5AXLN0WGp0zvflnc5S+1cHtpzljIXwmlfiWxDVfOXefePbIu3LE25\nZSzzGXn7yXllnldv2fapzxHv+4JWrvknNHVo67Hcs1X1k7K2TqrjvdRbVmp92udD5HtY5FxP2rZE\n9BMN77tY9LiRa16ryPdSDcsYlFLeqZTfPKm/jbVtKCor8jdPzjl4LH2jivcwb9/U/uZxRfD8/PPP\n70XsaD7uiIh0u92zZdQBAAAAAADg4/rA8/bt26h2AAAAAAAAwMi1TLonCufw8NBT9XssoVOeZfKs\ndU7ypEVFhHRp6vTWHxmelnNpyZwhehqR5Wqvs5dl+b/Ivh1xLJaUAm9KQGRotKb+snK9KZSacSNX\nelHEPZsSAp16HJZzm2scsKTRRKaJaraLTImISN+zOq3Lkm5StnSsN30oVWRaVOq+2rK0+1iOJfXv\nqTTXKrIN2r5RRWpm6jZlbSl7X7XcZ6ntypleMl1+ZEq0ZjtvKlLOcbiO9N7UfbXXpai8lN88nt+T\nZWXlmkqhque9d3/v72ENS3/Spge7IniuXLki//d//5e838HBgSwuLnqqBgAAAAAAwDuuDzz9fl9W\nV1flb3/7m3qf4XAo9+/fl9u3b3uqBgAAAAAAwDuuFK1bt27Jzs6OfPbZZ/K73/1O/uM//qN0+729\nPdnc3JSlpSX55JNPPFWbeEIZI9PAtHVqty8Kfcu1yohl/6JtphXVmZJOUTXviidlcqXsaepL+bfz\n6otebUBTp4g+tDVnqHtq/XWEHHvTO6LSlsraUrSNtuyoc3xajmXsyrXqTa60Ce0+lmdCUbmRY4M3\nfU+7QsV5PGkplpS1XONRGc319LZLW1bqPWBJS/SuZJJSZh0pd5btitplGfeqEJmyakmdi36X9T6v\nc6XGea9/rpQg77Ut2l67j/a92NpPUsdk7XaRY7dme+s+qe3S1heZwul9j7Ics+sDj4jIkydPZHV1\nVba2tmRra0uWl5el2+3K/Py8iIicnJzIy5cvz+bcWVxclMePH3urBQAAAAAAwDvuDzydTkeePn0q\nGxsbsre3J4PBoPALZb/fl/X1dW+VAAAAAAAAmDB3dHQUFhs9Go3khx9+kBcvXpytsNXtduXDDz+U\nmzdvSrfbdZV/9erVs/9umTU8Mpw3tdyqVvawhIR5Zy33tEsbNpgyo/zCwkJSG7S04XqRK4h4ecPO\nNSJDDyPCarV9ZXI8KWpPGW8oaWrYuGVlHW17c90Pkalf0aljKSHQRX2liDftN3IlCe8KG970htSy\nynif+5b9U549qf1kkje91fuMjXy+ecf+svqL2hI57ln6trWfNCk1M9czzSJy3PGKTB2Kfpctqscr\nZ9p4ZD8r2idXiqD2+WIZT639RPPciXzealWRpum9HpZ6cr3HTNP2oaK+4o7gmdTpdKTf70u/348s\nFgAAAAAAACVcq2gBAAAAAACgfmERPK9fv5Y///nPMhwO5cqVK/LgwYP3/n1jY0M+/fRTWV5ejqry\nXN4w50na0N5cM6/nakvkDOTTNDPtl5VbNAt/latopYaPRqe+FLGEpWramWu1gTKWsMboVW8iw/Mj\n0yEtq3R47/tcYe+W+yS1z07vo6lDJC0E+nRfb1/1soQG50rbjVxJIlLOY4kop4rVbLxlaVfDyTXu\n5Krfcp/kSPmsIuXIm/brlWt1Im8qnjfFzZtKGPEua3lGFu1ftE/0fat5xntTS3Om+qaW5d0/Rer5\n1KbdVvHs1rbFUl7kuSiSM9Xey/2BZzQayaNHj+T58+dnjbt+/fqvtltfX5c//elP8vTpU3n06JG3\nWgAAAAAAALzj/sBz584dGQ6H0u/35aOPPpJutyvffffduduurq7KcDiUzc3NX0X4AAAAAAAAwMb1\ngWdvb09ERJ49eyadTufs71euXCncp9vtys2bN+Wbb76RL774wlM9AAAAAAAAxPmB59mzZ7K9vf3e\nxx2NXq939nEommWOBEsOpXd5To3IpRAjl9YsO/bUXGVt/mLKfBm5lk71ypVr6Z1/w5trbeHNdc65\n/GJVudOReehFtOfZMsdA3f2hSFX9RFuvtz1V5JF753fSlh05f4ymvmm5l14+LSf6XtPsb5nnztI3\nU+u3zOthoTmXked1Wso7SlG9lu09z/jod1zN3CiWubuKlF3b1P21baliHrEUlvteMw5r59DR8tzf\n0WNY6m+TyHeyKlnm3vK+b3jnZav7HKbO71R2Xr2/v7zvjq5VtDqdjiwuLnqKAAAAAAAAgJPrA8/C\nwoJ535OTE0/VAAAAAAAAeMeVovX27VvTfoeHh+Z9L+JNr4gM6beEI2vCIC3hddp2FdVTR9pE9NKS\nRe3RtkG7vyeEvWy7XCkgFpa2RC5tWXb+taHylhDuyFDUyLK89VvqiUxT1fRhb6rH9N9TxhTNcaSG\nNudaDrRMFakG2vHMUl7q2Dj9b5brYln+2jKmT/LuX1ZW0b9p2+LptzlTA7zt0aaqFLXFWm9UmZHt\nELGl3HnGOm9qpbY877tLUbtyqDOVyJvylvP55rm2ZW3zvhNa0niK/s36flL1fettyzRvqm+qyHdU\nbT2RaaplXBE8i4uL8v333yftMxqN5OHDh7KysuKpGgAAAAAAAO+4PvDcu3dPtra25MmTJ6rtDw4O\n5O7duyIi0u/3PVUDAAAAAADgHVeKVqfTke3tbbl7965899138tvf/laWlpZkOBzKwcGBjEYjOT4+\nllevXsnBwYEMh0PpdDqyu7vrbrglFK5oO43olJ5cYWjeEHZvmkFqOPy0iJBXS72pZXnDxiNDe7X9\nPHLlgVwhvmX7a8vShrampgVpac9TZD+1pDdo2lK0jbb+KlK3yuovk7LqTVHqTcq+Kft779XU825J\nq0q95tpytftYzqWlPuvqSEW8qUiea1O2nbdvF/29jrRh7z6WNIOINHJvSniqyHTcsn0s5Xqfaant\nytlPJ9sZPZ5UkZakFZkGpH3eF/E+N3M963OkYWr6gOVdytuWyHK9tNcjNSVcW5aXpd+4PvCIiFy/\nfl12dnZkfX1dvvvuu7MDev78+a8at7S0JE+ePEleVh0AAAAAAADF3B94RH75yPP06VN59uyZ/PnP\nf5affvrpbJWs+fl5WV5elpWVFen1ehHVAQAAAAAAYELIB55Tt27dklu3bkUW+R5N6Ffds3N7w/FT\n6ygrq4qVKLRl1RGyPc2b3qBJ19JuF5mGo91H83cLS1qkd7WBaJawUm/6VlH9kemMkWHK2n6eWsf0\n/qkpKNZ9olfRKtre228t6SLelSxSy9KWG5lu5k1vyvEcOi3Tmw5Zts959U1vk/M9xpPe7k0n9u6j\nrT815UHElvJZxts/q0hlmi43tW9Hps1730XL2u5NT4/mTcOZ5H330L4vaNSdSlVFn9eOQRGpfJEp\n+rs0R+AAACAASURBVGU87/aRY1OZXO9Bkc8q6++NondZ1yTLAAAAAAAAqJ/rA8/h4aF8/vnncu/e\nvaDmAAAAAAAAIJUrReurr76Sn3/+Webm5mQ0GtU2ebJ3JYBcIWLaclPrLwuZjgwNtYSkecK3y+q3\n8qbepM6iXla2N6UgMsSxqF1alhDhXGGZnlD5i8ou470e3tST1JUovH1WW3bk2GhZ+aBou4iUipwp\nwN7wbs0+lnDg1NDismtj6RupfTM6zN+yOpIlrclyr1WVzqj5t1zvUZEh8Ja+qe1n0SmfkWlmFpr6\nve+i3ndJbSphahqOth7tNbJeC+/YqymriCV1pai+6e1S+7/2XbKoDu15Kaojkva8WMcTy3uI93po\n7vvI82l5f4z8zaSpb7oe7+/KMkXvsq4PPDdu3JDbt2/L4uIiK2MBAAAAAADUxJWiNT8/L/1+37Q6\n1v7+vqdqAAAAAAAAvOOK4On1evLNN9/IF198kbzv9va2LC8vJ0X+eMPQcskVEqepo4w3RDG1Dm25\nlhSWlHQKT3qBZR9vP7POnJ6yjYg/lNV7zN57Nvp+Tk2l07bBG3YeeT0sx6IN5U69v1NDtFOkpquJ\n+FMqolMrqwob9tSXGuZfVk+uEHht/dptLCmf0dfSm1aVWm7OVMSisrz91PKs9KTeRKR8lqkjzSy1\nP0Q+nyz7W1LdNfVp/81yjepavbGK92KtqlJXzqujrH7NNpb3qLK2FO1jXUXL+1y1tFtzDlNTJst4\n7/vIZ1Xks977TjXNFcHT6/VkcXFRNjc35c2bN0n7DodD0roAAAAAAAACuCJ4Dg4OZH5+Xnq9nqyv\nr4vIL/PyfPDBB6Ufb169euWpFgAAAAAAABNcH3jW19dlNBqJyP8fMnT68eaiMLSqwrMBAAAAAABm\nnesDz5UrV+Tk5ERWV1dlYWFBvd///u//yo8//uip+j11L39WxLs0XxV5y9PbafNxi+rwLIXYRN65\nTTRz3eScF8Ayz0yqqubw0Z4/bY67Nz839V4p+zfNMpNl+2jqs4xH2uMv2sdyLr3zTmnr986tor1v\nLPd9Ku+cKVqWfqopy5t77h3Pot4hPPdkFXOcaevxXhvLfW+pP3WOB++8JFHvK55rYJm7yzJXTGod\n2n2846HlmZbrXVQ735uV911SU5aWZz4gi8i5ZLRjoPcca+rIzfN7bprld5+mrOg5lVK3i3z3iHy+\naOvUcn3g6Xa7cvv2bdMkyx9//LGnagAAAAAAALzjmmR5cXFRut2uad9r166dpXcBAAAAAADAbu7o\n6KjZOTITrl69evbfvcv8aXhDrzx1a9ulrccSHlfVPpqyUpaWLOon3jbkSnXQ1l+0f2R/qGNurMjz\nKqLvK6njiYUl7Nyijr5ZVE9k6ptXWT0pKVqnfSXXuSnbR8P7fEopO6qsyOdLZGqCJ5WvKFU9NVTb\n8u6S65p7U7SKtpmWK728jGest6YGi+iePZG851NTlkVk2naZyOPy7h8xnmhY7pWc75KR71je1BfP\nWGlJa7Tc19bxpKgNkyzXOZfIFKmIfaooq6hc6++For7iiuABAAAAAABA/fjAAwAAAAAA0HKuSZar\npgl5KwuX8qyYYAmZjpypO3WblLZoVnHwypVGd57IFBFvWKllZQ/P/mWrBXhVcV69bRHRh0Cnrl5y\n0b+dt402dSYybSMy/Lqo3Ol9ItMzinj396RUaOqJTBfRyDmmF401qe2y7F/WlqK/R47nEf2kjLev\nR9UxXY/2+RSZ1pQ6hlxU3nl/tzxfNTypfJ73PG86ouXcWGjqyfmO7bm2lnOsvWdSxhNPn7Rc21yp\nmdryck0dEJmKGJkOHMX7bp66T+TvNkt6ubafp45B0/toyi0rS9MW73uMSPGzhwgeAAAAAACAluMD\nDwAAAAAAQMu1KkXLEjo2KTU825sKpfl7HSwhaZGhetpQ1giR4f2av5fRhPaW7WMJ606d4b9sf+9q\nAan3hjXkOjr1RsN7DiyhpKl11BHKmjPMOnUfT0rFeSypK97wbu+11dbnTblLbYtFzvTDaJHvGJo6\nJlnS1iP3L5MrXc2b4mU5F1ZV94ecqVep/Skybdfy7mPRhNSbSZZ3VEvqS2pKes6Ucg1LP01939W2\nM1cqoXe/lHK992qR6XJz/R73pqbmeg/ypqmWIYIHAAAAAACg5fjAAwAAAAAA0HKtStGKnFHbU8dF\n/5ZDrrDWi8q7qP7INLYoVaXbaPaflCuc3ZKqkGuVkcgwTktYrZU3LNQ7E36usHlvmPIk7bihTT/U\nlFVUrjcVUSR+dSRvn/SEjWvbpd3Gk7oT+XzR7l+2fWr6oWc8Od03+hmXOiZZ7rvIdypvilP0+K4p\n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\nESlaAAAAAAAAAdwpWuPxWF6/fi3Xrl07+9vu7q7Mzc2dLYt+nkePHp07+XIZbxhYZNhwrnBJ76zl\nGtrw0chQRG1IW67ZybXtmf63nG0oqqOKkPZc94L22haxzPQfLTLFysIbZjwp57F40lEi00Sn96kj\nJaSsXku6SFG53nstMt2riPa4LGNQaspoWT1VjSdlbfA+ezV9JjKlpqz+yOOypO1axp267hPN8UU+\no73PBwtLWtakyHu1ilT1HGmJmv5Z1e+H1GvofSblTDf0nL/o9JqiY0tJ+fSm3RaV5akjgmVMTy1X\n+3yx7K/ZJ+L3cFFfcX/gWV1dlTt37sjnn38ui4uL8uzZM9nb25P5+XlZW1t7b9vRaCQ//PCDbG9v\ny9raWuHkywAAAAAAANBzf+AREXn8+LE8fPjwbOWspaUl2djYOPuA8/z5c/n666/l9evXIvLLV6nN\nzU159eqVPHjwIKIJAAAAAAAAl1bIB575+XnZ2toq/PebN2/K3/3d38nh4aFcuXJF/umf/kmuXbuW\nPAePNxXJU0dkuKG2bd6wde9M6ZqyLCs6WELiUqSG5EeG2Fl405Is+1v6ubefeVJQUsrVhrZGHluR\nnH0rZwizpg7PuYkO8c0RHl9UflE9kWH8qeG80WOQN8xbW895ZVWRpjy9T47UmyJVPPvLtilKpfKm\nsln2966YEjmGpfZBT5/x9IE60tpzpnCm1qm9ZrnS7Cx9wzo+e1IgLamqVaVzFpWl5X2vt/w20agi\nBTqlfMvvNks/qfo3V5nI55hnG0v92vM6LdsqWlr//M//LP/2b/8m//qv/yr/8A//IDs7O/LmzZuq\nqgcAAAAAAJhZIRE8Gt1u973/3ev15P79+6WRPwAAAAAAALhYZR94pu3v78vLly+T9vGGXqWGNXpD\nF7WqSLWouy2RIdvWNqRuM80bCqotN3XFC0v93lRCb3qTJizWel8XhStqy8jV76fLjkwDyLUaSmRY\na+TqE960RhHbKhU5w/urTsvSyjWme1NQvGkCOVP5vKkOUe246N806VrTUs+75XpUNe54wvEjnjvn\nlZO6feo95U1Zs6RFFcnZ573pf6l15hhPPPea99p62+KVsw7Lc+iiv2vLinh30fKmEln6iefcatuo\nZelD3tRQTVmp21y0T7ZVtE69efNGdnd35eXLlzIajQofdqPR6Oy/r66uRlUPAAAAAABwaYV84Nnf\n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\nl4X//v3336u+qI1GIzk+PpbBYCCHh4eytrambykAAAAAAADOpfrA0+l05MqVKzIcDmUwGMhglwSx\nyQAAFW1JREFUMDgLERqPx7KxsaGu8PRD0OrqqnzxxReGJgPA/9fe/Xs3cXRhHL/pBfSR68ikjnXS\nBv6AYCgTB3qgtw81sesYUgdzaAP0IU4bO20OP2pEHUC93+I95ijCs7pznzsrHH8/VbB2ZlbS7uxq\nc+8dAAAAAMAs1wOe4XBow+HQzP7/YOb9+/d29+5d29/ft88++8xu3rzpHnA4HNp4PLbBYFC9s5l1\nHmrzHiN1a7z91eYZZte9yVx2tdRviTdPuCa/XV32sFVNIzWfslWtqFmR4/y05rHPalVLInM50EiN\ngtI2Ndt52qu50p65Zhk1GrrGUbeL1BHq61pT+3lm1mlRry/ZtapqzP6PL8+4kWv0SeN5x+iSWRul\ndpuuNl37op7fre59amTWhWp1v5H5vtX3q+6/OjdHrnWzr0XvZTO/W4/sz6D2c+8aTz0/lXoq3uuL\nev5m1B1Va9VE1H62keNMrSPW1Ver+7AIdZxQkeVz587Zzs6ObW5u2h9//GEbGxvSTgAAAAAAACBO\nKrJ848aNpN0AAAAAAABAlLRM+urqqn377bdZ+7KQukyZEnbuTWtatkh4mTcN4iRq2kfXdq3D6U8a\n00sNLVY+864xI2mJmce5mlKkpj5mU5carek7q70aGjyrVci12te8vubjlukqrVKZSm1apTKp78t7\nfYqk8ZRkHT/H/WR/tkoKZOS86SvV1nNN7Lom1B4P6r1P13uPplSoKeGl1zLT92ap6RF9pJxGxslM\nM+1qn32cZKYpdqm93/DeS0buS1ulZpZExosc59mpfJH2Hn2MkdFvX+dG7fh9pBiaJSyTvrW1FW57\neHioDg8AAAAAAHDmyQ94FFtbWzadTpe5CwAAAAAAAKeelKKlmE6nNp1OQ6tpzWsVsjkrUmnb219t\nWpO64kl2GJiH9z2W9j+jorwaCtfXyhpKKmGEGkoaSRXKPH+iMr83NWw3cmz1vQKMOrdmhqJ6P5eu\nviJzipruEjlO+tivyHnvpaa+tEqx8n5HNaHypT5q58hI6rN6fmemHkSOs0iKVe38EAnnV9POF2lV\neiBy3qtzmCf1xqvVPc6szHtsb6p7zXyipGaqMu+R519TUys946vzWV/nTMZ32SrNrNXvnJapmaU2\nXp7jMfOZQ+Y8Ny/lAc90OrXffvvNnj17Zm/evHFNYETuAAAAAAAA5JAf8EynU7t+/bq9fv26um3L\nYpgAAAAAAABnhfyAZ3d3146Ojmx7e9tGo5ENh0NXuxcvXkjLrHtCcLvCeT2hW95QVM823orynn3J\nXMVgnpI6Ft1u2bzh8N72Sl9dbTLDnNXwa88YmX11bTcvklIxSw1L7SucXE3bqA079+6nSk0p8p4/\n6nEyL3OVkVL7zDSczJQ7r8h57/lcPrVrknpN8aaItEqv9e6Lt82iv3v79Wo1h2fNebXfQWS+U9Pk\n1BQvT79dao+HyL5EqNfNmtTg2hSPLur9m5IKGBnfq4/rpnqti6R4ZZSliKidA+Zf88hMVW91vz3/\nWuYcpv7G875n+QHP4eGh7e3tVdfSWV1dTam/AwAAAAAAcNbJq2iNRqPwg5pbt26pwwMAAAAAAJx5\ncgTPyspKuO2VK1fU4c0sN92kRA2dahUW6t0uUt2+1G+pbbboygMekVDUzKr6kf2MyEyrqt2vyCoK\nkbSR7GOw5byhhp2XXot8niV9rF4R6be0j9FxIiHQmekJmWHfXcdZ5vVRTbFS58DM9FXPeGb6cXJS\nn542JX2ndKt9R8aPiKRq1F5HurbPvkfJTLGP3L+pKV7ecUrbtLr38Y5fek09l6OraGWmnLW8bz+W\nmXLpvb5l8n7etd+R9ziLzieea2QkpTlyzLRK82ypNj098luwj5RVs4QInj4mCgAAAAAAAJTJD3hu\n3LhhOzs7obbXrl1juXQAAAAAAACR/IBnMBjY+vq67ezs2KtXr6ravn79mkLLAAAAAAAAIrkGz5Mn\nT8zMbDgc2tbWlpmZa7n0yWQi5chGat0odSJaLsXmGT9znEjtBW+Nj9p6PmpO/KL+S/vWtX1tnYdI\nDmUkB7W0jVrLIyKSW1tbCyRaB8JbMyOzNkqEmtdfOz9F2mce296aMWrtiJZa1n6ateylY2u/g8w5\nKHKcRpZw9c7nkZoZ832odalKInNn7bmm1kjw3m/0dW7NUuo9ZNRq8u5PZvvMOmJd23naR+o+ef7e\n1Z9ary6zrkhL2TWNasdsOZ9FvoMS9d6j9hjy7lfNfNLH/at67xCp4+WZK5Z9rajdpku0fmHpHkV+\nwHPv3r0PaVbHO/D69WtX275+SAEAAAAAAPyXyQ94zp8/b2Zm169ft3PnzrnbPX/+3J4+faoODwAA\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "training in the disordered phase\n", "layerwise pretraining\n", "training model 0\n", "\n", "Before training:\n", "-ReconstructionError: 1.410001\n", "-EnergyCoefficient: 0.110492\n", "-HeatCapacity: 0.092223\n", "-WeightSparsity: 0.337057\n", "-WeightSquare: 1.902251\n", "-KLDivergence: 0.030492\n", "-ReverseKLDivergence: 0.014561\n", "\n", "End of epoch 1: \n", "Time elapsed 1.76s\n", "-ReconstructionError: 1.413065\n", "-EnergyCoefficient: 0.100761\n", "-HeatCapacity: 0.086829\n", "-WeightSparsity: 0.335294\n", "-WeightSquare: 1.943940\n", "-KLDivergence: 0.030426\n", "-ReverseKLDivergence: 0.010565\n", "\n", "End of epoch 2: \n", "Time elapsed 1.832s\n", "-ReconstructionError: 1.411849\n", "-EnergyCoefficient: 0.100620\n", "-HeatCapacity: 0.074392\n", "-WeightSparsity: 0.332099\n", "-WeightSquare: 2.016817\n", "-KLDivergence: 0.030483\n", "-ReverseKLDivergence: 0.010048\n", "\n", "End of epoch 3: \n", "Time elapsed 1.841s\n", "-ReconstructionError: 1.404504\n", "-EnergyCoefficient: 0.101234\n", "-HeatCapacity: 0.050446\n", "-WeightSparsity: 0.319267\n", "-WeightSquare: 2.294243\n", "-KLDivergence: 0.030219\n", "-ReverseKLDivergence: 0.010214\n", "\n", "End of epoch 4: \n", "Time elapsed 1.817s\n", "-ReconstructionError: 1.398299\n", "-EnergyCoefficient: 0.101688\n", "-HeatCapacity: 0.081227\n", "-WeightSparsity: 0.301608\n", "-WeightSquare: 2.780976\n", "-KLDivergence: 0.030040\n", "-ReverseKLDivergence: 0.010416\n", "\n", "End of epoch 5: \n", "Time elapsed 1.819s\n", "-ReconstructionError: 1.390320\n", "-EnergyCoefficient: 0.105802\n", "-HeatCapacity: 0.152750\n", "-WeightSparsity: 0.288190\n", "-WeightSquare: 3.385402\n", "-KLDivergence: 0.029708\n", "-ReverseKLDivergence: 0.010952\n", "\n", "End of epoch 6: \n", "Time elapsed 1.834s\n", "-ReconstructionError: 1.386955\n", "-EnergyCoefficient: 0.106775\n", "-HeatCapacity: 0.221597\n", "-WeightSparsity: 0.282430\n", "-WeightSquare: 3.976031\n", "-KLDivergence: 0.029335\n", "-ReverseKLDivergence: 0.011462\n", "\n", "End of epoch 7: \n", "Time elapsed 1.826s\n", "-ReconstructionError: 1.380671\n", "-EnergyCoefficient: 0.107693\n", "-HeatCapacity: 0.250585\n", "-WeightSparsity: 0.280978\n", "-WeightSquare: 4.538808\n", "-KLDivergence: 0.028238\n", "-ReverseKLDivergence: 0.011508\n", "\n", "End of epoch 8: \n", "Time elapsed 1.831s\n", "-ReconstructionError: 1.377370\n", "-EnergyCoefficient: 0.109179\n", "-HeatCapacity: 0.332766\n", "-WeightSparsity: 0.282399\n", "-WeightSquare: 5.091576\n", "-KLDivergence: 0.027742\n", "-ReverseKLDivergence: 0.011566\n", "\n", "End of epoch 9: \n", "Time elapsed 1.85s\n", "-ReconstructionError: 1.373979\n", "-EnergyCoefficient: 0.118749\n", "-HeatCapacity: 0.386149\n", "-WeightSparsity: 0.284935\n", "-WeightSquare: 5.627777\n", "-KLDivergence: 0.028864\n", "-ReverseKLDivergence: 0.014665\n", "\n", "End of epoch 10: \n", "Time elapsed 1.847s\n", "-ReconstructionError: 1.370511\n", "-EnergyCoefficient: 0.106519\n", "-HeatCapacity: 0.393450\n", "-WeightSparsity: 0.287157\n", "-WeightSquare: 6.144994\n", "-KLDivergence: 0.026811\n", "-ReverseKLDivergence: 0.010174\n", "\n", "training model 1\n", "\n", "Before training:\n", "-ReconstructionError: 1.637121\n", "-EnergyCoefficient: 0.191978\n", "-HeatCapacity: 0.119853\n", "-WeightSparsity: 0.355607\n", "-WeightSquare: 1.941890\n", "-KLDivergence: 0.298255\n", "-ReverseKLDivergence: -0.069274\n", "\n", "End of epoch 1: \n", "Time elapsed 0.526s\n", "-ReconstructionError: 1.628203\n", "-EnergyCoefficient: 0.165000\n", "-HeatCapacity: 0.053757\n", "-WeightSparsity: 0.364478\n", "-WeightSquare: 1.817653\n", "-KLDivergence: 0.294797\n", "-ReverseKLDivergence: -0.089236\n", "\n", "End of epoch 2: \n", "Time elapsed 0.527s\n", "-ReconstructionError: 1.630671\n", "-EnergyCoefficient: 0.154347\n", "-HeatCapacity: 0.049968\n", "-WeightSparsity: 0.367344\n", "-WeightSquare: 1.722828\n", "-KLDivergence: 0.290888\n", "-ReverseKLDivergence: -0.097758\n", "\n", "End of epoch 3: \n", "Time elapsed 0.526s\n", "-ReconstructionError: 1.625440\n", "-EnergyCoefficient: 0.151741\n", "-HeatCapacity: 0.040635\n", "-WeightSparsity: 0.370629\n", "-WeightSquare: 1.653807\n", "-KLDivergence: 0.290901\n", "-ReverseKLDivergence: -0.100941\n", "\n", "End of epoch 4: \n", "Time elapsed 0.529s\n", "-ReconstructionError: 1.631598\n", "-EnergyCoefficient: 0.148916\n", "-HeatCapacity: 0.043386\n", "-WeightSparsity: 0.373490\n", "-WeightSquare: 1.600897\n", "-KLDivergence: 0.290563\n", "-ReverseKLDivergence: -0.103002\n", "\n", "End of epoch 5: \n", "Time elapsed 0.523s\n", "-ReconstructionError: 1.631681\n", "-EnergyCoefficient: 0.147096\n", "-HeatCapacity: 0.044617\n", "-WeightSparsity: 0.375211\n", "-WeightSquare: 1.558694\n", "-KLDivergence: 0.289884\n", "-ReverseKLDivergence: -0.103878\n", "\n", "End of epoch 6: \n", "Time elapsed 0.527s\n", "-ReconstructionError: 1.619865\n", "-EnergyCoefficient: 0.146219\n", "-HeatCapacity: 0.045863\n", "-WeightSparsity: 0.376418\n", "-WeightSquare: 1.530677\n", "-KLDivergence: 0.289061\n", "-ReverseKLDivergence: -0.104829\n", "\n", "End of epoch 7: \n", "Time elapsed 0.524s\n", "-ReconstructionError: 1.615215\n", "-EnergyCoefficient: 0.147237\n", "-HeatCapacity: 0.040232\n", "-WeightSparsity: 0.376653\n", "-WeightSquare: 1.512036\n", "-KLDivergence: 0.289880\n", "-ReverseKLDivergence: -0.101434\n", "\n", "End of epoch 8: \n", "Time elapsed 0.527s\n", "-ReconstructionError: 1.616639\n", "-EnergyCoefficient: 0.144586\n", "-HeatCapacity: 0.046140\n", "-WeightSparsity: 0.378086\n", "-WeightSquare: 1.507200\n", "-KLDivergence: 0.289696\n", "-ReverseKLDivergence: -0.104417\n", "\n", "End of epoch 9: \n", "Time elapsed 0.524s\n", "-ReconstructionError: 1.616187\n", "-EnergyCoefficient: 0.145014\n", "-HeatCapacity: 0.045080\n", "-WeightSparsity: 0.377884\n", "-WeightSquare: 1.513952\n", "-KLDivergence: 0.289545\n", "-ReverseKLDivergence: -0.105390\n", "\n", "End of epoch 10: \n", "Time elapsed 0.527s\n", "-ReconstructionError: 1.610943\n", "-EnergyCoefficient: 0.144724\n", "-HeatCapacity: 0.042013\n", "-WeightSparsity: 0.377583\n", "-WeightSquare: 1.528702\n", "-KLDivergence: 0.285813\n", "-ReverseKLDivergence: -0.105255\n", "\n", "use persistent contrastive divergence to fit the model\n", "Before training:\n", "-ReconstructionError: 1.369201\n", "-EnergyCoefficient: 0.108127\n", "-HeatCapacity: 0.357266\n", "-WeightSparsity: 0.287157\n", "-WeightSquare: 6.144994\n", "-KLDivergence: 0.026900\n", "-ReverseKLDivergence: 0.010947\n", "\n", "End of epoch 1: \n", "Time elapsed 1.709s\n", "-ReconstructionError: 1.370256\n", "-EnergyCoefficient: 0.101817\n", "-HeatCapacity: 0.340879\n", "-WeightSparsity: 0.288013\n", "-WeightSquare: 6.221397\n", "-KLDivergence: 0.026062\n", "-ReverseKLDivergence: 0.008972\n", "\n", "End of epoch 2: \n", "Time elapsed 1.723s\n", "-ReconstructionError: 1.368565\n", "-EnergyCoefficient: 0.100916\n", "-HeatCapacity: 0.373686\n", "-WeightSparsity: 0.288643\n", "-WeightSquare: 6.287891\n", "-KLDivergence: 0.025863\n", "-ReverseKLDivergence: 0.008142\n", "\n", "End of epoch 3: \n", "Time elapsed 1.714s\n", "-ReconstructionError: 1.369267\n", "-EnergyCoefficient: 0.101824\n", "-HeatCapacity: 0.407277\n", "-WeightSparsity: 0.289272\n", "-WeightSquare: 6.348709\n", "-KLDivergence: 0.025783\n", "-ReverseKLDivergence: 0.007974\n", "\n", "End of epoch 4: \n", "Time elapsed 1.712s\n", "-ReconstructionError: 1.369020\n", "-EnergyCoefficient: 0.100957\n", "-HeatCapacity: 0.393685\n", "-WeightSparsity: 0.289869\n", "-WeightSquare: 6.407252\n", "-KLDivergence: 0.025918\n", "-ReverseKLDivergence: 0.007682\n", "\n", "End of epoch 5: \n", "Time elapsed 1.707s\n", "-ReconstructionError: 1.366876\n", "-EnergyCoefficient: 0.101797\n", "-HeatCapacity: 0.385496\n", "-WeightSparsity: 0.290476\n", "-WeightSquare: 6.466989\n", "-KLDivergence: 0.025767\n", "-ReverseKLDivergence: 0.008114\n", "\n", "End of epoch 6: \n", "Time elapsed 1.716s\n", "-ReconstructionError: 1.367778\n", "-EnergyCoefficient: 0.101060\n", "-HeatCapacity: 0.384008\n", "-WeightSparsity: 0.291032\n", "-WeightSquare: 6.523547\n", "-KLDivergence: 0.025948\n", "-ReverseKLDivergence: 0.007574\n", "\n", "End of epoch 7: \n", "Time elapsed 1.721s\n", "-ReconstructionError: 1.367335\n", "-EnergyCoefficient: 0.100704\n", "-HeatCapacity: 0.400341\n", "-WeightSparsity: 0.291557\n", "-WeightSquare: 6.578193\n", "-KLDivergence: 0.025721\n", "-ReverseKLDivergence: 0.007819\n", "\n", "End of epoch 8: \n", "Time elapsed 1.721s\n", "-ReconstructionError: 1.366027\n", "-EnergyCoefficient: 0.101421\n", "-HeatCapacity: 0.382580\n", "-WeightSparsity: 0.292064\n", "-WeightSquare: 6.629922\n", "-KLDivergence: 0.025839\n", "-ReverseKLDivergence: 0.008045\n", "\n", "End of epoch 9: \n", "Time elapsed 1.716s\n", "-ReconstructionError: 1.364656\n", "-EnergyCoefficient: 0.100726\n", "-HeatCapacity: 0.373966\n", "-WeightSparsity: 0.292563\n", "-WeightSquare: 6.684762\n", "-KLDivergence: 0.025740\n", "-ReverseKLDivergence: 0.007831\n", "\n", "End of epoch 10: \n", "Time elapsed 1.717s\n", "-ReconstructionError: 1.366732\n", "-EnergyCoefficient: 0.102005\n", "-HeatCapacity: 0.355404\n", "-WeightSparsity: 0.293075\n", "-WeightSquare: 6.737060\n", "-KLDivergence: 0.025891\n", "-ReverseKLDivergence: 0.008087\n", "\n" ] }, { "data": { "image/png": "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\nZWU5HxbT8n1Fpv8ZI8V7v8sdK5p4ruc2eK+50s8bbfM+j0feB2o8J2q/i0Zke6PvzyXVuB7O47V2\nFu+1oN3PPclyt9uVpaUl2dzclP39fRERefz4sfz2t7+V1dVVefjwoezu7sre3p4sLS3J/Py89Pt9\nGQ6Hsr297a0eAAAAAADgned+wSMi0uv15MMPP5QPPvhABoOBXL9+/fRvOzs7cvv2bTk4OJB+v3/6\n+dramiwtLUVUDwAAAAAA8E4LecEj8suqWKurqxP/trW1JUdHR9Lv9+Xly5fS6/Wk1+tFVZ0MUfKG\n0zXtXyqULFVnZH3W8NUT0xaaGy33u07z8dBcG2el++SUq3We+1PTsU39rUZoalNbUrTnJrf93u87\n3i5LP3358qWrDbPC0uc05z1ybLCMQRFlRzv57m2Emrc9pp63cfyE9l4ZXab2WXB0u1LPwqn6teNw\nKaWe8Sel2Zao/zyw9NPU55YxLPL6TO3f1K6SvzPbULuve8eQkmNQ9HNqlPF2vXjxYuJ2YS94zrK4\nuCiLi4u1qgMAAAAAAHhnuCdZ9nj+/Hmb1QMAAAAAAJwL1SJ4xg2HQ7l69ar85S9/cZdVKjRZW64n\n3HYWtR0KHsGSfqdNdagRlucNi43k7fNtzZyvOYaW8M+S6Sa5LOe/REpCUx2Wes7DaguWa1U79s7C\n8dGOG7nj8ayyfJ/odDjN9rN2z5/255XIdOdSdaTKslx3bVy35y2NZpT2GGrSj7z1aNIFtftb2mKZ\nekDTZu/zflv9p40pAWpc05H3ylpjUBvPKK1F8Pz1r39tq2oAAAAAAIBzJRnBc3R0JDs7O0UqffXq\nlRwdHRUpGwAAAAAA4F3TmKI1uqx5pLm5OTk+PnbPlj1a3qR/94pMMfGG4zfRzELfxsoH3tDo0X1q\nrnhTO5xyFkPgS11nlpV9ovtv2yvQlFoFYJr7lSVdLrWdZf9aIsPGvWqlLeSeg8iUgdpKrLI0Xm6N\n/hCZZqq9br2r6dQ23q6cZxRPWnPECoIebaxqN619QGv0O6dWvIngTV3RPn9577eRvw0s2uxPJZ73\nvalYkec2t462f49G1t/2qoLjki94Op2OiIhcu3ZNVlZW5OLFi8lCBoOB7OzsyOrqauNKWcPhUB4/\nfiz7+/uytbUl//iP/+hoOgAAAAAAAEQaXvB0u10REbl+/frpy56U3d1d2d7eVlW4uLgoy8vLcu/e\nPbl7925GUwEAAAAAADBJY4rW2tramS93vvnmG7lz505Wpd1uVz799FPZ39+XlZWVrH1P1Ah9aju8\nyhsy7Z0138ubUmMNa52FcN5SYcptrJoUeZ6bym37ehSZ3r4VmeI1Dcc5V+nzMqn8plDrto9h7RUj\nmkKua1wzTcfem/4XkR7cxuqemrZEroIUmWrRxqpP07YajiZ9Tbv/qMj0lrbHOfjPRxsr/3rvT9P6\nHDYNIscK7fae1GvvGNLGar1tT+MwLvWM0riK1vr6+pmVvnz58syXQJNcuXJFnj59mr0fAAAAAAAA\n3uZeJv3169cR7QAAAAAAAICR+wXPq1evWtkXAAAAAAAAv2icg0fj+PhYnj17JpcuXcrabzAYuKJ/\npjUPeNaW+tSyzAfU1nfW5BTP+jKN3rzpUktxl6Q9fxFzZuQqNQ9RZFumWRvzAFhYxj7vvAjTOl+B\nNqdeM8+Kd3lerWm4P1nkznGg/W5t38dKaWOORuvy17nXh2Vuumk9T6O036vtca+m3HuKd5n0VN1a\nlmNe6v4YXWduW7TLcpdk+c0TOY9TKd7v4p2LzaKNdxbuCJ7V1VXZ2NiQv/3tb1n7bW1tyfLysrd6\nAAAAAACAd577BU+v15N//ud/ls8++0wODg7O3P7w8FCuX78ur169Mq+gBQAAAAAAgP/jTtES+SUa\n59q1a7KxsSEiIktLS9LtdmV+fl5EfpmIeTAYyJMnT2Q4HMrCwoLs7e1FVD3VaoXi1Qj9amPJ9dHv\nFZ12E5ki1faSeW2k90Qur+utIypUPrcu77K6bYYJR9c/SnOevctsnofwe+/5mNa02ZJpP6nvPE1p\n2jkiUxO9KcizkiZZSu73j0oN1pyryKXetW0pxXINz+r1HSnymcny7PKupseK2O6102bWjrnVtPbT\nNu6vIS94RET29vZke3tbvvnmG+n3+8kH+JWVldMXQQAAAAAAAPALe8EjInLr1i35/e9/Lz/88IM8\nfvxYBoOBiIh0u1358MMP5cqVK9LtdiOrBAAAAAAAeOeFvuAREel0OrKysjIV8+t40yNqpVdoRK70\n5G17ZEhZ6bDBUqlY0xTuWDIlYppDTiNpwydrrH7W9opakStAldpn2ldSqRGOPq3HwJJCUrKNmjTB\nqPpzUw3bVjttwpKa6d3fcn/TPDu1Nba0sVJmKd5VnyLPhyUlvNQzdk75pdtwVj01ym07LarWqrPT\n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\nGO0nlvOs2afp+6T+pvncuk+qLal2aXn7U6qsUd5rcXz/ly9fqva7ePFiWL2WvpFLW5b2nNU+t9M2\nHueMKZP6iuXcaq/7FO8YomlX0z6517BlH+94mtM2Tf2We0/kuZ1UXg7L/dZCU5b2uOTe95p4x0Pt\n/tr7jkj63qNpT9N2oyLvq6XuFZHPtd7vpd1HI+q+k3qW9d4XU0qOo7Xv8d7fHJrtx/exXDOpOmv2\nkxrHs9SzoHc8svA+B1nGvaZ6UvceIngAAAAAAABmHC94AAAAAAAAZhwveAAAAAAAAGbcTM3Bo1Eq\n39ySU9+0f6qsVBsj8/dy2nZWu6L3Se2fk9+uyQGNnEeo5PwXmuNWa84Vb66xd84YbW6uNndZU2/0\nnA2lxg2vkvnBkz4f3ze3fu95yXWyb9MYMq1zYWja5R3DNPWNlxWZU285z5HzipxVTu45jJxXIPpa\nKTWPmGXuh8h5yDSfR/E8I2jvkZH9LHKunFLzB2rHY8s8KymW58uIZ9nUNqm2Nal1T9HU6b1uI0XO\nGVSjvZ66pul3Rg3e72KZP9D7XNNUT+o3DxE8AAAAAAAAM44XPAAAAAAAADNuplK0vOG8nhBHbxpN\nU9kp2joiQzdzU8S0IdOR4Y5WkakbtVICIsNvS7XF0i5NudYwUG0ItDf1Rdue3Po122vrbNrGGz7r\n2T8yRTKyXWeVqT2eTfeO1P6jNPt7j4Hlu3jT5zTbacOcvcc19bl1PGlSKmw9dwwYVyM11Zsqbnn2\nscj9LlHjnyYNwJv2aOHtW5pyR9VK+7D02cg02Zzlr3OvKW16uOV5wZNWOC5y3LDUn7u/N/VM267R\nfaz3nVL3yMhUV+3vdMt4WOp3Xm4bm/bR1BGBCB4AAAAAAIAZxwseAAAAAACAGccLHgAAAAAAgBk3\nU3PweOXmsEYqlRst4l8qNJI3/zG1XUTeslbuPtHLQeYuNaqZr+Osdmr2t+SdakTPX+NdJl17blLt\n0fLk1zfVOU3LVJaa60l7XkrPraJpg2V773xzqXosc0Z4thmvM3dss5Q7zjt3RM69J1VG5NwSpeYF\n8M6BU+o+YOmzljlTas4HmNuGyOcYyxyKo2rNuxNZv3dOMm9bIuZWiZxPsdQ9ZRquoUm0zwupfSzP\nhNo+H33MNOcm8hrW8h7PVFnav3nvI16R7x+0z7JE8AAAAAAAAMw4XvAAAAAAAADMuJlK0coNEYsM\n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\nPrz756a7RabUWPexhMp7j03TNZCb8uYdR70pf6XuL9HnOTcVy5N6o0nl86704vncwpJqob2/lkqT\n9bJcP9ZV+SK/gzdF0JvO6Lk/Rj8Xevqm9ntZfntErMqXqqspxS5yHLaUq0n/K/VbSLudJdVcc38u\nPZ5Fnk/vbx7N55Z0SK3cY+G91ks+73vrdEXwpCo/PDwUEflV6taoV69eeaoGAAAAAADAG64XPJMM\nBgMZDAYiIslJlIfDISlaAAAAAAAAQVwpWsfHx/Ls2TO5dOnS6Wd7e3syNzd3uiz6JHfv3p04+XJp\nnjBLSwh4Ux25s9BrU3osoXremco1co/9+D7WlQfaCKvLZQkR9B5Pb/piiiX1TFNWU1sizkWNNM3x\n8izjhma7yBQrrVIh196w4qhQ+UnlecfhcaXCrEuV5U2NTvGGTFs0HS9LP/GmuraRluS9Pmtc65Zr\nzpJiZhnPIlZHiryvRe7fRupMSuR1oi2r1HOkVY3UFUv93uc/733TUlZuP/emrmnHo+iUz8hjoK0z\nVX+p/jtt+3ufCbX1p/qK6wXP2tqaXLt2TT7//HNZWFiQhw8fyv7+vszPz8v6+vpb2w6HQ/nhhx9k\nZ2dH1tfXk5MvAwAAAAAAII/rBY+IyL179+TOnTunK2ctLi7K5ubm6QucR48eyddffy1HR0en+2xt\nbcnTp0/l9u3b3uoBAAAAAADeeXMvXrwoE+87YjgcTvw8N4rnvffem/h5jdQT70zX2nQTS/2adpUK\nV6wlJ/x5dHW3yHMTGQKe2iZnu7PaZRH9XbRla+rQ9mdtaGtqPGlSKl0k8vpObWOpPzJdLTLdLaKs\nnBDoSStGRt9rPGOv9zxHikw5nVTeJCXTRnL6ycmY0kZ6guV+XWof7VgduX/kvdrC0k/OatMJy33R\nW9Yob9+wXMM1Ul61Io9ryX6SqlO7f3QqWar+Uv3MotQ0DN5yrb95NLwpQtqyI1PuIp9xaqWcen7L\njW/X1M5UXwmfZHmSTqfzq3+ePHlSo2oAAAAAAIBzr8oLnkk2NjaSkT0AAAAAAADQc8/BYzEcDmU4\nHBaZaLlWGkDudt6w2iaa7xWZUmRplzcFJWJGeUtYnEZTKKylb2jaUmqFDO0+lu0jw38jyvKGLNcI\nO29qY+7+ljTRUik93jD7yLDYHJZxtGTYe6otnjQaC+11ohkbvWme2vLaTjseZ0mdsfQt73nXpD95\n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\nwIyb2RQtS5hzbqh7ZJh7zt/Oape3/shVFCypAZZQdOuM8pEpZ960KO3+kX1wlKb+yL4xLrc/lA5x\nrXFstSz9JPd8esOvtaLTKDTl1upDpcaQcd5VLbzXtye9o4175bSEzUelfpdsZ6lxb5S2/+V+z+hr\nzpKu04bIVCZvilXJ52KNyL5VKi2x6ZkuYhWtSN7nP23fKtWfUrTPTpr9Lf0k9bn2O+b0E++zYI30\nWktZ3ufCyGevyHQxb1u06cFE8AAAAAAAAMw4XvAAAAAAAADMuLkXL16UW0oCAAAAAAAAxRHBAwAA\nAAAAMON4wQMAAAAAADDjeMEDAAAAAAAw43jBAwAAAAAAMON4wQMAAAAAADDjeMEDAAAAAAAw43jB\nAwAAAAAAMON4wQMAAAAAADDjeMEDAAAAAAAw43jBAwAAAAAAMON4wQMAAAAAADDjeMEDAAAAAAAw\n4/6+7QbkuHjx4sTP5+bmTv/9+Ph44ufjRrdLado/VVaqLd56msqy1KnZX/v9R3n3T3nx4oV629F+\nojk24+3MPYbe49RUnuZ4Nm2Tu79F5HnWHpcm2r7y3nvvTaw3+nyO8lzr2n6qPc+W/mTZrkS5Td9F\nW0/OmDLaVzy8/aTU+Gy57nL7n5WmzSXvVRH9JPc7WPq3Zdwo1ZYUbVm52+Rsp9l/lPa4Wp9Rotoz\nvo/3eGp4n520ZUX2U29bNHU07f/y5Ut1O1LPspq2jcu9p2ifF7y8v8VKPeNG/v6z9MWIfmLpG5H3\n2xq/Ry39tNT9wfv7y7K/SPreQwQPAAAAAADAjOMFDwAAAAAAwIzjBQ8AAAAAAMCMm6k5eFK5ed65\nHVL5eNrcOI2m/TXtj8yrtOyjzYuchjzfyFxhb+63heZcafps0980/aypPG8+aaqsUnnek1iOYY2c\n5Mi5FyzjYam5WZrkHsua/UTk/9pXMvc8tX8bc6FZ5nap0RbN55Fzxlhpx+GS+2hYxqPcOi1zDFie\n71K045nne4nkzZmR+/xpbZNHZBtLPUdZ+oZ3jo5S5+6sujTle/t65H2nSe7zRlPfKPXbqGTfTu0/\nKmdOr9xnplpzEmn2jx7ncu9pkfO6eZ89rPOIpe49RPAAAAAAAADMOF7wAAAAAAAAzLiZStEa5U1j\n8JaVog1x1IQje+v0htZ708U0qTclwuS9qSe5rEvbWco+63Pt9/IurWnZ3nv8tf1cGyofGbLqDRVv\nO03Usn/uPt6+qQ3nr5V6o+3rlrJz67SG9mpEhilreK9FyxgUMZ6k6olgSZfWsDyHRN4TcpVMT0/t\nr5WTUuEZeyO/j/dZ0Js2bEnfi+yzkc9BJZ4vI59TR1mOR6nfE5rtvVMPaPexPHvk3rdLnVNP+bnH\n0JIyZ+k/kelvkWm/mvq09UT+XhhHBA8AAAAAAMCM4wUPAAAAAADAjJupFK3IcCdvuGFK5IzullBs\ny/eqkaqRqq9EOoU3nNZ7PjThr97w0xopQVqRqVfaepo+zwmVP6ts77nx1h+ZBqRNnbGMNZFpOJaw\n2lLj+Xg5TSHHJUN9U3Wmto8MA7ekiOWWO0ob5lw79UzDU06pa92bumWpp2Qqo6Ysbzj/qBJjS+6x\niryneFeN8aZUpFjSg5qUStWtkU49qRzvGJV7TUQ/C+b+fvOOYZG/M7zjRunfPLlqpRBb+lmpVKZS\nzw4laY6rSPo3DxE8AAAAAAAAM44XPAAAAAAAADPOnaL18ccfy1/+8peItmSxzHau2c4brhiZlqVV\nKtzMkhKnXdUgtU1E6FuNUNaas+KfpeSKJ5rvHLmyiTc1IEfbaZrefpbbByPTNJv2914zpc7LeLkl\nV0eKPB9Nobk59WnrGFfjurWkvnmPRcn0YO99LTKVqFaaaWSqh4U3LSu3nRHjyXgbmsr3KHWeLalI\n3hRgyxiU+7ygfQ5KbdNUXsRqa7XS4nPL8qbv1b6Gm8oaFZnyWjK1WyvymT1nu1yW4+5NDfWkk0af\nS+97AncEz/HxsRwcHHiLAQAAAAAAgFFIitbGxoZ8//33EUUBAAAAAAAgU8gLnkuXLslf//pXuXXr\nlnzzzTcyHA4jigUAAAAAAICCew6e+fl52dvbO/3vfr8vX331lczNzcnq6qosLS15q5goMg/SkucW\nmWdoyQlO/a3G0oLe+QFKz1/jnZvEu7xhqaVfU5+XWJ5zkhrzvETOJ3SWyOtDm5PrWSq0iXd+pFRZ\no0qOeTVymrVLS2pFzpNi2afksqGee4rlO1rGDcu8cJZr1ttPmupqqjf1N++9NHLuolJjQuR38c4j\nUeL7ep8/NeWOiqzDMp+Id34m73Np7nbe8TBqnpXI+c9KzVnmfd7Q1OFlmb8w8txa5hzMmdOr1NxX\no5qOmecZQfssWGrOwKbvouF9jtIei6Z6Un3F/YLnhx9+eOu/e72e9Ho9GQ6H8uDBA9nb25OPPvpI\nVlZWpNPpeKsDAAAAAADAGPcLnpROpyNra2uytrYmR0dHsr29LXNzc7K8vFwsqgcAAAAAAOBdVOwF\nz6jFxUXZ2NiQ4XAoX3/9tWxtbcnVq1fls88+y4rq8YZ+Re4zC7xhypqypl1kaLKmjnE1lgyMDO0v\nGcJeK/xWG9paIy1IG5pbqp+WPDellifV9Edtn4/iTbHJrUNzfUemj1pCg70pYrnbNGlqV24qpHU8\nmbTvWaJDtTVy+7I3davUODHOG9qfu3/NdK0mueNOZHqGtqxSaX3ee5q2jd7U6tH/zhlPNOVHputH\nXvdape412jo97dKW1STi2ih5/4wqV7tN2+nInjTTtu/b46q84BEROTw8lAcPHsijR4/k+PhY/uu/\n/kv++7//Wy5fvkxUDwAAAAAAgEPRFzzD4VD29/flwYMHMhgM5Pj4WObn52VlZUVWV1el2+3KcDiU\nH374QR48eCC9Xk9WVlZKNgkAAAAAAODccb/guXfvnty8efOtz549eyZff/21PHr0SER+CS3q9Xqy\nuroqV65ceWvbTqcjKysrsrKyIv1+X27duiXXrl0rEtHjSVHRhn1r6supR8MbVpv6/jXSmLQhbSXb\noFUjpWe8vNywPG/IcmTf8Pb5yFDunHqbtvGmmESm20Smu5QK67WwhOhGrjbStG/J0NraqRbasj3h\n7E1/s7QxMuQ7Zbz+nFW0NP2k7RB0DW1qaepzb0rPKO11r/lcW6e2/pK86Sq1n+Wa6rQctxqpIpbn\n0tTn2rT5nPHEMt7l7NskeuqB2r95NNtHs9Sf6kPW1RtLpdd6aY9N7n1EmzIX2c8s21vS4LxjqPsF\nz5/+9Ce5ceOGHB8fnxmtc5aTFbg2Nzfl4sWLcunSJW/zAAAAAAAAzj33C57j42NZXl5+679T0Tpa\nGxsbcufOHbl79663eQAAAAAAAOdeyBw8lmids8zPz0+s54Ql3KpU6oulvtxQvlKh9dp6aoULp+qx\nrmRiSQnI/a5N5zYyXUbTLm2KVW7dTfVredMiU6zht6XCxi0h7Bol0z4ir2/LNt40Gst1alnNJPK+\no70npDR959xrrUlun6+ZxjKJJUUsKhT9pExtikfuNtrtSqY9eFPCPUo+b6T21+5rTanQ1Nv2PUVb\nX2SaqabOUumv05TaclaZkeOtJdXW2xbNs6z32aFkP4u891l/86RYzpPleGqeMSJ/s5RM+03xHsvU\n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\n8oyde6+dhukFtHWN8p7bUvcn7T6jItOiaj1jelPcaqVraffJTTsf3ye3jqb9tSJ/W+Teqy33iaTG\nygAAHKNJREFUzch0r3FhL3ieP38ue3t78uTJExkOh8mHouFwePrva2trUdUDAAAAAAC8s0Je8Bwc\nHMjGxob6bVmv15Pl5WVZWVmJqB4AAAAAAOCd5n7BMxgM5Pbt23LlyhW5ceOGLC4uiojIzs6OrK+v\n/2rbfr8v/X5fer2et2oAAAAAAABIwAuevb09WV9f/1W61aR8sW63K6urq7K6uiqbm5ty69Yt6XQ6\n6rq8ufS5vMt7WvIMS+XxevOptdt483xTeY458yDUzIUer2+8zhpLVWr7WeT8SKVy52suLamp1zKX\nhnfp1lT92rk02jg3kfO0RM4D0NSWknOraPfR1BM5R0epeSYi50yx5ORb5nkpIfeeaZm7a5S3b3iv\n+8jr1jsnWqn5A7XHxTKeaOuKVOueUqoto9qY58Qyl0b08bPMb+Sd/y9yvPf2c88zsrbc1P5Nx6Xm\nvaaUyHlrvDTjuPc3j5elX3vvSVruZdJfvXo1cS6d4+Pjt+bbGXfr1i3Z3d31Vg8AAAAAAPDOc7/g\nuXDhwsTP33//fTk8PEzu1+l05PXr197qAQAAAAAA3nnuFK3UC56lpSW5c+eOfPLJJ8l9X7165a2+\nkSX81BuC7l1WztuWyPBRb5pAG2GgTW2yhHpryvWG2DX1U0vIaIol5NmTSqjtZ5Y0habttMtf1w4l\njSy36W+1lgQdlTvueMfTiNTQnGXST/atdWxz0ymj07Uix53ccxN53276W4lz6Unzib6PnFV30/7e\ne6Wlb3pTiL1jcM1xM/eaKPm9NeWmtJHOYbkneFOINW2x7G8t3/L8pdnfmzJXahy2pLxZnhdqpJGV\nSN+zpOzltsF7T9Bu400bjjy3pVK8SqVmj3NH8KQa0O125fXr1/Ltt98m9x0MBt7qAQAAAAAA3nnu\nFzyrq6ty7949ERHZ3NyUjz/+WH766ScREVlbW5Pt7W25f//+r/bb2tqSbrfrrR4AAAAAAOCd507R\n6na7srS0JJubm7K/vy8iIo8fP5bf/va3srq6Kg8fPpTd3V3Z29uTpaUlmZ+fl36/L8PhULa3t831\nekOANekCkWHGJdOicsPYIsPxvaF62jDOnHQKTXk5bfLwhp/WmBHeUq4lXc27KkYbKxR4Q4PPKu+s\n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\nQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "image_shape = (40,40) # 40x40=1600 spins in every configuration\n", "num_to_plot = 8 # of data points to plot\n", "\n", "# parameters the user needs to choose\n", "batch_size = 100 # batch size\n", "num_epochs = 10 # training epochs\n", "monte_carlo_steps = 2 # number of MC sampling steps\n", "initial = 1E-3 # initial learning rate\n", "coefficient = 1.0 # controls learning rate decay\n", "num_fantasy_steps = 100 # MC steps when drawing fantasy particles\n", "lmbda = 1E-6 # stength of the L1 penalty\n", "num_hidden_units = [80, 8] # hidden layer units\n", "\n", "# load data\n", "data = Load_Ising_Dataset()\n", "\n", "# preallocate data dicts\n", "dbm_L1_reconstructions = {}\n", "dbm_L1_fantasy = {}\n", "true_examples = {}\n", "dbm_models = {}\n", "\n", "for phase in ['ordered','critical','disordered']:\n", " print('training in the {} phase'.format(phase))\n", "\n", " # set up an object to read minibatch of the data\n", " transform = pre.Transformation()\n", " batch_reader = batch.in_memory_batch(data[phase], batch_size, train_fraction=0.95, transform=transform)\n", " batch_reader.reset_generator(mode='train')\n", "\n", " ##### Bernoulli RBM\n", " dbm_L1 = BoltzmannMachine(\n", " [BernoulliLayer(batch_reader.ncols)] + \\\n", " [BernoulliLayer(n) for n in num_hidden_units]\n", " )\n", "\n", " # add an L1 penalty to the weights\n", " for j_, conn in enumerate(dbm_L1.connections):\n", " conn.weights.add_penalty({'matrix': pen.l1_penalty(lmbda)})\n", "\n", " # train the model\n", " train_model(dbm_L1, batch_reader, num_epochs, monte_carlo_steps)\n", "\n", " # store model\n", " dbm_models[phase]=dbm_L1\n", "\n", " # reset the generator to the beginning of the validation set\n", " batch_reader.reset_generator(mode='validate')\n", " examples = batch_reader.get(mode='validate') # shape (batch_size, 1600)\n", " true_examples[phase] = examples[:num_to_plot]\n", "\n", " # compute reconstructions\n", " reconstructions = compute_reconstructions(dbm_L1, true_examples[phase])\n", " dbm_L1_reconstructions[phase] = reconstructions\n", "\n", " # compute fantasy particles\n", " fantasy_particles = compute_fantasy_particles(dbm_L1,\n", " num_to_plot,\n", " num_fantasy_steps,\n", " mean_field=False)\n", " dbm_L1_fantasy[phase] = fantasy_particles\n", "\n", " # plot results and save fig\n", " reconstruction_plot = plot_image_grid(\n", " np.array([\n", " true_examples[phase],\n", " dbm_L1_reconstructions[phase],\n", " dbm_L1_fantasy[phase]\n", " ]),\n", " image_shape, vmin=0, vmax=1,\n", " row_titles=[\"data\", \"reconst\", \"fantasy\"],\n", " filename='DBM_Ising-'+phase+'.png')\n", "\n", "# save data\n", "save_file_name='./DBM_ising_training_data-L=40.pkl'\n", "pickle.dump([dbm_models, true_examples, dbm_L1_fantasy, dbm_L1_reconstructions,\n", " image_shape, num_to_plot, batch_size, num_epochs, monte_carlo_steps,\n", " initial, coefficient, num_fantasy_steps, lmbda,num_hidden_units,\n", " ], open(save_file_name, \"wb\" ) )" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "## Excercises\n", "\n", "* Pick different temperatures $T$ from the available set and repeat the learning procedure. Can you find more suitable hyperparameters (such as the number of hidden units, the learning rate, the reglarization strength, and the SGD optimizer parameters) that give better results?\n", "* Generate a large enough set of fantasy particles and compute their magnetization, energy (and other thermodynamic quantities). Comparing these values to the original MC samples provides a useful measure for the performance of the DBM. \n", "* You can now play the following game: use the RBM to generate a large sample of Ising states, and then apply your pre-trained DNN or CNN classifier from Secs IX and XI to label them. " ] }, { "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.7.1" } }, "nbformat": 4, "nbformat_minor": 2 }