Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save JossWhittle/f48abff924b3d63cf0d5a37912103d43 to your computer and use it in GitHub Desktop.

Select an option

Save JossWhittle/f48abff924b3d63cf0d5a37912103d43 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import tensorflow as tf\n",
"import matplotlib.pyplot as plt\n",
"\n",
"from IPython.display import clear_output"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# Make a random dataset of samples distributed linearly with Gaussian noise\n",
"#\n",
"def make_random_data(num_elements):\n",
" # Sample some random hyper-params\n",
" # M = slope, b = y offset\n",
" M = np.random.uniform(low=-2., high= 2., size=(1,))\n",
" b = np.random.uniform(low= 0., high=10., size=(1,))\n",
" \n",
" # Linear model which we will try to learn an approximation of M and b from\n",
" x = np.linspace(0., 1., num_elements)\n",
" y = (M * x) + b\n",
" \n",
" # Sample some Gaussian random noise to make our data distribution a bit more interesting\n",
" n = np.random.normal(loc=0., scale=0.01, size=(num_elements,))\n",
" y = y + n\n",
" \n",
" # Randomly shuffle the order of x,y pairs to hide the true data distribution\n",
" idx = np.random.permutation(num_elements)\n",
" x = x[idx]\n",
" y = y[idx]\n",
" \n",
" # Return the random data, and the true hyper-params used to generate it so we can compare them\n",
" # to the final results we will learn from the data\n",
" return x, y, M, b"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"# Hyper params for making dataset\n",
"dataset_size = 100000\n",
"\n",
"# 10% of the dataset for validating our results, 90% for training\n",
"validation_split = 0.1 \n",
"validation_size = int(dataset_size * validation_split)\n",
"train_size = dataset_size - validation_size\n",
"\n",
"# Get values, and true M and b so we can compare final results of training\n",
"x, y, true_M, true_b = make_random_data(dataset_size)\n",
"\n",
"# Split the dataset into a random training and validation set\n",
"t_x, t_y = x[:train_size], y[:train_size]\n",
"v_x, v_y = x[train_size:], y[train_size:]"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Plot the distribution of the training and validation data\n",
"plt.plot(t_x, t_y, ' .', color='b', label='Training')\n",
"plt.plot(v_x, v_y, ' .', color='r', label='Validation')\n",
"plt.legend()\n",
"plt.title('Training and Validation Data')\n",
"plt.xlabel('x')\n",
"plt.ylabel('y')\n",
"plt.axis('equal')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"step : 9999\n",
"M True : [-1.01716096]\n",
"M learned : [-1.01374364]\n",
"b True : [ 3.81573478]\n",
"b learned : [ 3.81403089]\n"
]
},
{
"data": {
"image/png": "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rY+PDyqVSu/av//+G9BMt4uOjqZz584615UrV47atWtnK77Lly/TpUsXSpYsibGxMaamprRo0QJA7zWamprSqlUrvdeTGg/AwYMHsbOzo3nz5jrlUkctZYevry/x8fGsX79eeywwMJCKFSvSsGFDnbLHjh2jdevWlChRQhv///73PxISErh27Vq220yNvXbt2lSoUEHneLdu3fTK3rlzB19fX5ycnLSfi9S1UrL72XjRgQMHcHBw0LvHffv2BdCbItGsWTPMzc21z93c3FCr1TrvR24piqL3fMGCBVSrVg0zMzPtaz527Fi2X29CQgJTp06lUqVKmJqaYmJigpmZGXfu3Mn1PRNCCCFyQvp70t+T/p5uLKAZaZlWr169MDY21sZSs2ZNjI2N6du3L9999126bb/33nvcunWLvn37sn37du7fv//S8QmRFySpJkQBKVWqlN6xWbNmMWLECDw9PdmyZQvHjh3jxIkTNGnSRG8Nioy8uNuQmZkZQLauz+ra6OhoAEqWLKl3bXrHXvTw4UMaNmzI2bNnmTVrFocOHeLEiRPabdBfjNHa2hoTE91Z6WZmZjrloqOjtdP90krvWEaaNm2Ki4sLq1evBuD48eOcP3+e/v3765S7dOkSjRo14sGDByxevJjDhw9z4sQJ5syZk278Wclu7ElJSTRu3Jhdu3bx2WefceDAAU6cOKHtmOS03bTtp/c5TB3an/p+p0pvJ6sX34/c+vvvv7GxsdHuYDVjxgw++eQTGjduzNatW7W/C++//3622xs6dCgzZ86ka9eu7Ny5U1tHhQoV8iRmIYQQIivS35P+nvT3dGNJ299LZWpqip2dnTYWDw8Pdu/ejZWVFQMHDsTV1ZWKFSuybNky7TWDBw9m6dKlhIeH0759e+zt7WnQoAG//vrrS8cpxMuQNdWEKCBpvyFMtW7dOlq2bKm3VkNMTExBhZWp1D+yLy6EC/DPP/9kef2ePXuIiopi27Zt1KlTJ0fXZhZTegvP56ROlUpFv379mDp1Kn/++SerVq3CxMSE3r1765TbvHkz8fHxbNu2DXt7e+3xw4cP5zr29OJ88diJEye4dOkSmzdv1vnG++zZs7lqN237qYvapnXnzh1As9BuQbhy5QphYWE637qvW7cOHx8fvv76a52yaRfqzUxKSgrr169n8ODBTJ06Vefc3bt3qVix4kvH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Pzvd5fzVP41R/N1p9erVxsfHxwwfPtz89ddf5osvvjBBQUFmypQprjajRo0yYWFhZtasWWbDhg2mXbt2JiIiwpw8edLV5mJ/S544ccIULFjQtGvXzmzYsMHMmjXLhIaGmjfffDNHzze36dKliylcuLCZO3eu2blzp5k1a5bJnz+/6d+/v6uN4p99Lna9l1OxdnduQUk1Dzl69Kjp0KGDCQkJMSEhIaZDhw7m+PHjrud37txpAPPzzz8bY4z5+eefDZDuz86dOz1zElk0fvx4U6xYMePn52duvfVW19Lpxthf5l26dEnVfsaMGaZcuXLG19fXlC9f3sycOTOHe5z9shKDYsWKpft+DxkyJOc7no2y+u/gfNdCUs2YrMdg+fLlplatWsbf39+ULFnSDB8+/KpIpmcmKzGIj483Q4cONaVKlTIBAQGmSJEi5umnn071mXk1yejz3HnOXbp0MfXr10+1z+LFi021atWMn5+fKV68uJkwYULOdzwbZTUG9evXz7S9SE7J7LNLLk1G17Mff/yxq82ZM2dMz549Tb58+UxgYKC55557zJ49e1IdZ/fu3aZFixYmMDDQ5MuXz/Ts2dOcPXs2VZtr7bPTXS5Mqin+7vXdd9+ZSpUqGX9/f1O+fHkzceLEVM8nJSWZIUOGmPDwcOPv72/uvPNOs2HDhlRtLva3pDHG/PHHH6ZevXrG39/fhIeHm6FDh5qkpCS3n19udvLkSdO7d29TtGhRExAQYEqWLGkGDRpkzp0752qj+Gefi13v5WSs3ZlbcBhzHYydERERERERERERyUaaU01ERERERERERCSLlFQTERERERERERHJIiXVREREREREREREskhJNRERERERERERkSxSUk1ERERERERERCSLlFQTERERERERERHJIiXVREREREREREREskhJNREREREREfGY22+/nQEDBlxy+y1btuBwONiyZYsbeyUicnFKqonIdS0xMZE77riDBx54INX2mJgYihQpwksvveShnomIiIjkDg6HI9Ofrl27XtHx582bl6VrrjJlynDgwAHKlClzRa97KaZNm0bNmjUJDQ0lNDSUSpUqpUoADhgwgNtvv93t/RCR3MnH0x0QEfEkb29vPv30U6pWrcoXX3xBhw4dAOjVqxf58uVj8ODBHu6hiIiIiGcdOHDAdX/69OkMHjyYrVu3urYFBgamu198fDy+vr4XPX6+fPmy1B9vb2/Cw8OztM/l+P777+ncuTOjR4+mRYsWGGPYuHEjy5Ytc/tri8jVQZVqInLdK1OmDCNHjqRXr17s37+fb7/9lmnTpvHpp5/i5+fn6e6JiIiIeFR4eLjrJywsDIfDkWabc0jmrFmzqFevHv7+/nz99dccOnSIhx9+mMKFCxMUFESVKlWYOXNmquNfOPwzPDycN998k86dO5MnTx6KFy/OJ5984nr+wuGf8+fPx+FwsGTJEqpVq0ZwcDB33nknf//9t2sfYwyDBw8mf/78hIWF8dRTT9G3b99Mq8y+++47GjVqRJ8+fShbtizlypXj/vvv56233gLg/fffZ/To0axatcpVtTdt2jQAjh07xqOPPup6vSZNmrBx40bXsZ0Vbu+88w6FCxcmODiYdu3aERsb62qzcOFCatSoQVBQEHnz5qVevXrs37//Mt5BEXEXJdVERLCVaVWqVKFz58488cQTDB48mKpVq3q6WyIiIiJXlRdeeIF+/fqxZcsWGjZsyJkzZ7jjjjv4/vvv2bBhA126dKFNmzZER0dnepzRo0dTr149oqOjefTRR3n88cfZuXNnpvu89NJLvPPOO6xevZq4uDieeOIJ13MfffQRY8aM4a233mLNmjXkz5+fDz/8MNPjhYeH8/vvv2c4d1uXLl3o2bMnt956KwcOHODAgQO0atWKxMREoqKiiImJYcGCBaxZs4by5cvTqFEjTp486dp/48aNzJ07l//7v/9j7ty5rFy5kmeffRaAs2fP0rp1a6Kiovjzzz/59ddfeeSRRzLtr4jkPA3/FBHBzhUyYcIEKlSoQOXKlbM0Wa6IiIiIWP369eO+++5Ltc2ZKALo27cv33//PV9//XWmX2C2atWKxx9/HLDJsrFjx7JkyRJKlCiR4T6jRo2iTp06APTv35+HH36YxMREvL29eeedd+jevTudOnUC4LXXXmP+/PmZnkvfvn1Zvnw5FSpUoESJEtx+++1ERUXRrl07fH19CQwMJDg4GF9f31TDUefNm8eOHTv49ddfXcNf//e///HNN9/wzTff0LlzZwDi4uL4/PPPKVCgAABvvfUWDz30EG+88QZnz57l1KlTtGzZkpIlSwJQsWLFTPsrIjlPlWoiIsk++ugjgoKC2LlzJ/v27fN0d0RERESuOjVq1Ej1OCEhgWHDhlG5cmXy5ctHnjx5WLp0KXv27Mn0OLfccovrvpeXFwULFuTw4cOXvE9ERASJiYkcPXoUgG3btnHbbbelan/h4wuFhoayYMECtm3bxsCBAwkICKBXr17Url2bs2fPZrjf2rVrOX78OHnz5iVPnjzkyZOHkJAQ9u/fn2pIaqlSpVwJNYDatWuTkJDAX3/9RaFChWjbti0NGzbkvvvu45133uHQoUOZ9ldEcp6SaiIiwIoVK3jrrbf49ttvqV27Nt26dcMY4+luiYiIiFxVgoODUz0eMWIE48eP58UXX+Tnn38mOjqaBg0aEBcXl+lxLlzgwOFwkJSUdMn7OBwOAJKSklzXdM5tTpd6rVemTBkef/xxPvroI9asWcO6deuYPXt2hu2TkpIoXrw40dHRqX62bt3KM888c9HXc/Zz6tSpLFu2jNtuu40pU6ZQtmxZ1q1bd0l9FpGcoaSaiFz3zpw5Q5cuXXjyySdp3LgxkydPZs2aNXzwwQee7pqIiIjIVW3ZsmU8+OCDtGvXjipVqlC8eHH++uuvHO2Dw+GgbNmyrF69OtX23377LcvHKlmyJAEBAZw6dQoAPz8/EhMTU7W59dZb2bdvH4GBgZQuXTrVz4033uhq9/fff3PkyBHX45UrV+Lt7U3p0qVd26pXr86gQYNYtWoVJUuWdC2EICK5g+ZUE5Hr3oABA0hKSmL06NEAFC1alDFjxtC3b1+ioqIoXry4ZzsoIiIicpUqXbo08+fPZ9WqVYSEhDB69GiOHz+e4/3o1asXvXv3pmrVqtSsWZMpU6awbdu2TOcpe/HFFzHGEBUVRbFixTh69Chjx47F29ubRo0aAbiShBs2bCAiIoLQ0FCaN29O1apVue+++xg1ahSlSpVi//79zJ07l3bt2rmGqfr5+dGlSxdGjRrF8ePH6du3L506dSJfvnxs3bqVzz//nHvuuYdChQqxceNGdu7cSYUKFXIkXiJyaVSpJiLXtSVLljB+/Hg++eSTVMMVHn/8ce644w4NAxURERG5AsOGDaNChQo0atSIRo0aUbp0ae6+++4c78ejjz5Knz59eOaZZ6hRowaHDx+mffv2BAQEZLhPgwYN2LJlCx07dqRcuXLcc889nDhxgoULF7oWTGjTpg0NGjSgXr163HTTTcyaNQtvb28WLFjAbbfdRqdOnShfvjzt27dn//793HTTTa7j33zzzTRr1oyoqCjuvvtuatSowdtvvw1Anjx5+OOPP2jdujVlypShR48e9OvXj65du7o1TiKSNQ6jvxZFRERERETkOrnJ72AAAAD2SURBVFOvXj3Kly/PpEmTcvy1BwwYwOLFi1m5cmWOv7aIZB8N/xQREREREZFrWkxMDJ9++ilNmjQB4LPPPuOXX35hxIgRHu6ZiFzNlFQTERERERGRa5rD4eCbb75h6NChxMXFUb58eebMmUO9evU83TURuYpp+KeIiIiIiIiIiEgWaaECERERERERERGRLFJSTUREREREREREJIuUVBMREREREREREckiJdVERERERERERESySEk1ERERERERERGRLFJSTUREREREREREJIuUVBMREREREREREckiJdVERERERERERESySEk1ERERERERERGRLPp/uBRSk4nZYSYAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 1500x500 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Clear any tensorflow variables and operations from the current graph\n",
"tf.reset_default_graph()\n",
"\n",
"# Make a new session with the tensorflow graph engine\n",
"with tf.Session() as sess:\n",
" \n",
" # Placeholder which represents input x-axis values which we would like to predict y-axis values for\n",
" # Shape is (None,) because we don't know yet how big the batches will be. The comma denotes that this\n",
" # will be a list of one x value for each element in the batch.\n",
" p_x = tf.placeholder(tf.float32, shape=(None,))\n",
"\n",
" # Define our trainable parameters...\n",
" # M is multiplicative, so we initialize it with a random normal distributed value\n",
" M = tf.get_variable('M', shape=(1,), dtype=tf.float32, initializer=tf.initializers.random_normal)\n",
" # b is additive, so we initialize it as zero to avoid introducing training instability\n",
" b = tf.get_variable('b', shape=(1,), dtype=tf.float32, initializer=tf.initializers.zeros)\n",
"\n",
" # Define our linear model, using our trainable parameters and our input placeholder...\n",
" # This would be whatever neural network architecture you want to use\n",
" y_hat = (M * p_x) + b\n",
" \n",
" # Define another placeholder for the expected values. During training we will measure the difference between \n",
" # our predictions and these expected values, and we will minimize this error\n",
" p_y = tf.placeholder(tf.float32, shape=(None,))\n",
"\n",
" # Define the loss function to optimize our parameters by minimizing the observed error in our predictions\n",
" #loss = tf.reduce_mean(tf.abs(y_hat - p_y)) # L1 Loss\n",
" loss = tf.reduce_mean((y_hat - p_y) ** 2.) # L2 Loss\n",
"\n",
" # Define a train op, which when evaluatated steps our trainable parameters in the direction that we\n",
" # believe will make the loss become smaller. \n",
" learning_rate = 5e-3\n",
" train_op = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss)\n",
" \n",
" # Initalize all parameters and variables we have defined to their default values\n",
" sess.run(tf.global_variables_initializer())\n",
" \n",
" # Train for a certain number of training steps\n",
" num_steps = 10000\n",
" # Show the model a certain number of training examples at the same time, and average the gradient updates over them\n",
" batch_size = 32\n",
" \n",
" # Empty arrays for keeping track of the loss values on training and validation sets over time\n",
" loss_steps = []\n",
" t_losses = []\n",
" v_losses = []\n",
" \n",
" for step in range(num_steps):\n",
" \n",
" # Sample a random batch of training data, both x values, and their expected y values\n",
" batch_idx = np.random.choice(train_size, size=(batch_size,), replace=False)\n",
" batch_x = t_x[batch_idx]\n",
" batch_y = t_y[batch_idx]\n",
" \n",
" # Perform a single step for stochastic gradient descent, and return the loss value \n",
" t_loss, _, = sess.run([loss, train_op], feed_dict={ p_x : batch_x, p_y : batch_y })\n",
" \n",
" # Plot diagnostics every 100 steps or on the last step\n",
" if ((step % 100 == 0) or (step+1 == num_steps)):\n",
" \n",
" batch_idx = np.random.choice(validation_size, size=(batch_size,), replace=False)\n",
" batch_x = v_x[batch_idx]\n",
" batch_y = v_y[batch_idx]\n",
" \n",
" # Make predictions for a batch of samples from the validation set and compute the loss value,\n",
" # also return to us the current values of M and b so we can plot a line of best fit\n",
" predicted_y, v_loss, learned_M, learned_b, = sess.run([y_hat, loss, M, b], \n",
" feed_dict={ p_x : batch_x, p_y : batch_y })\n",
" \n",
" # Log the current step and the loss values we observed on the training and testing sets\n",
" loss_steps.append(step)\n",
" t_losses.append(t_loss)\n",
" v_losses.append(v_loss)\n",
" \n",
" # Clear all of the output from this jupyter notebook cell\n",
" clear_output()\n",
" \n",
" # Print out the current learned values and their true values which they should move towards\n",
" # in general you will not have access to the true values. We only have them here because we\n",
" # made them up when we made the dataset.\n",
" print('step :', step)\n",
" print('M True :', true_M)\n",
" print('M learned :', learned_M)\n",
" print('b True :', true_b)\n",
" print('b learned :', learned_b)\n",
" \n",
" # A little bit of setup code to make matplotlib render nicely in a jupyter notebook\n",
" figw = 1500\n",
" figh = 500\n",
" figdpi = 100\n",
" fig = plt.figure(facecolor='white', figsize=(figw/figdpi, figh/figdpi), dpi=figdpi)\n",
" \n",
" # Left plot, show prediction accuracy on validation set which has not been used for training\n",
" plt.subplot(1, 2, 1)\n",
" plt.plot(v_x, v_y, ' .', color='r', label='Validation True')\n",
" plt.plot(batch_x, predicted_y, ' o', color='g', label='Validation Predicted')\n",
" # Compute line of best fit using our learned parameters\n",
" lobf_x = np.linspace(0., 1., 10)\n",
" lobf_y = (learned_M * lobf_x) + learned_b\n",
" plt.plot(lobf_x, lobf_y, '-', color='k', label='Line of Best Fit')\n",
" plt.legend()\n",
" plt.title('Training and Validation Data')\n",
" plt.xlabel('X')\n",
" plt.ylabel('Y')\n",
" plt.axis('equal')\n",
" \n",
" # Right plot, show loss curves throughout training progress\n",
" plt.subplot(1, 2, 2)\n",
" plt.plot(loss_steps, t_losses, '-', color='b', label='Training Loss')\n",
" plt.plot(loss_steps, v_losses, '-', color='r', label='Validation Loss')\n",
" plt.legend()\n",
" plt.title('Training and Validation Loss')\n",
" plt.xlabel('Training Steps')\n",
" plt.ylabel('Loss')\n",
" plt.grid('on')\n",
" # Use a y-log axis so that we can see small changes later on in training\n",
" plt.yscale('log', nonposy='clip')\n",
" \n",
" # Display the plots\n",
" plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment