{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 02. Tensorflow Intro\n", "\n", "A few simple examples of using tensorflow. See the [video tutorial](https://www.youtube.com/watch?v=uPqWgluFrmo) for details.\n", "\n", "#### Some Tensorflow Wisdom\n", "\n", "* You should never use loops(!). It adds tons of redundant tensors to your graph. Use only array operations\n", "* Use `tf.where()` for booleans\n", "* Use `gather`/`scatter` for slicing tensors with indices computed at runtime\n", "* TF can only check types/shape when building graph. Must wait until session to see errors like divide by 0\n", "* Use variable `assign` or `assign_add` to add things while computing\n", "* Use `tf.histogram_fixed_width` for histogramming or going from values to counts\n", "* TF infers which tensors must be computed based on what you ask for in `sess.run(...)`. Use `tf.control_dependency` to force things to be computed\n", "* For complex multiply/adds (like batched dot products of list of particles), use the general `tf.einsum` function\n", "* `tf.shape(x)` gets the runtime shape of a tensor. `x.shape` gets the shape of a tensor while building the graph.\n", "* A shape value of `-1` (e.g., [-1, 5]) means infer the value, which can be possible in a reshape. `None` (e.g., [None, 5]) means that the shape value will only be known at run time. \n", "* Use `tf.tile` to repeat quantities\n", "* You can check correctness with things like `tf.is_finite`\n", "* You can assess numerical errors using the `tf.debugging.check_numerics(x)` op which will halt tf is a tensor becomes nan\n", "* Each python expression is an op, which must be called to be evaluated, unless its result is used later" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import tensorflow as tf\n", "import numpy as np\n", "import numpy.random as nprand\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Basic Computations" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "10.0\n" ] } ], "source": [ "# Compute product of two numbers\n", "a = tf.constant(2.) # a constant tensor\n", "b = tf.constant(5.)\n", "c = a * b # a tensor which is computed\n", "with tf.Session() as sess:\n", " result = sess.run(c)\n", "print(result)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Feeding into placeholders" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Input:\n", " [[0 1]\n", " [2 3]\n", " [4 5]\n", " [6 7]]\n", "Output: [ 1. 5. 9. 13.]\n" ] } ], "source": [ "# RESET GRAPH!\n", "tf.reset_default_graph()\n", "\n", "matrix = tf.placeholder(tf.float64, shape=[4, 2])\n", "c = tf.reduce_sum(matrix, axis=1)\n", "matrix_values = np.arange(4 * 2).reshape(4,2)\n", "\n", "with tf.Session() as sess:\n", " result = sess.run(c, feed_dict={matrix: matrix_values})\n", "print('Input:\\n', matrix_values)\n", "print('Output:', result)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Linear Regression" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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fvppLVu2TF/60pf0ne98J6ERpt8777yjRYsW6fvf//6I+2KLK0bGtLe3GytXrjQMwzD2799vLF26tOj+pqYm4//+7/+MgYEBY9myZcb+/fuTGGaqOV3Dz33uc8YHH3xgGIZh3Hvvvcarr74a+xizwOk65m9ftmyZsWLFiriHlwlO1/C+++4zXnrpJcMwDGPDhg3G+++/H/sY087uGp46dcq48cYbjb6+PsMwDOOuu+4y/vM//zORcabZmTNnjBUrVhgPP/ywsWPHjhH3xxVXMjdDfuONN7Ro0SJJ0ic/+UmdPHlSp0+fliS99957qq+v15QpU1RRUaHPfvazeuONN5IcbirZXUNJev7559XY2ChJmjBhgo4dO5bIONPO6TpK0qZNm/TXf/3XSQwvE+yu4eDgoP7jP/5DCxculCStX79ef/qnf5rYWNPK7hpWV1erurpaPT096u/v14cffqj6+vokh5tKo0aN0j//8z9r8uTJI+6LM65kLiAfOXJE48ePH/rzn/zJn6i7u1uS1N3drQkTJgzdN3HixKH78DG7ayhJY8aMkSQdPnxYv/zlL/XZz3429jFmgdN1fP7553XdddfpoosuSmJ4mWB3Df/4xz9qzJgx+od/+AetWLFCmzdvlkGV5gh217Cmpkb33HOPFi1apIULF+qaa67RpZdemtRQU6uqqkq1tbWm98UZVzIXkIf/gzQMQ7lczvQ+SUP34WN21zDv6NGj+trXvqZ169YV/WPHx+yu4/Hjx/X888/rrrvuSmJomeH077mrq0tLlizR9u3b9fbbb+sXv/hFEsNMNbtrePr0af3TP/2TfvKTn+jll1/Wf/3Xf+l//ud/khhmZsUZVzIXkBsaGnTkyJGhPx8+fFgTJ040va+rq0uTJk2KfYxpZ3cNpfP/iL/61a/q/vvv1/z585MYYibYXcdf/epX+uMf/6i/+Iu/0Ne//nXt27dPGzduTGqoqWV3DcePH68pU6boz/7sz1RZWanrr79e+/fvT2qoqWV3Dd99911dcsklmjBhgkaNGqXZs2frrbfeSmqomRRnXMlcQJ43b57+/d//XZL09ttva/LkyUNLrBdffLFOnz6tP/zhD+rv79fPf/5zzZs3L8nhppLdNZTO73v+5V/+JUvVDuyu480336wXX3xR//Zv/6bHHntMV1xxhdauXZvkcFPJ7hpWVVXpkksu0cGDByVJ+/btY7nVhN01vOiii/Tuu+/q7NmzMgxDb731lqZOnZrgaLMnzriSydaZjz76qH7zm98ol8tp/fr1evvtt1VXV6fPfe5z+vWvf61HH31UknTTTTfp7rvvTni06WR1DefPn685c+Zo1qxZQ4+97bbbtGzZsgRHm152fxfz/vCHP2jNmjXasWNHgiNNL7tr+L//+79av369ent7NW3aNG3YsEEVFZmbR0TO7ho+88wzev7551VZWalZs2bpG9/4RtLDTZ233npLf/d3f6f3339fVVVVamho0MKFC3XxxRfHGlcyGZABACg1fNUEACAFCMgAAKQAARkAgBQgIAMAkAIEZAAAUoCADABAChCQAQBIAQIyAAAp8P8BiIqP81z6n48AAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "N = 256\n", "x_values = np.linspace(0,1,N)\n", "# shuffle data\n", "nprand.shuffle(x_values)\n", "m_true = 2\n", "b_true = -4\n", "y_values = x_values * m_true + b_true + nprand.normal(size=x_values.shape, scale=0.2)\n", "\n", "\n", "plt.style.use('seaborn-dark')\n", "plt.figure(figsize=(8,6))\n", "plt.plot(x_values, y_values, 'o')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING: Logging before flag parsing goes to stderr.\n", "W0308 23:26:41.222957 139810421933888 deprecation.py:323] From /home/whitead/miniconda3/envs/htf/lib/python3.7/site-packages/tensorflow/python/ops/math_grad.py:1205: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n", "Instructions for updating:\n", "Use tf.where in 2.0, which has the same broadcast rule as np.where\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "final result [1.9365615, -3.9615045, 0.20088643, None]\n" ] } ], "source": [ "tf.reset_default_graph()\n", "# set-up loss\n", "x = tf.placeholder(tf.float32)\n", "y = tf.placeholder(tf.float32)\n", "m = tf.get_variable('m',initializer=1.0)\n", "b = tf.get_variable('b', initializer=0.0)\n", "yhat = x * m + b\n", "loss = tf.reduce_sum((yhat - y)**2, axis=0)\n", "optimizer = tf.train.GradientDescentOptimizer(1e-1).minimize(loss)\n", "\n", "# learn by minibatching data\n", "batch_size = 4\n", "with tf.Session() as sess:\n", " # must initialize the variables\n", " sess.run(tf.global_variables_initializer())\n", " for i in range(0,len(x_values), batch_size):\n", " result = sess.run([m, b, loss, optimizer], feed_dict={x: x_values[i:(i+batch_size)], y:y_values[i:(i+batch_size)]})\n", "print('final result', result)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.style.use('seaborn-dark')\n", "plt.figure(figsize=(8,6))\n", "plt.plot(x_values, y_values, 'o')\n", "plt.plot(x_values, x_values * m_true + b_true, '-')\n", "plt.plot(x_values, x_values * result[0] + result[1], '--')\n", "plt.show()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Neural Network" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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Tunaa6/lhBNO4MQTT2T69Ol+x+m0Zs2axciRI3nwwQf9jtKpXX/99Zxwwgkcc8wxvPDCC9/53g494+3stHKX/xYuXMi9997L7rvv7neUTmny5MksWLCA8ePHM2fOHC655JKsaYeSf42NjVx11VUMGzbM7yid2qRJk5g9ezbjx4+npqaG0aNHM2rUqHbfryveDjjqqKO45JJLAK3c5ZeePXsybtw4Kioq/I7SKb3zzjuMHDkSgH79+lFbW0t9fb3PqTqfcDjMnXfeSa9evfyO0qkNGTKEW265BYCqqiqamprIZDLtvl/F2wGhUKhlGpVW7vJHLBYjEAj4HaPTWrFiBV27dm35dffu3Vm+fLmPiTqnYDBINBr1O0anFwgEKCsrA5pn/YwYMeI7fz7pVvN6aOUu/33Xn4H449uTIay1GGN8SiNSGF588UUeeeQR7rnnnu98n4p3PY477jiOO+64rOMTJkzg5Zdf5tZbb221drXkXnt/BuKf3r17s2LFipZfL1u2jB49eviYSMRfb7zxBrfffjt33XUXlZXfvYCUbjV3wNcrd40bN67dlbtEStnw4cOZOHEiAB9//DG9evXS83bptOrq6rj++uu54447qK6uXu/7tYBGB9x8880888wz9OnTp+WYVu7y1quvvsrdd9/NvHnz6NatGz179lzv7R3JrRtvvJGpU6dijOHyyy9n4MCBfkfqdGbOnMmYMWNYvHgxwWCQ3r17M3bs2A364S+5M378eMaOHUvfvn1bjo0ZM6ZVR6xLxSsiIuIh3WoWERHxkIpXRETEQypeERERD6l4RUREPKTiFRER8ZCKV0RExEMqXhEREQ+peEVERDz0/wHV+av06gIlQAAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "N = 64\n", "feature_values = nprand.normal(size=[N, 2], scale=1)\n", "label_values = np.sum(feature_values * np.ones((N,2)), axis=1) > 0\n", "onehot_labels = np.vstack((label_values, ~label_values)).astype(np.float32).T\n", "\n", "plt.style.use('seaborn-dark')\n", "plt.figure(figsize=(8,6))\n", "plt.scatter(feature_values[:,0], feature_values[:,1], c=label_values, cmap='viridis')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "W0308 23:26:41.632329 139810421933888 deprecation.py:506] From /home/whitead/miniconda3/envs/htf/lib/python3.7/site-packages/tensorflow/python/ops/init_ops.py:1251: calling VarianceScaling.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n", "Instructions for updating:\n", "Call initializer instance with the dtype argument instead of passing it to the constructor\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "5.78321171\n", "2.79685211\n", "5.08434534\n", "3.43735576\n", "3.39214087\n", "1.4444387\n", "2.55319977\n", "1.59300661\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Create a 2 layer NN\n", "\n", "tf.reset_default_graph()\n", "batch_size = 8\n", "\n", "# set-up loss\n", "features = tf.placeholder(tf.float32, shape=[None,2])\n", "labels = tf.placeholder(tf.float32)\n", "\n", "hidden = tf.keras.layers.Dense(2)(features)\n", "softmax = tf.keras.layers.Dense(2, activation=tf.keras.activations.softmax)(hidden)\n", "\n", "loss = tf.reduce_sum(tf.keras.losses.binary_crossentropy(labels, softmax))\n", "# let's print the loss\n", "print_op = tf.print(loss)\n", "optimizer = tf.train.GradientDescentOptimizer(1e-1).minimize(loss)\n", "\n", "# learn by minibatching data\n", "losses = []\n", "with tf.Session() as sess:\n", " # must initialize the variables\n", " sess.run(tf.global_variables_initializer())\n", " for i in range(0,N, batch_size):\n", " result = sess.run([loss, print_op, optimizer], feed_dict={features: feature_values[i:(i+batch_size)], labels:onehot_labels[i:(i+batch_size),:]})\n", " losses.append(result[0])\n", " # get final predictions\n", " label_predicts = sess.run([softmax], feed_dict={features: feature_values})\n", "\n", "plt.figure(figsize=(8,6))\n", "plt.plot(losses)\n", "plt.title('Loss')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAr0AAAFxCAYAAAB+5hCKAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzdd5wV1f3/8deZuXUbZekooKioKKiogChKE+yxG9Eg5htSTKLGmESTaCzRaGISY4/lZyyJNdi7RuwKCqigggiydBDYevuc3x+LC8susCy7d/befT/z4PEIc++debMhh889c85njLXWIiIiIiKSxxy/A4iIiIiItDYVvSIiIiKS91T0ioiIiEjeU9ErIiIiInlPRa+IiIiI5D0VvSIiIiKS91T0SosaMGAA48aNY8KECUyYMIFx48Zx6aWXUlNTs83PPvjgg4wYMYLbbrstC0lFRNqvTcfq8ePHc/LJJ/Puu+/u8HlvvfVWfvOb3wAwadIk5syZs9X3P/LII3X/vSnvF9kRRn16pSUNGDCAadOm0aNHDwCSySQXXnghu+22GxdeeOFWPztp0iSOPfZYTj311GxEFRFptzYfqz/88EN+/OMf88ILL9C5c+dmn/fWW29l8eLF/OlPf9rmezOZDEOHDmXGjBnNvp7I9tBMr7SqUCjEYYcdxmeffQbUFsFXX30148ePZ/To0dx+++0AXH/99cyaNYsbb7yRm266aYvvAxg9ejQ333wz48ePZ9myZaxcuZIf/ehHjB8/nvHjxzNt2jQAlixZwqGHHsp9993Hcccdx2GHHcZzzz0HgLWWa6+9ltGjRzN+/HjuuuuuuvPfcsstjB8/nlGjRnH11VeTyWSy9eMSEfHFkCFD6NOnDzNnzqwbO6+55hrOOussoLYoPvnkkxk3bhynnXYaZWVlAMTjcS644AJGjRrFWWedxYoVK+rOOXr06LqCdurUqXVj9MUXX0wymWTy5MlUVlYyYcIEysrK6r3/+eef59hjj2XChAl873vfY/HixQDcdNNNXHnllZx33nmMGTOGU045hVWrVtX7zFFHHcVxxx3H+++/n7Wfn+QIK9KC9thjD7t8+fK6369fv95OnDjR3nrrrdZaa++66y47adIkm0gkbHV1tf3Od75jX3vtNWuttWeddZZ94okntvm+UaNG2d/97nd115gyZYr929/+Zq21dtGiRfbggw+2a9eutWVlZXbvvfe2999/v7XW2ueee86OGzfOWmvtE088Yc844wybTCZtZWWlPfzww+3s2bPt888/b4855hhbUVFhU6mUnTJlSt3nRUTyxeZjtbXWnnDCCfaNN96wZWVlduDAgfa///2vtdbaqqoqO2LECPvWW29Za619+umn7YknnmittfaBBx6wEydOtKlUyq5du9aOGjXK/vrXv7bW1o7V06dPt2VlZXbYsGF2xYoV1vM8e95559k777zTlpWV2b322qvu+t++f+nSpXbIkCF20aJF1lpr7777bjtp0iRrrbX/+Mc/7PDhw+2SJUus53l2ypQpdf++DB061C5ZssRaa+306dPtNddc00o/PclVmumVFnf22WczYcIExowZw5gxYxg2bBg/+MEPgNpv4qeccgqhUIiCggJOOOEEXnrppQbn2Nb7jjjiCABqamqYNm0aZ555JgB9+/ZlyJAhdbO96XSak046CYCBAweybNkyAN544w3Gjx9PMBikqKiI5557jn333Zfnn3+e4447juLiYgKBAKeeemqj+URE8sm0adNYs2YNBxxwAACpVIpx48YBMGPGDAoLCxkxYgQAxx57LIsXL2bZsmXMmDGDcePGEQgE6NSpE6NGjWpw7rfffpv999+f7t27Y4zhhhtu4JxzztlilrfffpuhQ4fSt29fAE499VTef/99UqkUAAceeCC9e/fGGMNee+3F8uXLASgtLeWhhx5i6dKlHHjggVxyySUt9vOR/BDwO4Dkn/vvv58ePXqwdu1aJkyYwNFHH00gUPtXrbKykhtuuIGbb74ZqF3uMGjQoAbn2Nb7OnToUPc+ay3f+9736l6rqalh2LBhALiuS0FBAQCO4+B5HgDr1q2jpKSk7jPfvqeyspL777+fqVOnArVrznZkfZuISFt19tln47ou1lp69+7NnXfeSWFhIevWrcN1XYqKigCoqKhg5cqVTJgwoe6zoVCItWvXUl5eTnFxcd3xkpISqqur611n8/E2HA5vNdfm7y8uLsZay/r16+t+/y3XdeuWoN12223cdtttnHTSSfTs2ZNLL72Ugw8+eHt/LJLHVPRKq+ncuTNnn302f/7zn+s6MnTr1o1zzz230dmATTX1faWlpbiuy+OPP05hYWG915YsWbLFz3Xq1Il169bV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BWjac9zzicZsyRk2Q4BPgQxp9gUT9DuRtAFNGbPVskzEFJDmYL9TiIhIUxiXNIP9TiE5SMsbRERERCTvqegVERERkbynoldERERE8p6KXhERERHJeyp6RURERCTvqegVERERkbynoldERERE8p6KXhERERHJeyp6RURERCTvqegVERERkbynoldERERE8p6KXhERERHJeyp6RURERCTvqegVERERkbynoldERERE8p6KXhERERHJe4Ed+fD111/Phx9+SDqd5oc//CFHHnlkS+USEZEWpjFbRNqzZhe97733HvPnz+fhhx9m3bp1nHjiiRpARUTaKI3ZItLeNbvoPeiggxg0aBAAHTp0IBaLkclkcF23xcKJiEjL0JgtIu1ds9f0uq5LQUEBAI8++igjR47U4Cki0kZpzBaR9m6H1vQCvPLKKzz22GPcc889LZFHRERakcZsEWmvdqh7w5tvvsntt9/OnXfeSXFxcUtlEpG2xFqwab9TSAvQmC3SDlgLNuV3ijap2TO9lZWVXH/99dx777107NixJTOJSFtgYxR6fyXMM0CKNHtS7VxKxuztdzJpBo3ZInnOWiL2P0TtXRgq8OhKjTmfpDPB72RtRrOL3ueee45169ZxwQUX1B277rrr6NWrV4sEExF/FXu/IsgMDEkAgnxGB28K652H8Uxvn9PJ9tKYLZLfIvYBCuztGOIAuKyiyF5FpQ2TMqN8Ttc2GGutbY0Tr15d2RqnFZEscGwZHb3TMSTqHbcEiHMqNe4vfUqWPV27tq/b/xqzRXKY9ejkjcah4f+P0/Sn3H3Eh1DZ1ZQxW09kE5EGXBZjCTY4bkgTYL4PiUREZMtiGGoafcVlaZaztF0qekWkgQy71C1r2JQlSAqt6RURaVsKsDQ+05mhX3ajtGEqekWkAc/0IslILOG6YxaDJUTC+a6PyUREpAFjqDHnYYnUO2wJU+P81KdQbY+KXhFpVJVzNTFzFh4dsIRIMYwK5194ppvf0UREZDMJ5ySqzG/J0BtLkDS7Uen8hZQZ7ne0NkMb2UREGqGNbCIiuUMb2UREREREUNErIiIiIu2Ail4RERERyXsqekVEREQk76noFREREZG8p6JXRERERPKeil4RERERyXsqekVEREQk76noFREREZG8p6JXRERERPKeil4RERERyXsqekVEREQk76noFREREZG8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RtGEI8so6vwy/9eAyxkMzcCaOetMSERERBU5dSgHh7cf8Zso5HV5sfD9xSaloljFppciSkFeIVSP6nfd6/aiIKfQhERERFSRwrwiSJbA65LPnuQMYgotNr0UUTpc1Bay1X+dmy3exiM7iYjCTJOOjQPOjZetMroO6WxCIoplbHoporTq0RJdBnaCLe73kWxWhxVtMluhU/8OJiYjIqLy7HE2XP/UtbCeN0ZTtspITE7A8LsvMTEZxSJuZKOIo2s6Vn61Gsu+WAVD0zHg+n4YNK4/5ApeoRFVBzeyEQXPtpU7sOCDH5CfU4BuQ7pg+F3DkJgaW3/GqHZxegMRUTWx6SUiihyc3kBEREREBDa9RERERBQD2PQSERERUdRj00tEREREUY9NLxERERFFPTa9RERERBT12PQSERERUdRj00tEREREUY9NLxERERFFPTa9RERERBT12PQSERERUdRj00tEREREUY9NLxERERFFPTa9RERERBT12PQSERERUdRj00tEREREUY9NLxERERFFPTa9RERERBT12PQSERERUdRj00tEREREUY9NLxERERFFPdnsAESx7OjuYzix/yQatW2Ihq0bmB2HiIj+QH5OAfZtPIi6aXXQukcLCIJgdiSqAja9RCbwOD147ZZ3sOeXfZBkEZqioePFHfDQtPtgtVtq9d47f96NlTNXQ1VU9L32InQb2oWFm4joDxiGgZn/moPvP14G2SrD0A3UTa+DJ//zINIapdTqvU8cysWyWetw+mQ+uvRti75Xdq/17xPRSjAMw6iND87NLaqNjyWKCtMe/wwrZ6yG4lFKr1nsFlx62xDc+PzYWrvvf/45C4un/QiPywsYgC3OhszLu+O+KXex8S0nPT3R7AghxZpNVLGsBRvx/v996qud5wiigKbtG+HFRU/V2n03rtiJdx/7EqqiQdd02BwWpNRPwvNfToAj3lZr941ElanZXNNLFGKGYWDVzLINLwAobgVLv1hZa/c9ceAUFn24BB6nr+EFfE+cNyzaiN1Ze2vtvkREkW7xJ8vKNLwAYOgGThw4hZOHcmrlnpqq4YNnZsHrVqBrOgDA41KQd/wsFk9fXSv3jHZseolCzDAMKB414Ne8Tm/A68GwZdm20mb3fB6XBxu/31xr9yUiinTOQlfA66IswVXkrpV7Htt/Cpqi+V1XPCrWLWbNrg42vUQhJooi2vRs5f8FAejYr32t3dceb4Mo+f+Rl2QJ9kR7rd2XiCjSXTi8Gyw2/21QoiigSftGtXJPm8MKXdcDfs0Rz5pdHWx6iUxw+8Sb4Ui0Q7b6iqhskxGX6MDNL46rtXteOLxHwOuSJKLftRfV2n2JiCLd5bcPQWrDFFgdVgCAKImwOiy4c+KNkC1SrdyzXtM0ZDRJhSCW3W9hc1hwyQ19a+We0Y4b2YhMcvbkWSyethSHth1Gy27NccltQ5CUUbdW77l1xXa8cdtkQBAgwLdm7M7Xb8XFo/rU6n0jETeyEdH53E4PVs1ai01LtyG1UQouuWUgmrRrWKv3zD16Bi/f+QGK850ABGiqhoHX9sT4J0dw83E5lanZbHqJYozX5cXWlTugqRo6D+iIuESH2ZHCEpteIgoHuq5jz6+HkJ9XhNZdmyGtQZLZkcISm14iompi00tEFDk4soyIiIiICGx6iYiIiCgGsOklIiIioqjHppeIiIiIop7/pOVKUFUVTz/9NI4cOQJVVfH444/jwgsvDHY2IiIKAtZsIqJqNr3fffcdHA4HvvzyS+zduxdPPvkkZs+eHexsREQUBKzZRETVbHpHjBiBq666CgCQkpKC/Pz8oIYiIqLgYc0mIqpm02uxWEr//6efflpaTImIKPywZhMRVaLpnTVrFmbNmlXm2v3334/+/fvjiy++wPbt2zF16tRaC0hERJXHmk1EFFi1T2SbNWsWFi1ahClTpsBms/l9naf7EFEki7YT2ViziSiaVaZmV2t5w5EjRzBjxgxMnz49YPGs7M2JiKj2sWYTEVWz6Z01axby8/Nx9913l16bNm0arFZr0IIREVFwsGYTEdVgeQMRERERUaTgiWxEREREFPViqulVVRVPPPEExo0bhzFjxmD9+vVmRzJVVlYW+vTpg2XLlpkdxRQvvfQSxo4di+uvvx5btmwxO46p9uzZg2HDhmH69OlmRzHdpEmTMHbsWIwaNQqLFy82O07MY93+XazXbIB1+3ys2z5VqdnVWtMbqXgq0e8OHz6MTz75BJmZmWZHMUVWVhays7Mxc+ZM7Nu3D08++aTfmKdY4XQ68cILL6BPnz5mRzHd2rVrsXfvXsycORNnz57FNddcg0svvdTsWDGNddsn1ms2wLp9PtZtn6rW7Jh60jtixAg8+eSTAHgqUXp6OiZPnoyEhASzo5hizZo1GDZsGACgdevWKCwsRHFxscmpzGG1WvHhhx8iIyPD7Cim69mzJ9566y0AQN26deFyuaBpmsmpYhvrtk+s12yAdft8rNs+Va3ZMdX0WiyW0nE9sX4qkcPhgCRJZscwTV5eHpKTk0v/OjU1Fbm5uSYmMo8sy7Db7WbHCAuSJCEuLg6Ab+LBgAEDYvrPSThg3faJ9ZoNsG6fj3Xbp6o1O2qXN/BUot/90e9FrCo/tMQwDAiCYFIaCjdLlizB7Nmz8fHHH5sdJaawbvuwZgfGuk0VqWzNjtqmd/To0Rg9erTf9VmzZmHp0qWYMmVKmfPoo1lFvxexrF69esjLyyv965ycHKSlpZmYiMLFqlWrMHXqVHz00UdITOSBDaHEuu3Dmh0Y6zYFUpWaHVPLG347lWjy5MkVnkpEsaFfv374/vvvAQA7duxARkZGTK+VI5+ioiJMmjQJ77//PpKSksyOQ2Ddpt+xblN5Va3ZMXU4xeuvv4758+ejYcOGpddi9VSi5cuXY9q0aThw4ABSUlKQnp4ec69yX331Vaxfvx6CIOC5555D+/btzY5kim3btmHixIk4duwYZFlGvXr18M4778Rk0zdz5ky88847aNGiRem1iRMnlqkZFFqs2z6s2T6s2z6s2z5Vrdkx1fQSERERUWyKqeUNRERERBSb2PQSERERUdRj00tEREREUY9NLxERERFFPTa9RERERBT12PQSERERUdRj00tEREREUY9NLxERERFFvf8HZpEAYkwZtjYAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, axs = plt.subplots(1, 2, figsize=(12,6))\n", "axs[0].set_title('Reference')\n", "axs[0].scatter(feature_values[:,0], feature_values[:,1], c=label_values, cmap='viridis')\n", "axs[1].set_title('Predictions')\n", "axs[1].scatter(feature_values[:,0], feature_values[:,1], c=label_predicts[0][:,0], cmap='viridis')\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.7.6" } }, "nbformat": 4, "nbformat_minor": 2 }