Last active
January 26, 2025 08:00
-
-
Save kkew3/266418d81a26df929dc4071c43554205 to your computer and use it in GitHub Desktop.
I came across [this](https://github.com/aifromphytsai/gan_sampling) repo on weekends, namely, "A simple GAN to generate samples from Gaussian distribution". Good news: to generate Gaussian samples, you don't need to train the network. We can achieve it by simply initializing the weights!
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# A useless trick: Initializing a GAN to be Gaussian" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import math\n", | |
"\n", | |
"import torch\n", | |
"from torch import nn\n", | |
"from torch import autograd\n", | |
"from torch import distributions as D\n", | |
"from matplotlib import pyplot as plt" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Introduction\n", | |
"\n", | |
"I came across [this](https://github.com/aifromphytsai/gan_sampling) repo on weekends, namely, \"A simple GAN to generate samples from Gaussian distribution\". Good news: to generate Gaussian samples, you don't need to train the network. We can achieve it by simply initializing the weights!\n", | |
"\n", | |
"Why do we want to initialize a GAN to be Gaussian in the first place? One possible reason is that a Gaussian serves as a reasonable approximation of the probability density we aim to estimate, e.g. an exponential tilting of a Gaussian base distribution: $p(x) \\propto \\exp(f(x)) p_0(x)$. Instead of learning from scratch, it may be a good idea to just kick-start from a Gaussian.\n", | |
"\n", | |
"## Gaussian GAN\n", | |
"\n", | |
"Parameterizing a GAN generator as an MLP, our goal is to initialize the MLP such that it produces Gaussian of desired mean and diagonal variance given standard Gaussian randomness.\n", | |
"\n", | |
"Denote the $K$-layer MLP as $f(\\boldsymbol x) = \\mathbf W \\phi(\\boldsymbol x) + \\boldsymbol b$, where $\\phi$ is the first $K-1$ layer mapping, and $(\\mathbf W,\\boldsymbol b)$ is the last layer parameters. Let the activation function be $\\tanh$. Recall that a linear transformation of a Gaussian is a Gaussian. Thus, we ought to make $\\phi(\\boldsymbol x)$ approximately a linear transformation, and then properly initialize $(\\mathbf W,\\boldsymbol b)$ so that the output exhibits the intended mean and variance." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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", | |
"text/plain": [ | |
"<Figure size 640x480 with 1 Axes>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"x = torch.linspace(-1, 1, 1000)\n", | |
"plt.plot(x, x.tanh(), label='tanh')\n", | |
"plt.plot(x, x, label='identity')\n", | |
"plt.legend()\n", | |
"plt.grid()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We will try to confine most outputs of each layer to within range $[-\\alpha, \\alpha]$, in which $\\tanh$ is approximately an identity function. However, we do not want to choose $\\alpha$ too small, since it will hinder the nonlinearity of the network too much, preventing it from learning complex pattern ([Bradley, 2009](https://www.ri.cmu.edu/pub_files/2010/5/dbradley_thesis.pdf); [Glorot & Bengio, 2010](https://proceedings.mlr.press/v9/glorot10a/glorot10a.pdf)). From the plot above, we see $\\alpha = 0.25$ is a sensible choice. (Well, probably not 🙃; but if we increase $\\alpha$ too much, the output will not be Gaussian! That's why the \"useless\" in title.)\n", | |
"\n", | |
"Our first step is to randomly initialize each layer of $\\phi$ while ensuring it's approximately linear with respect to the input. We will consider in a layer-by-layer manner. For the $i$-th layer, supposing that the input $\\boldsymbol x \\in \\mathbb R^n$ follows $\\mathcal N(\\mathbf 0, \\mathbf I)$, for each output pre-activation $u = \\boldsymbol w^\\top \\boldsymbol x$, we want 95% of it to fail into that range, which means that $1.96 \\sigma_u \\le \\alpha$ (see [confidence interval](https://en.wikipedia.org/wiki/Confidence_interval)). Here, we have denoted the standard deviation of variable $v$ as $\\sigma_v$. Since if $\\boldsymbol x \\sim \\mathcal N(\\mathbf 0, \\mathbf I)$, $\\boldsymbol w^\\top \\boldsymbol x \\sim \\mathcal N(0, w^\\top w)$; thus we need $\\boldsymbol w^\\top \\boldsymbol w = \\sigma_u^2 \\le (\\alpha / 1.96)^2$. Since we typically randomly and normally initialize $w$, we need to take expectation on both sides, which yields the requirements $\\mathbb E[\\boldsymbol w^\\top \\boldsymbol w] \\le (\\alpha / 1.96)^2$. Equivalently, $\\sum_{i=1}^n \\mathbb E[w_i^2] \\le (\\alpha / 1.96)^2$. But $w_i^2$ follows $\\chi^2$-distribution scaled by $\\sigma_w^2$ when $w_i \\sim \\mathcal N(0, \\sigma_w^2)$; hence, $\\mathbb E[\\boldsymbol w^\\top \\boldsymbol w] = \\sum_{i=1}^n \\mathbb E[w_i^2] = n \\sigma_w^2 \\le (\\alpha / 1.96)^2$, or $\\sigma_w \\le n^{-1/2} (\\alpha/1.96)$. For the obvious reason, we will keep the bias zero." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# The 95% confidence intervel scaler on standard deviation.\n", | |
"CONF_SCALER = 1.96\n", | |
"# The probabilistic absolute upper bound of the pre-activation of each layer.\n", | |
"ALPHA = 0.25" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We will go over a small experiment to verify our derivation above:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"tensor(0.9418)" | |
] | |
}, | |
"execution_count": 4, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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s83DAQAA6GD0lQAAAOMIJAAAwDgCyU9QC7atXr36rKvLAQAQKD788EP59NNPxd84IpAsWbJEBg4cqJeqT05OlmPHjnn1vMcff1yWLVsmP/74ozhBe9tJSU9PlwMHDogTtKWd1MJ/t912m57eHh0dLQsWLPB4SwS7UG2g2kK1iWob1UatycvLk+HDh0v37t0lISFB9uzZI07RlnZS7/912WWX6YUj1QzFrVu3ilO0pZ0aO3XqlMyYMUOc4lg72kn9oX377bfLli1bxO9YNvfKK69YvXr1st58801r9+7d1oQJE6yEhASroaHhJ5/3ySefWN26dbMKCgosJ2hvOyk7d+60unTpYn355ZeW3bW1nSZNmmQlJibqNtq2bZs1dOhQ695777XsJikpybr66qutwsJCa9OmTVbv3r2tFStWNDtv//79VkhIiPXHP/7R2rt3r7VgwQLdnv/73/8sJ/C2nb7++msrLCzMevTRR609e/ZYS5cu1e32t7/9zXICb9upqTvvvNO6/PLLLadIakc7zZ071/rlL39p1dXVWf7G9oFkyJAhHt+gqqoqKzw8XL84tObMmTPWqFGjrHvuucdyiva0k1JZWWkNGjRI9Wk5IpC0pZ327dunX0SOHDniEXS7du1q1dbWWnahXiR79OhhHT9+3L3v1Vdftfr166d/lhpTP1NTp0712HfVVVfpYGJ3bWmn+fPnW5MnT/bYN2fOHGvGjBmW3bWlnRp755139O8hpwSSv7WjndQfAeoP7Y8++sjyR7busvn222/l4MGDkpKS4t4XHh4uU6ZMkfz8/Faf98ILL+i1/70tEzq1nZQ5c+ZI7969xQna2k4nTpzQCwH269fPvW/IkCFSX1+v/y27UF0LaiXmxvfB1KlT5fvvv5fPP/+82bmN209RJfaz3WdOa6euXbvKzTff7LFP3TvffPON2F1b2slF/TzdfffduovLKQra2E7q/eBSU1PlzjvvlCuvvFL8ka0DSWlpqe5ba/yCoMTHx0txcXGrfXKPPvqo+02JVP+celM/O2tPOymbN2+WjRs3yp///Gdxgra2k/pl8eqrr3rsU+MA+vfvf9Y3mQq0dlFt0JhqJ/V1Nm2Xls49233mxHZS73Z+0003Nbt3nPCC25Z2clFh5KKLLpL7779fnKK0je308ssv6/Fab7zxhv4d9txz/veW9rYOJDU1NS2+k3BUVJQe2NOSp556Sg9AXLdunWzatEkOHTqkU6Wdtaedjh49Kvfcc48e9Kv+cnOC9rRTY4cPH9YVJfV2CcHBweLEdmnpXG/bz8n3zyuvvCK7d++WBx98UOyure20atUq+eijj3T4P5d3grf7z93jjz+uKygq2D7yyCOycOFC2bZtm/iTTnu3346ifkgnTJjQ4rHf/OY3Ultb2+LMh5a+kaqUvmbNGr3E/fjx4/U+9f/Dhg3TJcG+fftKoPJlOykzZ87U70907733ip34up0aj/6fNGmSJCYm6rdNsJMePXp43S4tnetN+zmtnRr761//Kg888IC8/vrrtqqs+aKdioqK9Hui5eTkOKJt2ttOakaNqp6oe6hbt26SlJQkR44ckezsbJk4caL4i4APJOpFUX0DWqJCxPnnny/l5eUe/WzqJo6Li2t2vjrv5MmTHmXRoUOHSs+ePeXrr78O6EDiy3ZSY2zeffdd/aaIqq/b5Ve/+pX86U9/0tNcA5Uv28nlzJkzcuONN+o+3LVr19rur7jY2FjZtWuXx77Tp0/rX3hN20Wdq8rJl1xyidft58R2cvniiy90t7HqRm469sbp7aR+rtTvGhX21VgtRU3UUD9n6veS+gPTzmLbcD+pn7kRI0boMOKiXudyc3PFr1g2p6ZZrl692v349OnTeprhli1bmp2rRiaHhoZa+fn57n3/+c9/rKCgIKu8vNyys7a001dffWV9/vnnHpu6lXJzc63vv//esrO2tJNLamqqNXDgQKusrMyyIzXlsGfPnlZFRYV73xtvvGH17du32Wh/1Ra33nqrx75rr73WmjdvnmV3bWknRc3O+sUvfmHdfvvtlpN42041NTXNfg89/fTT1ogRI/T/211hG+4ntUyBmg35448/uvdlZGRY119/veVPxAnrRqi52WqOtprPr6bSXXbZZe5vmJrnf+GFF+qbW0lLS9PfOPUCs2PHDn1zz5w507K7trZTU06Z9tvWdsrKyrKCg4P1LwrVPq7t5MmTlt3WQ1Brsqi1Wd5++2099XD58uU6sKn2UO3imgrdvXt3va6GmoL42GOPWREREbYNa+1tp+rqan1fqX2fffaZ+745ePCg5QTetlNTOTk5jpn225Z2Uo/V69r06dP1udnZ2XrKsFofyZ/YPpAomZmZ+hulqh833HCDx7oQKoAMHjxYf8OUH374wVq4cKHVv39/KzIyUq+b4Dpmd21pJ6cGkra00/r163V1TbVN023z5s2WnRw9etSaMmWK/iWnfnZUEFNUO6j2aLzOiFqzRf2yVGu0qPV+1C9Ip/CmnVS4VUG3pftG/U5ygrbcT04OJEfb0E6qsj1+/HhdVbngggus119/3fI3Qeo/pruNAACAs9l62i8AAAgMBBIAAGAcgQQAABhHIAEAAMYRSAAAgHEEEgAAYByBBAAAGEcgAQAAxhFIAACAcQQSAABgHIEEAAAYRyABAABi2v8FddVq33pGfykAAAAASUVORK5CYII=", | |
"text/plain": [ | |
"<Figure size 640x480 with 1 Axes>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"# Data dimension.\n", | |
"dim = 5\n", | |
"# Initialize 10000 data points.\n", | |
"x = torch.randn(10000, dim)\n", | |
"# Normally initialize the weights 200 times.\n", | |
"w = torch.randn(200, 1, dim) * (ALPHA / (math.sqrt(dim) * CONF_SCALER))\n", | |
"# Compute the pre-activations.\n", | |
"preact = (w * x).sum(2)\n", | |
"# Initialize the pre-activations of the first trial.\n", | |
"plt.hist(preact[0], bins=100)\n", | |
"plt.axvline(-ALPHA, c='r', linewidth=0.8)\n", | |
"plt.axvline(ALPHA, c='r', linewidth=0.8)\n", | |
"# Should be approximately 0.95:\n", | |
"(preact.abs() <= ALPHA).float().mean()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"While we are able to initialize the first layer by this derivation, it does not apply to the second layer onwards. Denote the input to the second layer as $\\boldsymbol z \\in \\mathbb R^m$. Denote the input the to first layer as $\\boldsymbol x \\in \\mathbb R^n$ as before, and denote the weights of the $i$-th unit in the first layer as $\\boldsymbol w_i$. It follows that $z_i = \\tanh(\\boldsymbol w_i^\\top \\boldsymbol x) \\approx \\boldsymbol w_i^\\top \\boldsymbol x$, and that $z_i \\sim \\mathcal N(0, \\boldsymbol w_i^\\top \\boldsymbol w_i)$. Therefore, $\\boldsymbol z \\sim \\mathcal N(\\mathbf 0, \\operatorname{diag}(\\boldsymbol w_1^\\top \\boldsymbol w_1, \\dots, \\boldsymbol w_m^\\top \\boldsymbol w_m))$. This means we cannot assume standard Gaussian inputs from the second layer. Here, $\\operatorname{diag}$ denotes a diagonal matrix.\n", | |
"\n", | |
"Fortunately, the derivation is similar. Denote the weight vector as $\\boldsymbol v$. When the input $\\boldsymbol z$ admits diagonal variance $\\boldsymbol\\Lambda = \\operatorname{diag}(\\lambda_1,\\dots, \\lambda_m)$, $\\boldsymbol u^\\top \\boldsymbol z \\sim \\mathcal N(0, \\boldsymbol u^\\top \\boldsymbol\\Lambda \\boldsymbol u)$. So instead of keeping $\\mathbb E[\\boldsymbol u^\\top \\boldsymbol u] \\le (\\alpha / 1.96)^2$, we now require $\\mathbb E[\\boldsymbol u^\\top \\boldsymbol\\Lambda \\boldsymbol u] = \\sum_{j=1}^m \\lambda_j \\mathbb E[u_j^2] \\le (\\alpha / 1.96)^2$. Solving the equation, we get $\\sigma_u \\le (\\sum_{j=1}^m \\lambda_j)^{-1/2}(\\alpha / 1.96)$.\n", | |
"\n", | |
"With this in mind, let's try to initialize the first two layers of a three-layer MLP:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"tensor(0.9401)" | |
] | |
}, | |
"execution_count": 5, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# An MLP: input_dim -> hidden_dim -> hidden_dim -> output_dim. We focus on the\n", | |
"# first two layers: phi(x) = tanh(W2 tanh(W1 x)), or approximately,\n", | |
"# phi_l(x) = W2 W1 x.\n", | |
"input_dim = 3\n", | |
"hidden_dim = 5\n", | |
"# Initialize 200 instances of W1.\n", | |
"std1 = ALPHA / (CONF_SCALER * math.sqrt(input_dim))\n", | |
"W1 = torch.randn(200, hidden_dim, input_dim) * std1\n", | |
"# Initialize 200 instances of W2.\n", | |
"var1 = torch.bmm(W1, W1.transpose(1, 2)).diagonal(dim1=1, dim2=2).sum(1)\n", | |
"std2 = ALPHA / (CONF_SCALER * var1.sqrt())\n", | |
"W2 = torch.randn(200, hidden_dim, hidden_dim) * std2.unsqueeze(1).unsqueeze(1)\n", | |
"# 10000 input points.\n", | |
"x = torch.randn(10000, input_dim)\n", | |
"# Find approximate z_l = phi_l(x).\n", | |
"z_l = torch.matmul(W1.unsqueeze(1), x.unsqueeze(2)) # of shape (200, 10000, hidden_dim, 1)\n", | |
"z_l = torch.matmul(W2.unsqueeze(1), z_l).squeeze(3) # of shape (200, 10000, hidden_dim)\n", | |
"# Should be approximately 0.95:\n", | |
"(z_l.abs() <= ALPHA).float().mean()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We now actually construct an MLP:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"class MLPGenerator(nn.Module):\n", | |
" \"\"\"A GAN generator parameterized as an MLP.\"\"\"\n", | |
" def __init__(self, input_dim, hidden_dim, output_dim):\n", | |
" super().__init__()\n", | |
" self.input_dim = input_dim\n", | |
" self.hidden_dim = hidden_dim\n", | |
" self.output_dim = output_dim\n", | |
" self.fc1 = nn.Linear(input_dim, hidden_dim)\n", | |
" self.fc2 = nn.Linear(hidden_dim, hidden_dim)\n", | |
" self.fc3 = nn.Linear(hidden_dim, output_dim)\n", | |
" self.init_parameters()\n", | |
" \n", | |
" def init_parameters(self):\n", | |
" std1 = ALPHA / (CONF_SCALER * math.sqrt(self.input_dim))\n", | |
" nn.init.normal_(self.fc1.weight, std=std1)\n", | |
" nn.init.zeros_(self.fc1.bias)\n", | |
" w1 = self.fc1.weight.data\n", | |
" var1 = torch.mm(w1, w1.t()).trace()\n", | |
" std2 = ALPHA / (CONF_SCALER * var1.sqrt())\n", | |
" nn.init.normal_(self.fc2.weight, std=std2)\n", | |
" nn.init.zeros_(self.fc2.bias)\n", | |
" # TODO: initialize fc3.\n", | |
" \n", | |
" def forward(self, x, output=True):\n", | |
" \"\"\"\n", | |
" If `output` is True, return the output; otherwise, return the last\n", | |
" hidden state.\n", | |
" \"\"\"\n", | |
" z = self.fc1(x).tanh()\n", | |
" z = self.fc2(z).tanh()\n", | |
" if not output:\n", | |
" return z\n", | |
" return self.fc3(z)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We have tried our best to make $\\phi$ a linear transformation by pushing pre-activations to the linear region of the $\\tanh$ function. But there's still inevitably some non-linearity in the function. Thus, we may compute the Jacobian $\\mathbf J$ of $\\phi$ at zero to completely linearize the network as: $\\phi(\\boldsymbol x) \\approx \\mathbf J \\boldsymbol x$." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"tensor([[-0.0091, -0.0107, -0.0203],\n", | |
" [-0.0327, 0.0492, 0.0109],\n", | |
" [-0.0524, -0.0188, -0.0861],\n", | |
" [ 0.0024, 0.0175, 0.0090],\n", | |
" [ 0.0171, 0.0054, 0.1103]])" | |
] | |
}, | |
"execution_count": 7, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"input_dim = 3\n", | |
"hidden_dim = 5\n", | |
"output_dim = 2\n", | |
"net = MLPGenerator(input_dim, hidden_dim, output_dim)\n", | |
"J = autograd.functional.jacobian(lambda x: net(x, output=False), torch.zeros(input_dim))\n", | |
"J" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"The last hidden state $\\boldsymbol z = \\phi(\\boldsymbol x) \\approx \\mathbf J \\boldsymbol x$ around $\\boldsymbol x = \\mathbf 0$. Denote the weights and biases of the last layer as $(\\mathbf W, \\boldsymbol b)$, we have the network output $\\boldsymbol y \\approx \\mathbf W \\mathbf J \\boldsymbol x + \\boldsymbol b$. Assuming standard Gaussian randomness in the network input $\\boldsymbol x$, $\\boldsymbol y$ will approximately follow Gaussian distribution $\\mathcal N(\\boldsymbol b, \\mathbf W \\mathbf J \\mathbf J^\\top \\mathbf W^\\top)$.\n", | |
"\n", | |
"Suppose we'd like to initialize the GAN generator so that $\\boldsymbol y \\sim \\mathcal N(\\boldsymbol\\mu, \\boldsymbol\\Sigma)$ where $\\boldsymbol\\Sigma$ is the diagonal variance. Since it's obvious that $\\boldsymbol b = \\boldsymbol\\mu$, we only need to find $\\mathbf W$ such that $\\mathbf W \\mathbf J \\mathbf J^\\top \\mathbf W^\\top = \\boldsymbol\\Sigma$. By the semi-definiteness of $\\mathbf J \\mathbf J^\\top$, it follows immediately that $\\mathbf J \\mathbf J^\\top = \\mathbf Q \\mathbf S \\mathbf Q^\\top$ where $\\mathbf Q$ is orthogonal and $\\mathbf S$ is diagonal with non-negative elements. Following $\\mathbf S = \\mathbf S^{\\frac{1}{2}} \\mathbf S^{\\frac{1}{2}\\top}$ and $\\boldsymbol\\Sigma = \\boldsymbol\\Sigma^{\\frac{1}{2}} \\boldsymbol\\Sigma^{\\frac{1}{2}\\top}$, we can write $\\mathbf W \\mathbf Q \\mathbf S^{\\frac{1}{2}} = \\boldsymbol\\Sigma^{\\frac{1}{2}} \\mathbf U$ where $\\mathbf U$ is any matrix with orthogonal rows, i.e. $\\mathbf U \\mathbf U^\\top = \\mathbf I$. Solving the equation gives $\\mathbf W = \\boldsymbol\\Sigma^{\\frac{1}{2}} \\mathbf U \\mathbf S^{-\\frac{1}{2}} \\mathbf Q^\\top$.\n", | |
"\n", | |
"Notice that we have some freedom in choosing $\\mathbf U$. A simply enough choice is to enforce weight decay, in which we minimize $\\|\\mathbf W\\|_F^2 = \\operatorname{tr}(\\mathbf W^\\top \\mathbf W)$ subject to $\\mathbf U \\mathbf U^\\top = \\mathbf I$. By Lagrange multiplier, the optimal $\\mathbf U$ consists of eigenvectors corresponding to the smallest eigenvalues of $\\mathbf S^{-\\frac{1}{2}}$." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# Our desired output mean.\n", | |
"MU = torch.tensor([2.0, 4.0])\n", | |
"# Our desired output stdev.\n", | |
"SIGMA = torch.tensor([1.5, 0.8])" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"tensor([[-1.5458, 0.4690, -6.5890, 0.7764, 7.2268],\n", | |
" [-0.9419, 12.3732, 2.0683, 2.7170, 0.5894]])" | |
] | |
}, | |
"execution_count": 9, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"Q, S_half, _ = torch.linalg.svd(J, full_matrices=False)\n", | |
"# First output_dim S_half's elements corresponds to the smallest 1/S_half's\n", | |
"# elements.\n", | |
"U = torch.eye(input_dim)[:output_dim]\n", | |
"W = torch.diag(SIGMA).mm(U).mm(torch.diag(S_half.reciprocal())).mm(Q.t())\n", | |
"W" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"True" | |
] | |
}, | |
"execution_count": 10, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# Assert W J J.t W.t == Sigma:\n", | |
"torch.allclose(W.mm(J).mm(J.t()).mm(W.t()), torch.diag(SIGMA.square()), atol=1e-6)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Finishing the GAN generator above:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"class MLPGenerator(nn.Module):\n", | |
" \"\"\"A GAN generator parameterized as an MLP.\"\"\"\n", | |
" def __init__(self, input_dim, hidden_dim, output_dim, enable_baseline=False):\n", | |
" super().__init__()\n", | |
" self.input_dim = input_dim\n", | |
" self.hidden_dim = hidden_dim\n", | |
" self.output_dim = output_dim\n", | |
" self.fc1 = nn.Linear(input_dim, hidden_dim)\n", | |
" self.fc2 = nn.Linear(hidden_dim, hidden_dim)\n", | |
" self.fc3 = nn.Linear(hidden_dim, output_dim)\n", | |
" if enable_baseline:\n", | |
" self.init_parameters_baseline()\n", | |
" else:\n", | |
" self.init_parameters()\n", | |
" \n", | |
" def init_parameters_baseline(self):\n", | |
" tanh_gain = nn.init.calculate_gain('tanh')\n", | |
" nn.init.xavier_normal_(self.fc1.weight, gain=tanh_gain)\n", | |
" nn.init.zeros_(self.fc1.bias)\n", | |
" nn.init.xavier_normal_(self.fc2.weight, gain=tanh_gain)\n", | |
" nn.init.zeros_(self.fc2.bias)\n", | |
" nn.init.xavier_normal_(self.fc3.weight, gain=tanh_gain)\n", | |
" self.fc3.bias.data.copy_(MU)\n", | |
" \n", | |
" @torch.no_grad()\n", | |
" def init_parameters(self):\n", | |
" std1 = ALPHA / (CONF_SCALER * math.sqrt(self.input_dim))\n", | |
" nn.init.normal_(self.fc1.weight, std=std1)\n", | |
" nn.init.zeros_(self.fc1.bias)\n", | |
" w1 = self.fc1.weight.data\n", | |
" var1 = torch.mm(w1, w1.t()).trace()\n", | |
" std2 = ALPHA / (CONF_SCALER * var1.sqrt())\n", | |
" nn.init.normal_(self.fc2.weight, std=std2)\n", | |
" nn.init.zeros_(self.fc2.bias)\n", | |
" \n", | |
" # Initialize self.fc3.\n", | |
" J = autograd.functional.jacobian(lambda x: self(x, output=False),\n", | |
" torch.zeros(self.input_dim))\n", | |
" Q, S_half, _ = torch.linalg.svd(J, full_matrices=False)\n", | |
" U = torch.eye(self.input_dim)[:output_dim]\n", | |
" W = torch.diag(SIGMA).mm(U).mm(torch.diag(S_half.reciprocal())).mm(Q.t())\n", | |
" self.fc3.weight.data.copy_(W)\n", | |
" self.fc3.bias.data.copy_(MU)\n", | |
" \n", | |
" def forward(self, x, output=True):\n", | |
" \"\"\"\n", | |
" If `output` is True, return the output; otherwise, return the last\n", | |
" hidden state.\n", | |
" \"\"\"\n", | |
" z = self.fc1(x).tanh()\n", | |
" z = self.fc2(z).tanh()\n", | |
" if not output:\n", | |
" return z\n", | |
" return self.fc3(z)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"For the baseline (default) initialization, I have set all hidden layers' biases to zero, and used xavier normal initialization with recommended gain for $\\tanh$ nonlinearity. In both the proposed and the default initialization, we align the output to the desired mean by setting the output layer's bias to the desired mean." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Generate some samples:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 12, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA8sAAAHFCAYAAADFZGv2AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAvClJREFUeJztvQmYXkWV/1+dlZCkQ0hYskHYoxIEBNxYRBFxGVH+KOK4wSiojAg6LoiO4ob6UwcRBBUdBNcBWRxERwRkEUSUgCD7khAIIWTrzr6+/+dbSTXVlap7q+6tu77fz/OEpt++77213Tp1Tp1zqqfT6XQEIYQQQgghhBBCBhjy/P8SQgghhBBCCCEEUFkmhBBCCCGEEEIMqCwTQgghhBBCCCEGVJYJIYQQQgghhBADKsuEEEIIIYQQQogBlWVCCCGEEEIIIcSAyjIhhBBCCCGEEGJAZZkQQgghhBBCCDGgskwIIYQQQgghhBhQWSaEEFIYt912m/jCF74gli1bVvqzL7nkEvG9732v9OcSQgghpB1QWSaEEFIYX/3qV8UVV1whxo4dW/qzFyxYIE499VT5kxBCCCEkFCrLhBBCCgG7ydddd51497vfXcnz3/Wud4mNGzeKq666qpLnE0IIIaTZ1EJZnj59unTTC+EnP/mJGDdunFyIKd73vveJV73qVQO///GPf5TXXHzxxcFlQnlQrrz3yUNPT4/XM9esWSO++93vikMPPVRMmDBBjBw5UkydOlUce+yx4te//rXodDqJ38dicr/99kt0k9x///3FypUrnX9Hu6P92wLaHe3fNv70pz/Jes2ePTvoGvPdqoLYYwzvzcyZM8URRxwhyqAObVg2t99+u1i7dq048sgjS3meOXZ33HFHsffee4ubbrqplOcT0lQwP+Hdwb9hw4aJ3t5esddee0mDE0IpisC2jisKzAmoG+aINPr7+6VHzEEHHSS22WYbMWrUKLkehNGvjLJm5Utf+pKYOHGiuO+++6ouSq3xXVsTUitlOQvz58+XE9rChQud1yxatEhe88wzz+R6Vqz7FMEjjzwiXvziF0tXQyizJ598svjKV74iFeX7779f/jzwwAPFQw895LwHdl3uvvtu8eMf/9h5zaxZs8SJJ55YUC0IKZ/169fLeWTu3LlVF6XVyvK2224r9tlnn8rKAAMFykEISWb33XcX5557rjj77LPFRz/6UWkk//3vfy9e+cpXik996lOVrOPK5q9//auYMWOGOPPMM8Xo0aPl2uqLX/yieP3rXy9uueUWafjDvzquB+fNmyeWLFki+vr6qi4KIa1imGgomLjf8573iEmTJjmvOe644+Rua9I1PsS6T2wQh/ea17xGrF69WlxzzTXijW984xbXQND9+7//uzjrrLPEz3/+c+t9/uu//kv+xO70Rz7yETFkiN2G8qtf/UruxEGIENJ0sBB69NFHxfDhw6suSmvBDgcU5Sq9NPbdd185t61YsUL2OSHEzpQpU+QaQAfrizPOOEN84xvfkB5r5t+LXseVCTYVoAjDQw8Gtpe97GVbeOH9z//8jzQkYE7B7nOdOO+886RX5A477FB1UQhpFbXbWVZudI8//rj45je/KXbbbTe5wDn88MPFP/7xj0HXTZ48WbrWqO/ApQfudvh/TBj4G67R3W7gkvyDH/xALqDgWoO/n3766dIFGe42NtcM/T7KPdf8t91220kLqZpQMZHC/W+rrbaSggA7vrCi2na3vvWtb4kXvvCF8tqdd95ZKqMQUGl84hOfEM8995z43e9+Z1WUwVFHHSXuuece8dOf/tT697/97W/i1ltvFZ/97GfFY489JpVuFxAgn/vc58RvfvMbEQp2pl/60pfKvoQwwo64Dsr4lre8RYwfP14mAsI1f//738Vpp502yHVVuc+cc8450i1qzJgx4l/+5V+kRRWcf/75csygL9/2trcNSuyjXOsXL14sPvjBD0qBsvXWW0uBCHf1NGCt/djHPiZ22mkn6eoOFzXs4sPNVOcXv/iFLAPqgX5PywKMMQtXYFyPcv9//9//J/sC7aHcjnUXMtT/RS96kSw73MRsbmWw1GNRg8UNxhW8D3zcjtA+eNfALrvsMhCKoEA7v/Od75TlxJjHosE2VmGYgUcD3jG4hR1//PFSMfXh6quvljsZGCsYc3ADfOqpp6zXwrr//ve/X7rbop5QzJD92Aw9gEEIC0HscmLht27dOvn50UcfLT784Q8P1B31Qf3RF3/4wx8Gvn/nnXfKnQW4JmLM4Zrrr7/eWia8Txi/uBYuhnjGAw884O1mjudiRwdthzb885//LP9+ww03yP7G81/+8pfL98MkpJxFjDuTJ554Quy5555bvIPYucJzdW8V3/crdHzjPqouhJAw8H5h/vzXf/1X8fnPf14sX748eK7HPIC5BnMS5C3mKXMdp9ZWWMdhHaCHxyBkBru72PnG3IA55JOf/OTAmksHRjGsZyCDcS3mH6yxNmzYkFpXyGsYTzHXmooywEbCO97xDlk/U1H2XVvqIX5JIYm4H+q4/fbbyzUk6pC2nrr00kulLNRBf0HmQZ6jL1/wghdIpRr30ENWVJiQr4xXrFq1Svzbv/2b7LNdd91VliHP8yHXDjnkEClnsC7GegDA+/HVr361HEOY73X5rMupiy66aGDtjfaEQcYcszbyjGPSBXRqwM4779z5/Oc/L///xhtvxCq389rXvraz3XbbdT796U93Pve5z8lrxo8f33n22WcHXffEE090nnrqqc53v/vdzktf+tLO7rvvLv//jjvukH/DNbhW8W//9m/ysze/+c2d//f//p+8/5QpUzoHHHBAZ+utt+7893//t7wO5cEzgX6fBx54QN5f/Tv55JPl3/7rv/5r4Bnvete7OsOGDev867/+a+frX/9659RTT5VlnzZtmiyrYt26dZ03vvGNnaFDh3aOP/74zje/+c3OJz7xic6OO+7YOeyww+R9VXlMlixZIp/xkY98JFfb47l77rlnZ8OGDZ1Xv/rVncMPP9x6Hcry2c9+tnPkkUd2xo4d27nvvvsG/R3lfe973+t8zvTp0zuvfOUrO2eddZbso1e96lUDf/vDH/7Q2WqrrWQ5/vM//1O2GcqBzw466CB5b70cL3rRi2R7fupTn5Jlwv/vt99+nS9/+cudbbfddmDM4P9f9rKXDXwXfTpx4sTOC17wgkHPQllw3y996UsD16Ld9dcD7Y3nbrPNNrI/8b13vvOdsg8wVtGX4OGHH5afvec975F92dvb2/nCF77gbJeLL764M2TIkM7+++8vy49/L3nJS2TZ995774E2VWMQzxozZkznox/9aOeLX/yivGbEiBGD+uPpp5/u7LLLLp1x48bJsn7rW9+S437kyJED4wr3s/GTn/xEfgfXoK/wO0A5ZsyYIccw2hT1x9jDszHOdc4888xOT09P5+ijj+587Wtfk+2Adwxtd/fdd3eS+OpXvyqffcghh8jvoo4vfvGLO5MnT+7sscceg8bY7Nmz5X3xt09+8pOds88+Wz4Tzz7hhBMGrsN7i8/QZh/+8IdlmdHu5rjF+46+w5hDOdauXSs//+1vfyu/g35B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", | |
"text/plain": [ | |
"<Figure size 1200x500 with 2 Axes>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"net = MLPGenerator(input_dim, hidden_dim, output_dim)\n", | |
"x = torch.randn(1000, input_dim)\n", | |
"with torch.no_grad():\n", | |
" y = net(x)\n", | |
"plt.figure(figsize=(12, 5))\n", | |
"plt.subplot(121)\n", | |
"plt.title('Initialized GAN samples and the desired mean (red)')\n", | |
"plt.scatter(y[:, 0], y[:, 1], marker='x', s=2, alpha=0.5)\n", | |
"plt.scatter([MU[0]], [MU[1]], c='r')\n", | |
"plt.xlim(MU[0] - 4, MU[0] + 4)\n", | |
"plt.ylim(MU[1] - 4, MU[1] + 4)\n", | |
"plt.subplot(122)\n", | |
"plt.title('Desired Gaussian samples')\n", | |
"y0 = D.Normal(MU, SIGMA).sample((1000,))\n", | |
"plt.scatter(y0[:, 0], y0[:, 1], marker='x', s=2, alpha=0.5)\n", | |
"plt.xlim(MU[0] - 4, MU[0] + 4)\n", | |
"plt.ylim(MU[1] - 4, MU[1] + 4);" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"As can be seen, the GAN samples are almost the same as the desired Gaussian samples. The difference is that the GAN samples exhibits slightly lower variance around the boundary, due to the squashing effect of $\\tanh$.\n", | |
"\n", | |
"As a comparison, we generate some baseline samples, where we apply the default initialization:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 13, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA8sAAAHFCAYAAADFZGv2AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAArLxJREFUeJztnQmYHUW99msySYbsKxBIJgkhYEC2QFgFJIgI6BXNRRBUEK4EEUXwoqKogIqAH3rBK6K4XAQ3EMGFRUVZlTUmYJAAhhCyQFhCkiHbJDM53/NWUoeeml6qu6u7q7vf3/NMTubMOd21dVe/9V+qpdFoNAQhhBBCCCGEEEKa9Hnzv4QQQgghhBBCCAEUy4QQQgghhBBCiAbFMiGEEEIIIYQQokGxTAghhBBCCCGEaFAsE0IIIYQQQgghGhTLhBBCCCGEEEKIBsUyIYQQQgghhBCiQbFMCCGEEEIIIYRoUCwTQgghhBBCCCEaFMuEEEISs3btWnHRRReJBx54IPdz//Of/5TnfvHFF3M/NyGEEEKqD8UyIYSQxNxxxx3i4osvFgMHDsz93Ntss4245JJLxC9/+cvcz00IIYSQ6tPSaDQaRReCEEJIOTnppJPEE088If71r38Vcv6jjz5arFq1Sjz44IOFnJ8QQggh1cV5y/JHP/pR0dLSIn/69u0rhg4dKt7ylreID3/4w1Yejs4//3wxZMgQsd1224nHH39cZMHChQtl+e+9997me3AdnDhxovEx7r//fnHiiSeK9vZ20dbWJkaNGiUOPPBA8Y1vfEO8/vrrkd+/8MILxU9/+tPAv8+cOTPUjfK6666TdagSqA/qVTUwrjC+4nwGYxPtgbFaFFmMsa997Wti9OjR4sknnxRZ40IbFgHqfeSRR+Z2Pn3svvOd7xSPPfaYdAcnhLj5rOUHnkmGDRsm7rrrLpE1fs9hQXR0dMhnq/32208MHz5cDBgwQN53PvKRj+RS1jLMd2Wmqs9+JDv6ihIwefJkcfbZZ4v169fLm9j8+fPFH//4R/Hzn/9cfO5znxOXX355ouO+8cYb4pvf/KY47rjjxFvf+lYpQl2jq6tLfPKTnxQ/+MEP5E3wP//zP2V7oOwPP/ywfGhEHb71rW+J//qv//I9BtrtmmuuEePGjROnnHKK72c2bNggjz1r1iwxfvz4jGtFSD4glnXFihXS8kjs88ILL4iXXnpJTJ8+vbAyHHbYYfI+iXvXoYceWlg5CCk7WT1rBbFs2TJ5ntdee024wqOPPire9773yfsa7i1oDxhUFixYIO68807xs5/9TC7QQejDyOISnO8IqbFYHjt2rPjUpz7V4z3czL/whS9IoQgRqP/dBFhk4YV+5plnFvqwF4YSyueee6649NJLewn6RYsWSev4l770JXkD9xO6mOheffVV+XPfffeJt7/97b7nwt+PPfZY8fe//72Q+ENCbPPd735XLihtu+22RRelkigLxp577llYGXbbbTfR2toqy0KxTIh7z1pBfP7znxcnn3yyM6LzmWeekV4y8Nx76KGHxAEHHNDj75s2bRI33XST+PSnPy3+93//V1qfXYLzHSE1dcMOYqutthL/8z//Iz70oQ9JF+PVq1f3+PsvfvELse+++0r3GVhk4cKMVVIFXHGUG/Thhx/ey30SovKII46QK4pww4HV9bnnnpMrjnBXinK7xGewKhnkCoSEOLDK4P/qeDo4PoTyeeedJ7797W/7Wr4hjlHXZ599NtAifOWVV4r3vve9Yo899hBXXXVVYJsOGjRIPP3009L6HDeUfd26ddKyPWLECDFp0iRxww039Pg7+gcT7g477CD7bpdddpE39jlz5vRoQ9Vu//jHP8QhhxwiRfuuu+4qfve738m/w1Ue/TV48GD5gP7nP//Z183qRz/6kXyIxrnQz5iU9THiR9S4Ac8//7wcGygDJlO4gIbxyiuviE984hPyQQTl2XvvvWVCot/+9rc93I5Rb9QfffDud79bjj1856tf/aqcpHV+8pOfyGOhrHjYOOuss+SqchiYSHFOjD2MQd0tDee54oorxI477ijHAxaRkHFYB+Pt+OOPlw8V6KP9999fPkSYgHNjjCE5E76LNvzDH/7g+1mUBw8lqi9RzzPOOENaJLxgHKEMKDMedv7973/L9zEOx4wZ06w7xgIWndC2p512WvP7WIn/zGc+I68hXGdwP0TiKHhc6MAKggdGPDiiTBiHJi5dys0c4wFxvnBzRH1wHrB8+XLp5of7DcoJbxH9OoxTzqzGnX4t4Njq3qOuQdyvMIa23357uQgX5/qKO7779+8v7ysoCyHErWetsDkTcw/uEbhvqPsjLLZ4jsDnFZ2dnfJ+BMs37nu4P8LSDau0zpo1a6TxAPcffHbnnXeW99Lu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CCGEEEIIIYT0gP5UhBBCCCGEEEKIBsUyIYQQQgghhBCiQbFMCCGEEEIIIYRoUCwTQgipPWvWrBE//vGPBdN4EEIIIdVkTYK5vhCx/IMf/EDssMMOYsiQIeKd73ynePrpp0XZueGGG0RLS4v8Wb9+fdHFScTLL78sZsyYIQYNGiTGjh0rLr/8clEFjjjiCNkv2Aal7KxcuVKcfPLJcr/TcePGic9+9rOis7NTlJlly5aJ4447TgwbNkzeF7773e+KqvH5z3++Eve50047rXmfw8/o0aNFVfjyl78svvWtb4mNGzcWXZTKwLneTTjXuw/n+nLCub6ac31fkTO/+c1v5EV/1VVXiV133VX88Ic/FIcffrh46qmnxPDhw0VZOeyww8Rf/vIXebMuK7iJ9evXT/z1r38VL774ojjjjDPE4MGDxVlnnSXKSldXl7wh4+e1114TZecjH/mIWL58ubjtttvE6tWrxWc+8xn5es0114iygoc2PBDcddddYsmSJWLmzJnyXvDhD39YVIH7779fXHHFFeLUU08VZefJJ5+U9+4jjzxS/t63b+5TSCbMmTNH3iPuvvtu0b9//6KLUwk417sL53r34VxfPjjXV3iub+TMtGnTGt/+9rebv2/atKmx1157NX70ox81ys7zzz8Pm35j3bp1jbLx4IMPNgYMGNB49dVXm+9dd911jTFjxjS6u7sbZefCCy9snHDCCY0y8+STTzba2toaL730UvO92bNnN/r27dtYv359o4ygLh/+8Icby5cvb7736U9/unHsscc2qsCqVasaEydOlPeFefPmNcoM7tWDBg1qzJkzp1ElcH/bd999GzNnziy6KJWCc72bcK53H8715YNzfbXn+tzdsEeNGiXe/e53N3+HeX/y5MlydZMUxwMPPCAOPfTQHq4WWH1esWKFmDt3bqFlI5vBKjPcy8aMGdN8b+edd5Yr6q+88oooI6gL3BpHjhwpNmzYIO677z5pkdp6661FFTj77LMr4770/PPPi7Vr18oxVyVgqVm8eHFlXFFdgXO9m3Cudx/O9eWDc3215/rcxfIf//jHHh0At5J7771XTJs2Le+iEA+LFi2SDzJeEM+03XbbiQULFhRWLvImeMC57rrrerwHFy300fbbby/Kzv777y9dHFtbW8VFF10kys6tt94qfv3rX4uf//znogrALQuCZ9KkSTLO8dxzzy1tzKY3dvOCCy4QHR0dor29XboJvv7660UXqxJwrncTzvXuw7m+XHCur/5cX3g27I9//ONixx13FO9617uKLkqtWbdunRg4cGCv90eMGCEzxxH3WLp0qVzN/NKXviQnnbJz/fXXywyFiCP57W9/K8qeyATxWEgiUZXVWYyxq6++WvbN9773PXHHHXfISbTMfO1rX5MxdD/72c+klePf//63jN8k9uFc7wac68sH53p34Vxfj7neesT2ww8/LI466ijfv5100kmy4RWXXHKJ7ITHHntM9OlTuG63UqeyMmDAAN+VI2Rk9JtYSbHASvOe97xHHHjggeLMM88UVWD33XeXP29/+9vFW9/6VnHCCSeU1q0JmSQPOOAAKRCqgtelFmDFGePvO9/5jkwWVDbg0oiHtptvvrmZxAT/nzJlinR13GabbYouotNwri8nnOvLBed6t+FcX4+53rpYxqDBTTeKX/ziF+KrX/2quP322+Vqs8uY1qnMjB8/Xmby84KYhZdeekm6YhB36O7uFscff7zYtGlTcxuTsvLEE0/IBze4ZSlwP0Bm1nnz5olDDjlElDEu5s4775SiwJtBcrfddhM/+clP5HYgVQATDSYhuDdha5OygYy5b7zxRg+34Le85S1y7L3wwgsUyxFwri8nnOvLA+d6t+FcX5+5vpAlXgT2YzXm+9//fqm3X6hajAz6ZdWqVc33fv/730u3hT322KPQspGeYHuPf/7zn/LhE/uXlhnsR3jiiSfKG7Hi2WeflQlOXH+wDgIrl0iUg4eDxx9/XP6ouKb3vve9ooz86le/EgcffDB2T2i+h21nMP6w6lxGMEHCkjZ79uweYw+uqBQNduBc7x6c68sD53q34Vxfo7m+kTNIqT5ixIjGSSedJP+vfpYsWdIoO2XeTgIcfPDBjaOOOqrx8MMPN37729/KrSS+853vNKpAFbaTAJdddlmjtbW18ctf/rLH9fPGG280ysjatWsbO++8s9xS4pFHHmn84Q9/aEyZMqVx6qmnNqpE2beTeOWVVxqjRo1qnH766Y3HHnuscf311zdGjx4tx2OZ+dznPie3+8C4++tf/9rYY489GqeddlrRxaoEnOvdhXO9+3CuLyec66s51+cqll9++eXGDjvsIAeT/lOFvdbKPoEuW7ZM9gP2YNxuu+1Kf3FUbQK98cYbGy0tLb7Xz6233tooK/Pnz28cc8wxjaFDh8qb2Re/+MVGZ2dno0qUfQIFmDjf9ra3yfvDuHHjGl//+tflfoxlZsOGDY3zzz9f3u+GDRsm91/EQx1JB+d6t+Fc7zac68sL5/pqzvUt+Cc74zchhBBCCCGEEFI+3E1LSQghhBBCCCGEFATFMiGEEEIIIYQQokGxTAghhBBCCCGEaFAsE0IIIYQQQgghGhTLhBBCCCGEEEKIBsUyIYQQQgghhBCiQbFMCCGEEEIIIYRoUCwTQgghhBBCCCEaFMuEEEIIIYQQQogGxTIhhBBCCCGEEKJBsUwIIYQQQgghhIie/H+XA91EbNIWOwAAAABJRU5ErkJggg==", | |
"text/plain": [ | |
"<Figure size 1200x500 with 2 Axes>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"net = MLPGenerator(input_dim, hidden_dim, output_dim, enable_baseline=True)\n", | |
"x = torch.randn(1000, input_dim)\n", | |
"with torch.no_grad():\n", | |
" y = net(x)\n", | |
"plt.figure(figsize=(12, 5))\n", | |
"plt.subplot(121)\n", | |
"plt.title('Default GAN samples and the desired mean (red)')\n", | |
"plt.scatter(y[:, 0], y[:, 1], marker='x', s=0.7, alpha=0.5)\n", | |
"plt.scatter([MU[0]], [MU[1]], c='r')\n", | |
"plt.xlim(MU[0] - 4, MU[0] + 4)\n", | |
"plt.ylim(MU[1] - 4, MU[1] + 4)\n", | |
"plt.subplot(122)\n", | |
"plt.title('Desired Gaussian samples')\n", | |
"y0 = D.Normal(MU, SIGMA).sample((1000,))\n", | |
"plt.scatter(y0[:, 0], y0[:, 1], marker='x', s=2, alpha=0.5)\n", | |
"plt.xlim(MU[0] - 4, MU[0] + 4)\n", | |
"plt.ylim(MU[1] - 4, MU[1] + 4);" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Remark: You may have noticed that the baseline distribution produced by the default GAN is always symmetric. The reasons are threefold:\n", | |
"\n", | |
"1. The input Gaussian randomness is symmetric.\n", | |
"2. The activation function ($\\tanh$) is symmetric.\n", | |
"3. All biases except for the last layer's are zero; so the symmetry is not broken." | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3 (ipykernel)", | |
"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.11.9" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment