Compare commits
30 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cba27b3da4 | ||
|
|
af5a719496 | ||
|
|
56c31efc90 | ||
|
|
06fc37c243 | ||
|
|
45793f02f8 | ||
|
|
7c4cc1ddb4 | ||
|
|
35b6f67bbf | ||
|
|
194baf622a | ||
|
|
a547fee3f4 | ||
|
|
ea4858e78e | ||
|
|
444b06d5c2 | ||
|
|
98bce9edb5 | ||
|
|
37e9ae2311 | ||
|
|
ea1b6ad998 | ||
|
|
d17a5a3872 | ||
|
|
3e7e059bff | ||
|
|
445ad11c46 | ||
|
|
6928b50966 | ||
|
|
e1d34ed561 | ||
|
|
f3528f758b | ||
|
|
5c7a03172a | ||
|
|
0233131b07 | ||
|
|
8200299e64 | ||
|
|
2ac42e70d3 | ||
|
|
dd0eaeb781 | ||
|
|
2cdff544f3 | ||
|
|
384e122c5f | ||
|
|
1343b68c60 | ||
|
|
30420a2f92 | ||
|
|
89e8ebcbc5 |
@@ -196,7 +196,7 @@
|
||||
"source": [
|
||||
"# Visualizing the loss function\n",
|
||||
"\n",
|
||||
"The above process is equivalent to to descending coordinate wise on the loss function<br>\n",
|
||||
"The above process is equivalent to descending coordinate wise on the loss function<br>\n",
|
||||
"\n",
|
||||
"Now let's plot that function"
|
||||
],
|
||||
@@ -249,4 +249,4 @@
|
||||
"outputs": []
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -221,7 +221,7 @@
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"source": [
|
||||
"This moves towards the minimum at a sensible speed, but we never actually converge -- the solution just bounces back and forth between the last two points. To make it converge, we add momentum to both the estimates of the gradient and the pointwise squared gradient. We also modify the statistics by a factor that depends on the time to make sure the progress is now slow to start with."
|
||||
"This moves towards the minimum at a sensible speed, but we never actually converge -- the solution just bounces back and forth between the last two points. To make it converge, we add momentum to both the estimates of the gradient and the pointwise squared gradient. We also modify the statistics by a factor that depends on the time to make sure the progress is not slow to start with."
|
||||
],
|
||||
"metadata": {
|
||||
"id": "_6KoKBJdGGI4"
|
||||
@@ -284,4 +284,4 @@
|
||||
"outputs": []
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -143,7 +143,7 @@
|
||||
" # Run through the layers, calculating all_f[0...K-1] and all_h[1...K]\n",
|
||||
" for layer in range(K):\n",
|
||||
" # Update preactivations and activations at this layer according to eqn 7.16\n",
|
||||
" # Remmember to use np.matmul for matrix multiplications\n",
|
||||
" # Remember to use np.matmul for matrix multiplications\n",
|
||||
" # TODO -- Replace the lines below\n",
|
||||
" all_f[layer] = all_h[layer]\n",
|
||||
" all_h[layer+1] = all_f[layer]\n",
|
||||
@@ -353,4 +353,4 @@
|
||||
"outputs": []
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,8 +46,8 @@
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"# Run this if you're in a Colab to make a local copy of the MNIST 1D repository\n",
|
||||
"!git clone https://github.com/greydanus/mnist1d"
|
||||
"# Run this if you're in a Colab to install MNIST 1D repository\n",
|
||||
"%pip install git+https://github.com/greydanus/mnist1d"
|
||||
],
|
||||
"metadata": {
|
||||
"id": "ifVjS4cTOqKz"
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
"colab": {
|
||||
"provenance": [],
|
||||
"gpuType": "T4",
|
||||
"authorship_tag": "ABX9TyN/KUpEObCKnHZ/4Onp5sHG",
|
||||
"include_colab_link": true
|
||||
},
|
||||
"kernelspec": {
|
||||
@@ -48,8 +47,8 @@
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"# Run this if you're in a Colab to make a local copy of the MNIST 1D repository\n",
|
||||
"!git clone https://github.com/greydanus/mnist1d"
|
||||
"# Run this if you're in a Colab to install MNIST 1D repository\n",
|
||||
"!pip install git+https://github.com/greydanus/mnist1d"
|
||||
],
|
||||
"metadata": {
|
||||
"id": "fn9BP5N5TguP"
|
||||
@@ -266,4 +265,4 @@
|
||||
"outputs": []
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -178,7 +178,7 @@
|
||||
"\n",
|
||||
"def draw_loss_function(compute_loss, data, model, my_colormap, phi_iters = None):\n",
|
||||
"\n",
|
||||
" # Make grid of intercept/slope values to plot\n",
|
||||
" # Make grid of offset/frequency values to plot\n",
|
||||
" offsets_mesh, freqs_mesh = np.meshgrid(np.arange(-10,10.0,0.1), np.arange(2.5,22.5,0.1))\n",
|
||||
" loss_mesh = np.zeros_like(freqs_mesh)\n",
|
||||
" # Compute loss for every set of parameters\n",
|
||||
@@ -304,7 +304,7 @@
|
||||
"for c_step in range (n_steps):\n",
|
||||
" # Do gradient descent step\n",
|
||||
" phi_all[:,c_step+1:c_step+2] = gradient_descent_step(phi_all[:,c_step:c_step+1],data, model)\n",
|
||||
" # Measure loss and draw model every 4th step\n",
|
||||
" # Measure loss and draw model every 8th step\n",
|
||||
" if c_step % 8 == 0:\n",
|
||||
" loss = compute_loss(data[0,:], data[1,:], model, phi_all[:,c_step+1:c_step+2])\n",
|
||||
" draw_model(data,model,phi_all[:,c_step+1], \"Iteration %d, loss = %f\"%(c_step+1,loss))\n",
|
||||
@@ -369,7 +369,7 @@
|
||||
"# Code to draw the regularization function\n",
|
||||
"def draw_reg_function():\n",
|
||||
"\n",
|
||||
" # Make grid of intercept/slope values to plot\n",
|
||||
" # Make grid of offset/frequency values to plot\n",
|
||||
" offsets_mesh, freqs_mesh = np.meshgrid(np.arange(-10,10.0,0.1), np.arange(2.5,22.5,0.1))\n",
|
||||
" loss_mesh = np.zeros_like(freqs_mesh)\n",
|
||||
" # Compute loss for every set of parameters\n",
|
||||
@@ -399,7 +399,7 @@
|
||||
"# Code to draw loss function with regularization\n",
|
||||
"def draw_loss_function_reg(data, model, lambda_, my_colormap, phi_iters = None):\n",
|
||||
"\n",
|
||||
" # Make grid of intercept/slope values to plot\n",
|
||||
" # Make grid of offset/frequency values to plot\n",
|
||||
" offsets_mesh, freqs_mesh = np.meshgrid(np.arange(-10,10.0,0.1), np.arange(2.5,22.5,0.1))\n",
|
||||
" loss_mesh = np.zeros_like(freqs_mesh)\n",
|
||||
" # Compute loss for every set of parameters\n",
|
||||
@@ -512,7 +512,7 @@
|
||||
"for c_step in range (n_steps):\n",
|
||||
" # Do gradient descent step\n",
|
||||
" phi_all[:,c_step+1:c_step+2] = gradient_descent_step2(phi_all[:,c_step:c_step+1],lambda_, data, model)\n",
|
||||
" # Measure loss and draw model every 4th step\n",
|
||||
" # Measure loss and draw model every 8th step\n",
|
||||
" if c_step % 8 == 0:\n",
|
||||
" loss = compute_loss2(data[0,:], data[1,:], model, phi_all[:,c_step+1:c_step+2], lambda_)\n",
|
||||
" draw_model(data,model,phi_all[:,c_step+1], \"Iteration %d, loss = %f\"%(c_step+1,loss))\n",
|
||||
@@ -528,7 +528,7 @@
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"source": [
|
||||
"You should see that the gradient descent algorithm now finds the correct minimum. By applying a tiny bit of domain knowledge (the parameter phi0 tends to be near zero and the parameters phi1 tends to be near 12.5), we get a better solution. However, the cost is that this solution is slightly biased towards this prior knowledge."
|
||||
"You should see that the gradient descent algorithm now finds the correct minimum. By applying a tiny bit of domain knowledge (the parameter phi0 tends to be near zero and the parameter phi1 tends to be near 12.5), we get a better solution. However, the cost is that this solution is slightly biased towards this prior knowledge."
|
||||
],
|
||||
"metadata": {
|
||||
"id": "wrszSLrqZG4k"
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
"# import libraries\n",
|
||||
"import numpy as np\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"# Define seed so get same results each time\n",
|
||||
"# Define seed to get same results each time\n",
|
||||
"np.random.seed(1)"
|
||||
]
|
||||
},
|
||||
@@ -80,7 +80,7 @@
|
||||
" for i in range(n_data):\n",
|
||||
" x[i] = np.random.uniform(i/n_data, (i+1)/n_data, 1)\n",
|
||||
"\n",
|
||||
" # y value from running through functoin and adding noise\n",
|
||||
" # y value from running through function and adding noise\n",
|
||||
" y = np.ones(n_data)\n",
|
||||
" for i in range(n_data):\n",
|
||||
" y[i] = true_function(x[i])\n",
|
||||
@@ -96,7 +96,7 @@
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"# Draw the fitted function, together win uncertainty used to generate points\n",
|
||||
"# Draw the fitted function, together with uncertainty used to generate points\n",
|
||||
"def plot_function(x_func, y_func, x_data=None,y_data=None, x_model = None, y_model =None, sigma_func = None, sigma_model=None):\n",
|
||||
"\n",
|
||||
" fig,ax = plt.subplots()\n",
|
||||
@@ -137,7 +137,7 @@
|
||||
"n_data = 15\n",
|
||||
"x_data,y_data = generate_data(n_data, sigma_func)\n",
|
||||
"\n",
|
||||
"# Plot the functinon, data and uncertainty\n",
|
||||
"# Plot the function, data and uncertainty\n",
|
||||
"plot_function(x_func, y_func, x_data, y_data, sigma_func=sigma_func)"
|
||||
],
|
||||
"metadata": {
|
||||
@@ -216,7 +216,7 @@
|
||||
"# Closed form solution\n",
|
||||
"beta, omega = fit_model_closed_form(x_data,y_data,n_hidden=14)\n",
|
||||
"\n",
|
||||
"# Get prediction for model across graph grange\n",
|
||||
"# Get prediction for model across graph range\n",
|
||||
"x_model = np.linspace(0,1,100);\n",
|
||||
"y_model = network(x_model, beta, omega)\n",
|
||||
"\n",
|
||||
@@ -297,7 +297,7 @@
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"# Plot the median of the results\n",
|
||||
"# Plot the mean of the results\n",
|
||||
"# TODO -- find the mean prediction\n",
|
||||
"# Replace this line\n",
|
||||
"y_model_mean = all_y_model[0,:]\n",
|
||||
@@ -325,4 +325,4 @@
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
"# import libraries\n",
|
||||
"import numpy as np\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"# Define seed so get same results each time\n",
|
||||
"# Define seed to get same results each time\n",
|
||||
"np.random.seed(1)"
|
||||
]
|
||||
},
|
||||
@@ -85,7 +85,7 @@
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Draw the fitted function, together win uncertainty used to generate points\n",
|
||||
"# Draw the fitted function, together with uncertainty used to generate points\n",
|
||||
"def plot_function(x_func, y_func, x_data=None,y_data=None, x_model = None, y_model =None, sigma_func = None, sigma_model=None):\n",
|
||||
"\n",
|
||||
" fig,ax = plt.subplots()\n",
|
||||
@@ -220,7 +220,7 @@
|
||||
" &\\propto&\\text{Norm}_{\\boldsymbol\\phi}\\biggl[\\frac{1}{\\sigma^2}\\left(\\frac{1}{\\sigma^2}\\mathbf{H}\\mathbf{H}^T+\\frac{1}{\\sigma_p^2}\\mathbf{I}\\right)^{-1}\\mathbf{H}\\mathbf{y},\\left(\\frac{1}{\\sigma^2}\\mathbf{H}\\mathbf{H}^T+\\frac{1}{\\sigma_p^2}\\mathbf{I}\\right)^{-1}\\biggr].\n",
|
||||
"\\end{align}\n",
|
||||
"\n",
|
||||
"In fact, since this already a normal distribution, the constant of proportionality must be one and we can write\n",
|
||||
"In fact, since this is already a normal distribution, the constant of proportionality must be one and we can write\n",
|
||||
"\n",
|
||||
"\\begin{align}\n",
|
||||
" Pr(\\boldsymbol\\phi|\\{\\mathbf{x}_{i},\\mathbf{y}_{i}\\}) &=& \\text{Norm}_{\\boldsymbol\\phi}\\biggl[\\frac{1}{\\sigma^2}\\left(\\frac{1}{\\sigma^2}\\mathbf{H}\\mathbf{H}^T+\\frac{1}{\\sigma_p^2}\\mathbf{I}\\right)^{-1}\\mathbf{H}\\mathbf{y},\\left(\\frac{1}{\\sigma^2}\\mathbf{H}\\mathbf{H}^T+\\frac{1}{\\sigma_p^2}\\mathbf{I}\\right)^{-1}\\biggr].\n",
|
||||
@@ -423,4 +423,4 @@
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 0
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"provenance": [],
|
||||
"authorship_tag": "ABX9TyM38ZVBK4/xaHk5Ys5lF6dN",
|
||||
"include_colab_link": true
|
||||
},
|
||||
"kernelspec": {
|
||||
@@ -44,8 +43,8 @@
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"# Run this if you're in a Colab to make a local copy of the MNIST 1D repository\n",
|
||||
"!git clone https://github.com/greydanus/mnist1d"
|
||||
"# Run this if you're in a Colab to install MNIST 1D repository\n",
|
||||
"!pip install git+https://github.com/greydanus/mnist1d"
|
||||
],
|
||||
"metadata": {
|
||||
"id": "syvgxgRr3myY"
|
||||
@@ -95,7 +94,7 @@
|
||||
"D_k = 200 # Hidden dimensions\n",
|
||||
"D_o = 10 # Output dimensions\n",
|
||||
"\n",
|
||||
"# Define a model with two hidden layers of size 100\n",
|
||||
"# Define a model with two hidden layers of size 200\n",
|
||||
"# And ReLU activations between them\n",
|
||||
"model = nn.Sequential(\n",
|
||||
"nn.Linear(D_i, D_k),\n",
|
||||
@@ -186,7 +185,7 @@
|
||||
"ax.plot(errors_test,'b-',label='test')\n",
|
||||
"ax.set_ylim(0,100); ax.set_xlim(0,n_epoch)\n",
|
||||
"ax.set_xlabel('Epoch'); ax.set_ylabel('Error')\n",
|
||||
"ax.set_title('TrainError %3.2f, Test Error %3.2f'%(errors_train[-1],errors_test[-1]))\n",
|
||||
"ax.set_title('Train Error %3.2f, Test Error %3.2f'%(errors_train[-1],errors_test[-1]))\n",
|
||||
"ax.legend()\n",
|
||||
"plt.show()"
|
||||
],
|
||||
@@ -233,7 +232,7 @@
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"n_data_orig = data['x'].shape[0]\n",
|
||||
"# We'll double the amount o fdata\n",
|
||||
"# We'll double the amount of data\n",
|
||||
"n_data_augment = n_data_orig+4000\n",
|
||||
"augmented_x = np.zeros((n_data_augment, D_i))\n",
|
||||
"augmented_y = np.zeros(n_data_augment)\n",
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"provenance": [],
|
||||
"authorship_tag": "ABX9TyNJodaaCLMRWL9vTl8B/iLI",
|
||||
"authorship_tag": "ABX9TyNb46PJB/CC1pcHGfjpUUZg",
|
||||
"include_colab_link": true
|
||||
},
|
||||
"kernelspec": {
|
||||
@@ -45,8 +45,8 @@
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"# Run this if you're in a Colab to make a local copy of the MNIST 1D repository\n",
|
||||
"!git clone https://github.com/greydanus/mnist1d"
|
||||
"# Run this if you're in a Colab to install MNIST 1D repository\n",
|
||||
"!pip install git+https://github.com/greydanus/mnist1d"
|
||||
],
|
||||
"metadata": {
|
||||
"id": "D5yLObtZCi9J"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"provenance": [],
|
||||
"authorship_tag": "ABX9TyMXS3SPB4cS/4qxix0lH/Hq",
|
||||
"authorship_tag": "ABX9TyNIY8tswL9e48d5D53aSmHO",
|
||||
"include_colab_link": true
|
||||
},
|
||||
"kernelspec": {
|
||||
@@ -45,8 +45,8 @@
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"# Run this if you're in a Colab to make a local copy of the MNIST 1D repository\n",
|
||||
"!git clone https://github.com/greydanus/mnist1d"
|
||||
"# Run this if you're in a Colab to install MNIST 1D repository\n",
|
||||
"!pip install git+https://github.com/greydanus/mnist1d"
|
||||
],
|
||||
"metadata": {
|
||||
"id": "D5yLObtZCi9J"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"provenance": [],
|
||||
"authorship_tag": "ABX9TyPVeAd3eDpEOCFh8CVyr1zz",
|
||||
"authorship_tag": "ABX9TyPx2mM2zTHmDJeKeiE1RymT",
|
||||
"include_colab_link": true
|
||||
},
|
||||
"kernelspec": {
|
||||
@@ -45,8 +45,8 @@
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"# Run this if you're in a Colab to make a local copy of the MNIST 1D repository\n",
|
||||
"!git clone https://github.com/greydanus/mnist1d"
|
||||
"# Run this if you're in a Colab to install MNIST 1D repository\n",
|
||||
"!pip install git+https://github.com/greydanus/mnist1d"
|
||||
],
|
||||
"metadata": {
|
||||
"id": "D5yLObtZCi9J"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"provenance": [],
|
||||
"authorship_tag": "ABX9TyPkSYbEjOcEmLt8tU6HxNuR",
|
||||
"authorship_tag": "ABX9TyNgBRvfIlngVobKuLE6leM+",
|
||||
"include_colab_link": true
|
||||
},
|
||||
"kernelspec": {
|
||||
@@ -45,8 +45,8 @@
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"# Run this if you're in a Colab to make a local copy of the MNIST 1D repository\n",
|
||||
"!git clone https://github.com/greydanus/mnist1d"
|
||||
"# Run this if you're in a Colab to install MNIST 1D repository\n",
|
||||
"!pip install git+https://github.com/greydanus/mnist1d"
|
||||
],
|
||||
"metadata": {
|
||||
"id": "D5yLObtZCi9J"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"provenance": [],
|
||||
"authorship_tag": "ABX9TyOo4vm4MXcIvAzVlMCaLikH",
|
||||
"authorship_tag": "ABX9TyO6xuszaG4nNAcWy/3juLkn",
|
||||
"include_colab_link": true
|
||||
},
|
||||
"kernelspec": {
|
||||
@@ -44,8 +44,8 @@
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"# Run this if you're in a Colab to make a local copy of the MNIST 1D repository\n",
|
||||
"!git clone https://github.com/greydanus/mnist1d"
|
||||
"# Run this if you're in a Colab to install MNIST 1D repository\n",
|
||||
"!pip install git+https://github.com/greydanus/mnist1d"
|
||||
],
|
||||
"metadata": {
|
||||
"id": "D5yLObtZCi9J"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"colab": {
|
||||
"provenance": [],
|
||||
"gpuType": "T4",
|
||||
"authorship_tag": "ABX9TyMjPBfDONmjqTSyEQDP2gjY",
|
||||
"authorship_tag": "ABX9TyOG/5A+P053/x1IfFg52z4V",
|
||||
"include_colab_link": true
|
||||
},
|
||||
"kernelspec": {
|
||||
@@ -47,8 +47,8 @@
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"# Run this if you're in a Colab to make a local copy of the MNIST 1D repository\n",
|
||||
"!git clone https://github.com/greydanus/mnist1d"
|
||||
"# Run this if you're in a Colab to install MNIST 1D repository\n",
|
||||
"!pip install git+https://github.com/greydanus/mnist1d"
|
||||
],
|
||||
"metadata": {
|
||||
"id": "D5yLObtZCi9J"
|
||||
|
||||
@@ -43,8 +43,8 @@
|
||||
"id": "Sg2i1QmhKW5d"
|
||||
},
|
||||
"source": [
|
||||
"# Run this if you're in a Colab\n",
|
||||
"!git clone https://github.com/greydanus/mnist1d"
|
||||
"# Run this if you're in a Colab to install MNIST 1D repository\n",
|
||||
"!pip install git+https://github.com/greydanus/mnist1d"
|
||||
],
|
||||
"execution_count": null,
|
||||
"outputs": []
|
||||
|
||||
BIN
UDL_Errata.pdf
BIN
UDL_Errata.pdf
Binary file not shown.
BIN
public/NMI_Review.pdf
Normal file
BIN
public/NMI_Review.pdf
Normal file
Binary file not shown.
Reference in New Issue
Block a user