{ "cells": [ { "cell_type": "code", "execution_count": 1, "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import tensorflow as tf\n", "from tensorflow import keras\n", "%matplotlib inline\n", "tf.random.set_seed(1)\n", "np.random.seed(1)" ], "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Init Plugin\n", "Init Graph Optimizer\n", "Init Kernel\n" ] } ], "metadata": { "ExecuteTime": { "end_time": "2021-10-02T03:24:22.854773Z", "start_time": "2021-10-02T03:24:21.767376Z" }, "id": "_G5CWvypQMXr", "scrolled": true } }, { "cell_type": "markdown", "source": [ "## Create data" ], "metadata": { "id": "eikJH7uSQMXu" } }, { "cell_type": "code", "execution_count": 2, "source": [ "def my_func(x):\n", " val = tf.exp(-200*(x-0.25)**2) - tf.exp(-200*(x-0.75)**2)\n", " return val\n", "\n", "N = 100\n", "x_train = tf.reshape(tf.linspace(0,1,N),(-1,1)) # Want each row to be a sample (since input_dim=1)\n", "y_train = my_func(x_train)\n", "\n", "print(x_train.shape,x_train.dtype)\n", "print(y_train.shape,y_train.dtype)\n", "\n", "plt.figure()\n", "plt.plot(x_train,y_train,'-o')\n", "plt.show()" ], "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Metal device set to: Apple M1\n", "\n", "systemMemory: 16.00 GB\n", "maxCacheSize: 5.33 GB\n", "\n", "(100, 1) \n", "(100, 1) \n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "2021-10-01 20:41:32.590745: I tensorflow/core/common_runtime/pluggable_device/pluggable_device_factory.cc:305] Could not identify NUMA node of platform GPU ID 0, defaulting to 0. Your kernel may not have been built with NUMA support.\n", "2021-10-01 20:41:32.591032: I tensorflow/core/common_runtime/pluggable_device/pluggable_device_factory.cc:271] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 0 MB memory) -> physical PluggableDevice (device: 0, name: METAL, pci bus id: )\n" ] }, { "output_type": "display_data", "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAD4CAYAAADhNOGaAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAkXUlEQVR4nO3deZSU9Z3v8fe3F6RxoVlalAYEsUVxA9PjhpqgIkruDW1OckaTY5zcnEuciXOzTMhgcm4mM04iE262STJxiHFi5t5EM4lpSSRBgxqN4NKmUUBtWdTQ3SibgEqzdPf3/lFVWBRV3VVdTy1PPZ/XOX26nq3q99j4fOu3fX/m7oiISHRVlboAIiJSWgoEIiIRp0AgIhJxCgQiIhGnQCAiEnE1pS7AUIwdO9YnT55c6mKIiITKs88+u8PdG1L3hzIQTJ48mba2tlIXQ0QkVMzstXT71TQkIhJxCgQiIhGnQCAiEnEKBCIiEadAICIScYEEAjO7y8y2mdm6DMfNzP7VzDaa2fNmdn7SsWvMrCN+bFEQ5ZFgtLZ3MWvxw0xZ9ACzFj9Ma3tXqYskIgUQ1PDRHwPfA36S4fi1QFP850LgB8CFZlYNfB+YA3QCz5jZMnd/IaBySY5a27tYsqKDrt09GJDITdu1u4db71sLQMvMxpKVT0SCF0iNwN0fA3YNcMp84Cce8yRQb2YnAxcAG919s7sfBO6Jnysl0Nrexa33raVrdw/wbhBI6DnUx5IVHcUvmIgUVLH6CBqBLUnbnfF9mfYfxcwWmFmbmbVt3769YAWNsiUrOug51DfgOV27e9RMJFJhihUILM0+H2D/0Tvdl7p7s7s3NzQcNUNaAtAdrwkMJtFMpGAgUhmKFQg6gYlJ2xOA7gH2SwmMrx+e9blqJhKpHMUKBMuAj8VHD10E7HH3rcAzQJOZTTGzYcD18XOliBKjg7p27z/qWLoqW0K2NQgRKW9BDR/9GbAamGZmnWb2CTO72cxujp+yHNgMbAR+CPwNgLv3ArcAK4AXgZ+7+/ogyiTZSe0ghncf/o31dXzrL2fQWF+X9trxGfaLSLgEMnzU3W8Y5LgDn8pwbDmxQCElkK6D2IkFgScWXXF43633rT3ivOG1VSycO61YxRSRAgplGmoJTqbmneT9iXkDS1Z00L27Bweunj5O8wlEKoQCQcSNr687olkoeX+ylpmNhx/8c775KL95fiu/fu4BxtfXsXDuNAUFkRBTrqGI+/zVpx/VIVxXW52x2ae1vYvXdvbQ77EmJA0lFQk/BYKIm3ricThQX1eLEesbuP2D52T8hr9kRQcH+/qP2KehpCLhpqahiPvFs50cU1PFH74wm5F1tYOen02fgoiEi2oEEdXa3sUlt6/kJ6tfo8qMR17altV1mYaMaiipSHgpEERQYu5A957YBLKeQ31Zt/MvnDuNutrqI/YN1KcgIuVPgSCC0s0dyLadv2VmI7d/8JwjJpl95qomjRoSCTH1EURQvu38iaGkr+/Zz0W3r+RQSuexiISLagQRFFQ7/0kjhzNzUj2/Xfd6EMUSkRJRIIighXOnUW1Hzh4Yajv/xFF1rO/eq+UsRUJMgSCCPnDeeIbXVlFXW53V3IFMWtu7WLH+DUCTy0TCTH0EEfRc527eOdjHd66fwfwZQ+/kXbKigwO96SeXqfNYJDxUI4igRzq2U2Xw3tPzW+lNk8tEKoMCQQQ98tI2zp80ivoRw/J6H00uE6kMCgQRs23vftZ27WH2GSfm/V6aXCZSGYJaoewaM+sws41mtijN8YVmtib+s87M+sxsdPzYq2a2Nn6sLYjySHqt7V1c/a3HALh71at5d+qmTi6rMvjadWerf0AkZPIOBGZWDXwfuBaYDtxgZtOTz3H3Je4+w91nALcCf3D3XUmnzI4fb863PJJeIq3E7p5DAGx760AgI3xaZjbyxKIrWPzBc+h3OLtxZBDFFZEiCqJGcAGw0d03u/tB4B5g/gDn3wD8LIDPlRzkk1YiG5c2jQXgsQ07Ank/ESmeIAJBI7Alabszvu8oZjYCuAb4ZdJuBx40s2fNbEGmDzGzBWbWZmZt27dvD6DY0VLoET4TRo3g1LHH8vgG/W1EwiaIQJC6wBXEHu7p/HfgiZRmoVnufj6xpqVPmdnl6S5096Xu3uzuzQ0N+Q17jKJijPC5rGksT23exYHevsFPFpGyEUQg6AQmJm1PALoznHs9Kc1C7t4d/70N+BWxpiYJ2MK506hKCdlBj/C5rKmBnkN9PPvam4G9p4gUXhCB4BmgycymmNkwYg/7ZaknmdlI4L3A/Un7jjWz4xOvgauBdQGUSVLMPeskDDjumJq80koMZMfbBwD4yA+fUt4hkRDJO8WEu/ea2S3ACqAauMvd15vZzfHjd8RPvQ540N3fSbp8HPAriyVAqwF+6u6/y7dMcrS213bR5/Ddj8xk9rT85xCkam3v4h9//cLh7UTeIUDDSUXKXCC5htx9ObA8Zd8dKds/Bn6csm8zcF4QZZCBrdq0k5oq44LJowvy/gONSlIgEClvmlkcEas27mDGxHqOPaYweQaVd0gkvBQIImBPzyHWdu3hktPGFuwzlHdIJLwUCCLgqc076Xe4ZOqYgn2G8g6JhJcCQYVrbe/isz9fA8Dn7l1TsJE86Ra1v3XeGeofEAkBBYIKlsgv9M6BWCdu9579BV1BLJF3qPVTswAYlWeaaxEpDgWCClbo/EKZnD3+BI4/pobVm3cW9HNEJBgKBBWsVCN5aqqruGDKaFZvUiAQCQMFggpWypE8F08dwys73uH1PfsL/lkikh8Fggq2cO60ozICFmskz0WnxkYord6stNQi5U6BoIJdeOpoHBhZV7j8QplseP0tzOCz9z6nvEMiZa4w00ylLCTa6H/6Py/irPHFWzmstb2LL7auw+PJyJV3SKS8qUZQwVZt2kn9iFrOPOmEon5uqUYricjQKBBUsNWbdnLRlDFUpS5EUGDKOyQSLgoEFWrLrn107e7h4gKmlchEeYdEwkWBoEKt2hQbrVOKQJA+71CV8g6JlKlAAoGZXWNmHWa20cwWpTn+PjPbY2Zr4j9fzvZayV1rexdfWRZbJObj//F00UfspMs79L+ubFJHsUiZynvUkJlVA98H5hBbv/gZM1vm7i+knPq4u/+3IV4rWYrlF3qenkP9AHTt3l+SETstMxtpmdnIll37uOzrjzA8pYYgIuUjiBrBBcBGd9/s7geBe4D5RbhW0oiN2Ok/Yl8pR+xMHD2CiaPrWKV0EyJlK4hA0AhsSdrujO9LdbGZPWdmvzWzs3K8VrJUjiN2Zk0dy5Obd9Lb1z/4ySJSdEEEgnRjEz1l+0/AKe5+HvBdoDWHa2Mnmi0wszYza9u+fftQy1rxynHEziWnjeWt/b2s695bsjKISGZBBIJOYGLS9gSgO/kEd9/r7m/HXy8Has1sbDbXJr3HUndvdvfmhoaGAIpdmT43p+mofaVeKWz3voMAtHz/CaWbEClDQQSCZ4AmM5tiZsOA64FlySeY2UlmZvHXF8Q/d2c210puJo05FoDRI2qLnl8ondb2Lm5f/tLh7US6CQUDkfKR96ghd+81s1uAFUA1cJe7rzezm+PH7wA+BPy1mfUCPcD17u5A2mvzLVOUPf7ydqoMHvn8bEaOqC11cQZMN6HhpCLlIZCkc/HmnuUp++5Iev094HvZXitD9/jGHZw7ob4sggCUZ+e1iBxJM4sryJ6eQzy3ZTeXN40tdVEOK8fOaxE5kgJBBVm9aQf9Dpc2lU9nevp0E6XtvBaRIykQVIjW9i4+9/PnAPjMve1l0xmbLt3Ewrmnq39ApIxoYZoKEEsrsfZwp2x3idJKZJJIN7Fx21tc9c3HGFajdBMi5UQ1ggoQloVgpjYcR2N9HY92aEKgSDlRIKgAYRmZY2bMPqOBVZt2cKC3b/ALRKQoFAgqQJhG5rzv9BPZd7CPtlffLHVRRCROgaACfOqKqUftK9eROZecNoZqg0/+ZxtTFj2glBMiZUCBoAIcOyzW5z/2uGPKIq3EQB5c/wYOvH2gD0cpJ0TKgUYNVYCHXniDsccN4+kvXln0hepztWRFB/0p+WWVckKktFQjCLmDvf38oWM7V54xruyDAISnY1skShQIQu6pV3by1oFe5kwfV+qiZCVMHdsiUaFAEFKt7V3MWvwwN/7oaQB2vXOwxCXKjlJOiJQf9RGEUOpMYoB/WLaeYTVVZd/Onijf15a/yLa3DjCyroZ//MDZZV9ukUqmGkEIhWUmcSYtMxt5+ktXcebJJ3DaiccrCIiUmAJBCFVKh+v7zzmJZ197M3TlFqk0gQQCM7vGzDrMbKOZLUpz/KNm9nz8Z5WZnZd07FUzW2tma8ysLYjyVLpK6XCdd87JAFz7ncc0uUykhPIOBGZWDXwfuBaYDtxgZtNTTnsFeK+7nwvcBixNOT7b3We4e3O+5YmChXOnMaz6yD9dGDtcn+/cgwF7eno1uUykhIKoEVwAbHT3ze5+ELgHmJ98gruvcvdEcpkngQkBfG5ktcxsZPr44zGj7GcSD2TJig5S5paFqq9DpFIEMWqoEdiStN0JXDjA+Z8Afpu07cCDZubAv7t7am0BADNbACwAmDRpUl4FDrs9PYd4Yetb3HjRKfzT/LNLXZwhq5S+DpGwCyIQpJvOmvpFL3ai2WxigeDSpN2z3L3bzE4EHjKzl9z9saPeMBYglgI0Nzenff9K19rexZIVHXTFH5RjjxtW4hLlZ3x93eF7Sd0vIsUTRNNQJzAxaXsC0J16kpmdC9wJzHf3nYn97t4d/70N+BWxpiZJkZg7kPzg/MGjm0Ldnq7JZSLlIYhA8AzQZGZTzGwYcD2wLPkEM5sE3Afc6O4vJ+0/1syOT7wGrgbWBVCmipN+7kB/qNvTE+sZj68fDsAxNVWh7OsQCbu8m4bcvdfMbgFWANXAXe6+3sxujh+/A/gyMAb4NzMD6I2PEBoH/Cq+rwb4qbv/Lt8yVaJKbU9PrGf8nd9v4Fu/f5kZE+tLXSSRyDH38DW3Nzc3e1tbtKYczFr8cNr29Mb6Op5YdEUJShSsN/bu56KvreTYY6p550Af4+vrWDh3mmoHIgEys2fTDdPXzOKQWDh3GjUpaaYrqT199aadVJkWrBEpBQWCkLj6rHEMqzaG11SFeu5AJktWdNCXYcEaESksZR8tc6lDRj99ZROfnXN6iUsVvErtAxEJA9UIyli6IaNLH9tckc0llZI/SSSMFAjKWNjTTeci3ZwCiPUVKBmdSGGpaaiMRam5JNHXkdwMlpDoOE4+T0SCoxpBGYtac0nLzEaeWHQFjWnur1JrQiLlQDWCMpTaQZyskoaMZhKlmpBIOVAgKDPp1iNOaIzIJCsloxMpLjUNlZl0HcTw7gziSg8CoI5jkWJTjaBMDNQcBNFqFlHHsUhxqUZQBtLNF0gVtWaRwTqOP3PvGtUORAKiGkEJDVYLSIhCB3EmA9WEVDsQCYZqBCWSTS0AKi+nUK4GqwmpdiCSP9UIiizbWgBUTorpfCycOy3jKKpkqh2IDJ0CQYEkHvjdu3sYWVeLGby57xBGhgWdU0S5OSjZQB3HqRK1g68sW48Z7N53SOsaiGQhkIVpzOwa4DvEVii7090Xpxy3+PF5wD7gr9z9T9lcm85QFqZJ92Deve9QVq/H19cx+4wGHnlpe1bX5/LATycq8wVyNdAci4Ek/hb1BfhbF/u1Alt5yuf5MpRn0FD/HWRamCbvQGBm1cDLwBxiC9k/A9zg7i8knTMP+FtigeBC4DvufmE216aTayAY6gOk2OpqqyPdH5CNXJrWKlUisDUG9HCQ7OVb0w/SUJ4XhQwEFwNfcfe58e1bAdz99qRz/h141N1/Ft/uAN4HTB7s2nRyDQSZlnksJ6oF5CYswb3YkoOE/j0FI/nLRyke+APJtR8xUyAIoo+gEdiStN1J7Fv/YOc0ZnktAGa2AFgAMGnSpJwKWM6TsVQLGJpc+g6iJPGQ6trdw2fvXcNn7l2joJCH1C8c5RQEILhnWxCBwNLsS/3vlemcbK6N7XRfCiyFWI0glwJmyl1TKvrWFoyWmY20zGxU7SCD5KCgEVW5CUsTZFATTYMIBJ3AxKTtCUB3lucMy+LavGU7BDFo6Top1Y4bvOTaQTm03ZajxIiqJSs69O9vEGH5YhHkyMIgAsEzQJOZTQG6gOuBj6Scswy4xczuIdb0s8fdt5rZ9iyuzVumB0WhRg3pgV98idpBqlxHc5TzqKEgAptqB5nlWwvIZXRaqUYNZSx7QMNH5wHfJjYE9C53/6qZ3Qzg7nfEh49+D7iG2PDRj7t7W6ZrB/u8oQwfFakEyYEt+eGQa0emJiseKZdaQJhr+gUbNVQKCgQiR8t1dIv6qN6V7cjCsP83K+SoIREpA8nNY9k0c0S9mSi5djVY0Kz00X1KOidSgRJpvL/9lzPSLvKTENW1oJOTPmZTc6rkIACqEYhUtGzmW5TzPJtCybQSYLJKrwUkU41ApMINtMgPxPoSopbGe6DgZ0SjFpBMNQKRiBhoPk3U+gsyTTKN6mgq1QhEIqJlZiO3f/CcjDWDKPQXtLZ3ZRwhFOXU7woEIhGSaCZKl9sFKru/YKBVAaPWFJRKTUMiEZSpaSSo3DXlKFMHcVSbg5KpRiASQQvnTks7rLRrd0/Fdhxnqu1Uci0oWwoEIhE0UH9BouO40oJBptpOJdeCsqVAIBJRAw0rrcSO44Vzp1FTdWTvSJQ7iJMpEIhEXFSaTK495yTqaqs4pqYqknMFBqLOYpGIq/SO49S8S3/93qn8/bVnlLhU5UU1ApGIS9dxXClNJumGjP541SsV1/+RLwUCkYhL13H8+atPr4gmk3RDRnsO9Vdc/0e+1DQkIodTWL++Zz+z/uVhtr11oNRFCkRU+j/ylVeNwMxGm9lDZrYh/ntUmnMmmtkjZvaima03s08nHfuKmXWZ2Zr4z7x8yiMi+Tlp5HDOGn88Sx/fzJRFD4R+ToGGjGYn36ahRcBKd28CVsa3U/UCf+fuZwIXAZ8ys+lJx7/l7jPiP8vzLI+I5KG1vYuXtr6NeywradjnFGjIaHbyDQTzgbvjr+8GWlJPcPet7v6n+Ou3gBeB8Dc+ilSgJSs6ONjXf8S+MM8pmD9jPGOPG0ZttWnI6ADy7SMY5+5bIfbAN7MTBzrZzCYDM4GnknbfYmYfA9qI1RzezHDtAmABwKRJk/IstoikU2lt6uu79/L63gPc1nI2N150SqmLU7YGDQRm9nvgpDSHvpTLB5nZccAvgc+4+9747h8AtxGrhd4GfAP4H+mud/elwFKILV6fy2eLSHYqZU5B6tyB6kzpVgXIIhC4+1WZjpnZG2Z2crw2cDKwLcN5tcSCwP9z9/uS3vuNpHN+CPwml8KLSLDSLV4Ttjb1xNyB5Hu47TcvMmJYjZqEMsi3j2AZcFP89U3A/aknmJkBPwJedPdvphw7OWnzOmBdnuURkTyknVMwN1xzCtLPHQhvP0cx5BsIFgNzzGwDMCe+jZmNN7PECKBZwI3AFWmGiX7dzNaa2fPAbOCzeZZHRPKUSEb32MLZAPT2haslttL6OYohr85id98JXJlmfzcwL/76j5B+QSR3vzGfzxeRwpk0ZgTnThjJ8rVb+eR7p5a6OFmrlH6OYlKKCRHJ6JTRI3iuc0+oJpctnDuNYTVHPtrC1s9RbAoEIpJWa3sXD74QG88RpsllLTMbufjU0QCaO5Al5RoSkbSWrOjgQG/6yWXl/FB1d17ZsY/Z0xr4j49fUOrihIJqBCKSVlg7XTdse5s/79rHVdPHlboooaFAICJphTVh20Px5qyrzlQgyJYCgYikFbYFa1rbu5i1+GGWrOigttpYvWlnqYsUGuojEJG0Ev0AiVQNBny15ayy7B9InU18qM+59b61AGVZ3nKjGoGIZJSYXPaDj56PAxNGH1vqIqWl2cT5USAQkUHNahpLTZXxaEfadGIlF9aO7XKhQCAigzpheC3nnzKKRzu2l7ooaYW1Y7tcKBCISFZmTzuRF7bu5Y29+0tdlKMsnDuNYzSbeMgUCEQkK/0eSz534ddWll26iZaZjbzv9AZAs4mHQqOGRGRQre1dfO/hDYe3E+kmoHxG5ex45yDnTRjJ/bdcWuqihI5qBCIyqNionPJdy3jv/kOs2bKby5oaSl2UUFIgEJFBlfuonNWbdtLX71zaNLbURQmlvAKBmY02s4fMbEP896gM570aX4BmjZm15Xq9iJRWuY/K+eOGHYwYVs35k/QIGYp8awSLgJXu3gSsjG9nMtvdZ7h78xCvF5ESKdd0E4m0Ev/55Gv09TvL124taXnCKt9AMB+4O/76bqClyNeLSBGkW8v4n+aXNt1EIq1EYjWyA739oVgvoRzlGwjGuftWgPjvEzOc58CDZvasmS0YwvUiUmKJdBN3/VWsUt9Y4mYhpZUIzqDDR83s98BJaQ59KYfPmeXu3WZ2IvCQmb3k7o/lcD3xALIAYNKkSblcKiIB+ovJo6muMp7YtINLTitd52y5d2CHyaA1Ane/yt3PTvNzP/CGmZ0MEP+dNhFJfDF73H0b8CsgsWxQVtfHr13q7s3u3tzQoCFiIqVy/PBazpswkic2ljbNc7l3YIdJvk1Dy4Cb4q9vAu5PPcHMjjWz4xOvgauBddleLyLlZ9ZpY3m+czd79x8qWRmUViI4+QaCxcAcM9sAzIlvY2bjzWx5/JxxwB/N7DngaeABd//dQNeLSHnrd6ff4dyvPFiydBMtMxt5/zmxVmullchPXikm3H0ncGWa/d3AvPjrzcB5uVwvIuWrtb2LH/3xlcPbpUw38faBPiaOruPxL1xR1M+tNJpZLCI5WbKig/1lkG6ir9956pVdXHKqZhPnS4FARHJSLqN1Xty6lz09h7h46piifm4lUiAQkZyUy2idxOL0CgT5UyAQkZyUS7qJVZt2cGrDsYw7YXhRP7cSKRCISE5S003UVFnRR+v09vXzzKtvcvGpqg0EQYFARHKWSDfxpXln0tvvRW2eaW3v4uLbH+btA70sX7tVuYUCoEAgIkOWCACJ9vpCSySa2/72AQDe3HdIieYCoEAgIkN25skncMLwGlZt2lGUz1OiucJQIBCRIauuMi48dQyrNxenRlAuQ1crjQKBiOTlkqlj2LKrh8439xX8s8pl6GqlUSAQkbwUs59g4dxp1FTZEfuUaC5/CgQikpcXu/ZSZbDwF88XPAFdy8xGJo6qo7balGguQHklnRORaGtt7+KLrevo99h2oRPQvXOgly1v9rDg8lP5wjVnBP7+UaUagYgMWbFH8Tz9yi56+51LpirRXJAUCERkyIo9imfVph0Mq66iefKogrx/VCkQiMiQFXsUzxMbd3L+KfUMT8l1JPnJKxCY2Wgze8jMNsR/HxWmzWyama1J+tlrZp+JH/uKmXUlHZuXT3lEpLjSJaAbXlsV+CieWFqJlbywdS/ru/dqJnHA8q0RLAJWunsTsDK+fQR373D3Ge4+A3gPsI/YAvYJ30ocd/flqdeLSPlKTUAHsODyUwPtKE6kldi6Zz8Ab+3vVVqJgOUbCOYDd8df3w20DHL+lcAmd38tz88VkTKRSEC35stzMIPYwM7gKK1E4eUbCMa5+1aA+O8TBzn/euBnKftuMbPnzeyudE1LCWa2wMzazKxt+/bt+ZVaRAJXP2IY506o5/ENwf7/qbQShTdoIDCz35vZujQ/83P5IDMbBnwA+K+k3T8ApgIzgK3ANzJd7+5L3b3Z3ZsbGhpy+WgRKZLLThvLc5172NNzKLD3VFqJwhs0ELj7Ve5+dpqf+4E3zOxkgPjvbQO81bXAn9z9jaT3fsPd+9y9H/ghcEF+tyMipXRZ01j6+j3QdBML506jtlppJQop36ahZcBN8dc3AfcPcO4NpDQLJYJI3HXAujzLIyIltGXXPgy4+f8+G1i6iZaZjUweM4KaKqWVKJR8U0wsBn5uZp8A/gx8GMDMxgN3uvu8+PYIYA7wyZTrv25mMwAHXk1zXERCorW9i/99/3ri2SYCSzfx9oFeXt25j09cOoVb550ZQEklVV6BwN13EhsJlLq/G5iXtL0POGotO3e/MZ/PF5HyMdDonnwCwR837OBQnzP7jMHGoshQaWaxiASiUKN7HnlpG8cPr+E9pyitRKEoEIhIIAoxusfdeaRjG5c3NVBbrcdVoei/rIgEIm26iZqhp5tobe/igq+tZNtbB3hi0w7NJC4grUcgIoFI9AMsWdFB9+4eHJh37slD6h9IpJVI9Dns3neooOscRJ1qBCISmES6iVcWv5/TTjxuyP0DSitRXAoEIlIQ1559Ek+/soudbx/I+VqllSguBQIRKYhrzj6Jfocrv/EHpix6IKcJZkorUVwKBCJSEC+//hYG7O45hPPuBLNsgsHfzTn9qH1KK1E4CgQiUhD/58GXD88yTsi2nb/hhGMAGDWiVmklikCjhkSkIPJp5/+vtk5G1tWy+tYrtSxlEahGICIFMZR2/sSSlMue66a3r5/frXu9UMWTJAoEIlIQ6SaYDdTOn7ok5TsH+7QkZZEoEIhIQSTWMx5fPxyAmirja9ednbGdX3MHSkeBQEQKpmVmI6sWXck3Pnwevf3OPz/wYsahpJo7UDoKBCJSBI4BO985mHEo6Ukjh6e9UnMHCk+jhkSk4L750IYBh5IuWdFxuG8gmeYOFEdeNQIz+7CZrTezfjNrHuC8a8ysw8w2mtmipP2jzewhM9sQ/62E4yIVKFPzTtfuHj577xq6ko4nVifW3IHiybdpaB3wQeCxTCeYWTXwfWKL108HbjCz6fHDi4CV7t4ErIxvi0iFGah5J7Wm4MSCwBOLrlAQKJK8AoG7v+jug3XpXwBsdPfN7n4QuAeYHz82H7g7/vpuoCWf8ohIeUo3lHQg6iAurmJ0FjcCW5K2O+P7AMa5+1aA+O+Mi5Ka2QIzazOztu3btxessCISvMRQ0sYsO37VQVxcgwYCM/u9ma1L8zN/sGsTb5FmX2ptcFDuvtTdm929uaGhIdfLRaTEEmsVDBYM1EFcfIOOGnL3q/L8jE5gYtL2BKA7/voNMzvZ3bea2cnAtjw/S0TK3MK5045YfQxi3xYTfQML505T30CRFWP46DNAk5lNAbqA64GPxI8tA24CFsd/31+E8ohICaUuaTleD/+SM/ecW2nevdjsOuC7QAOwG1jj7nPNbDxwp7vPi583D/g2UA3c5e5fje8fA/wcmAT8Gfiwu+8a7HObm5u9ra1tyOUWEYkiM3vW3Y8a6p9XICgVBQIRkdxlCgRKMSEiEnEKBCIiEadAICIScQoEIiIRF8rOYjPbDrw2xMvHAjsCLE4Y6J6jQfccDfnc8ynuftSM3FAGgnyYWVu6XvNKpnuOBt1zNBTintU0JCIScQoEIiIRF8VAsLTUBSgB3XM06J6jIfB7jlwfgYiIHCmKNQIREUmiQCAiEnEVGwjM7Boz6zCzjWZ21FrIFvOv8ePPm9n5pShnkLK454/G7/V5M1tlZueVopxBGuyek877CzPrM7MPFbN8Qcvmfs3sfWa2xszWm9kfil3GoGXx73qkmf3azJ6L3/PHS1HOIJnZXWa2zczWZTge7PPL3Svuh1i6603AqcAw4Dlgeso584DfElsT4yLgqVKXuwj3fAkwKv762ijcc9J5DwPLgQ+VutwF/hvXAy8Ak+LbJ5a63EW45y8C/xJ/3QDsAoaVuux53vflwPnAugzHA31+VWqN4AJgo7tvdveDwD1A6tKa84GfeMyTQH18lbSwGvSe3X2Vu78Z33yS2GpxYZbN3xngb4FfEv4V8LK5348A97n7nwHcPQr37MDxZmbAccQCQW9xixksd3+M2H1kEujzq1IDQSOwJWm7M74v13PCJNf7+QSxbxRhNug9m1kjcB1wRxHLVSjZ/I1PB0aZ2aNm9qyZfaxopSuMbO75e8CZxJbAXQt82t37i1O8kgn0+VWMpSpLwdLsSx0nm805YZL1/ZjZbGKB4NKClqjwsrnnbwN/7+59sS+MoZbN/dYA7wGuBOqA1Wb2pLu/XOjCFUg29zwXWANcAUwFHjKzx919b4HLVkqBPr8qNRB0AhOTticQ+7aQ6zlhktX9mNm5wJ3Ate6+s0hlK5Rs7rkZuCceBMYC88ys191bi1LCYGX773qHu78DvGNmjwHnAWENBNnc88eBxR5rPN9oZq8AZwBPF6eIJRHo86tSm4aeAZrMbIqZDQOuB5alnLMM+Fi89/0iYI+7by12QQM06D2b2STgPuDGEH9DTDboPbv7FHef7O6TgV8AfxPSIADZ/bu+H7jMzGrMbARwIfBikcsZpGzu+c/EakCY2ThgGrC5qKUsvkCfXxVZI3D3XjO7BVhBbNTBXe6+3sxujh+/g9gIknnARmAfsW8VoZXlPX8ZGAP8W/wbcq+HOHNjlvdcMbK5X3d/0cx+BzwP9AN3unvaIYhhkOXf+Dbgx2a2lliTyd+7e6hTU5vZz4D3AWPNrBP4B6AWCvP8UooJEZGIq9SmIRERyZICgYhIxCkQiIhEnAKBiEjEKRCIiEScAoGISMQpEIiIRNz/B9urWVs33Q78AAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" } } ], "metadata": { "ExecuteTime": { "end_time": "2021-10-02T03:24:23.157087Z", "start_time": "2021-10-02T03:24:22.999584Z" }, "id": "BeW6_bSVQMXx", "scrolled": false } }, { "cell_type": "markdown", "source": [ "## Define basic network architecture" ], "metadata": { "id": "Zt8VCsvnQMXz" } }, { "cell_type": "code", "execution_count": 3, "source": [ "def MLP(Input_Dim=1,Output_Dim=1,Width=15,Depth=8):\n", "\n", " Reg_Func = keras.regularizers.l2\n", " Reg_Param = 1e-5\n", " Act_Func = tf.math.tanh\n", "\n", "\n", " assert Depth > 1, 'Depth of generator must be greater than 1'\n", " \n", " model = tf.keras.Sequential()\n", " \n", " model.add(keras.layers.Dense(Width, input_shape=(Input_Dim,), activation=Act_Func,\n", " kernel_initializer='RandomNormal', bias_initializer='RandomNormal',\n", " kernel_regularizer=Reg_Func(Reg_Param)))\n", "\n", " # Adding remaining hidden layers\n", " if(Depth > 2):\n", " for l in range(Depth - 2):\n", " #model.add(keras.layers.BatchNormalization())\n", " model.add(keras.layers.Dense(Width, activation=Act_Func,\n", " kernel_initializer='RandomNormal', bias_initializer='RandomNormal',\n", " kernel_regularizer=Reg_Func(Reg_Param)))\n", " \n", " # Adding output layer\n", " model.add(keras.layers.Dense(Output_Dim, activation=None,\n", " kernel_initializer='RandomNormal', bias_initializer='RandomNormal',\n", " kernel_regularizer=Reg_Func(Reg_Param)))\n", "\n", " return model" ], "outputs": [], "metadata": { "ExecuteTime": { "end_time": "2021-10-02T03:24:29.117196Z", "start_time": "2021-10-02T03:24:29.038337Z" }, "id": "fe7ZzCh4QMXz", "scrolled": true } }, { "cell_type": "markdown", "source": [ "## Define loss function" ], "metadata": { "id": "_LERV1EKQMX0" } }, { "cell_type": "code", "execution_count": 4, "source": [ "mse = keras.losses.MeanSquaredError() # Inbuilt loss\n", "\n", "# Define custom loss function\n", "def my_mse(real,gen):\n", " \n", " real = tf.cast(real, gen.dtype) # make sure both tensors have the same type\n", " loss = tf.reduce_mean(tf.math.squared_difference(real, gen))\n", "\n", " return loss\n" ], "outputs": [], "metadata": { "ExecuteTime": { "end_time": "2021-10-02T03:24:31.714329Z", "start_time": "2021-10-02T03:24:31.706765Z" }, "id": "01Tl5E_uQMX0", "scrolled": true } }, { "cell_type": "code", "execution_count": 5, "source": [ "y1 = tf.constant([1.0,2.0,3.0])\n", "y2 = tf.constant([3.0,-4.0,-1.0])\n", "\n", "print(mse(y1,y2))\n", "print(my_mse(y1,y2))" ], "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "tf.Tensor(18.666668, shape=(), dtype=float32)\n", "tf.Tensor(18.666668, shape=(), dtype=float32)\n" ] } ], "metadata": { "ExecuteTime": { "end_time": "2021-10-02T03:24:32.624207Z", "start_time": "2021-10-02T03:24:32.518779Z" }, "id": "f_Gc_-7Xa7S0" } }, { "cell_type": "markdown", "source": [ "## Have a look at details here\n", "### https://www.tensorflow.org/guide/keras/writing_a_training_loop_from_scratch" ], "metadata": { "id": "3H2hrl6hQMX1" } }, { "cell_type": "code", "execution_count": 6, "source": [ "tf.config.list_physical_devices(\n", " device_type=None\n", ")" ], "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "[PhysicalDevice(name='/physical_device:CPU:0', device_type='CPU'),\n", " PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]" ] }, "metadata": {}, "execution_count": 6 } ], "metadata": { "ExecuteTime": { "end_time": "2021-10-02T03:24:36.834392Z", "start_time": "2021-10-02T03:24:36.826185Z" } } }, { "cell_type": "code", "execution_count": 7, "source": [ "tf.keras.backend.clear_session()\n", "model = MLP(1,1,15,8)\n", "optimizer = keras.optimizers.Adam(learning_rate=1e-3) \n", "max_epoch = 3000\n", "with tf.device(\"/device:CPU:0\"):\n", " for epoch in range(1,max_epoch+1):\n", " with tf.GradientTape() as tape:\n", " gen_out = model(x_train)\n", " loss_val = mse(y_train, gen_out) # Using in-built mse\n", " # Adding regularization losses\n", " loss_val += sum(model.losses)\n", "\n", " grads = tape.gradient(loss_val, model.trainable_variables)\n", "\n", " optimizer.apply_gradients(zip(grads, model.trainable_variables)) # zip used to create an iterator over the tuples\n", "\n", " if epoch % 100 == 0 or epoch==max_epoch:\n", " print(f\"Epoch: {epoch}, loss: {loss_val:.2e}\") " ], "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Epoch: 100, loss: 1.72e-01\n", "Epoch: 200, loss: 1.04e-01\n", "Epoch: 300, loss: 1.03e-01\n", "Epoch: 400, loss: 9.82e-02\n", "Epoch: 500, loss: 6.35e-02\n", "Epoch: 600, loss: 6.05e-02\n", "Epoch: 700, loss: 5.98e-02\n", "Epoch: 800, loss: 5.94e-02\n", "Epoch: 900, loss: 5.92e-02\n", "Epoch: 1000, loss: 5.90e-02\n", "Epoch: 1100, loss: 5.89e-02\n", "Epoch: 1200, loss: 5.88e-02\n", "Epoch: 1300, loss: 5.86e-02\n", "Epoch: 1400, loss: 5.85e-02\n", "Epoch: 1500, loss: 5.82e-02\n", "Epoch: 1600, loss: 5.80e-02\n", "Epoch: 1700, loss: 5.75e-02\n", "Epoch: 1800, loss: 5.61e-02\n", "Epoch: 1900, loss: 1.53e-02\n", "Epoch: 2000, loss: 1.27e-03\n", "Epoch: 2100, loss: 1.13e-03\n", "Epoch: 2200, loss: 1.08e-03\n", "Epoch: 2300, loss: 1.04e-03\n", "Epoch: 2400, loss: 1.56e-03\n", "Epoch: 2500, loss: 9.69e-04\n", "Epoch: 2600, loss: 9.37e-04\n", "Epoch: 2700, loss: 9.10e-04\n", "Epoch: 2800, loss: 8.80e-04\n", "Epoch: 2900, loss: 8.55e-04\n", "Epoch: 3000, loss: 8.34e-04\n" ] } ], "metadata": { "ExecuteTime": { "end_time": "2021-10-02T03:25:33.979691Z", "start_time": "2021-10-02T03:24:50.029220Z" }, "id": "1cualRc2RNJ6" } }, { "cell_type": "code", "execution_count": 8, "source": [ "plt.figure(figsize=(10,10))\n", "plt.plot(x_train,model.predict(x_train),'-',label='NN',linewidth=4)\n", "plt.plot(x_train,y_train,'--',label='True',linewidth=4)\n", "plt.legend(fontsize=15)\n", "plt.show()" ], "outputs": [ { "output_type": "stream", "name": "stderr", "text": [ "2021-10-01 20:42:39.962368: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:176] None of the MLIR Optimization Passes are enabled (registered 2)\n", "2021-10-01 20:42:39.964168: W tensorflow/core/platform/profile_utils/cpu_utils.cc:128] Failed to get CPU frequency: 0 Hz\n", "2021-10-01 20:42:39.998600: I tensorflow/core/grappler/optimizers/custom_graph_optimizer_registry.cc:112] Plugin optimizer for device_type GPU is enabled.\n" ] }, { "output_type": "display_data", "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmIAAAI/CAYAAADURrXPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABuFUlEQVR4nO3dd3hcV53/8feZGfViWdWyZEuyLfcW23F6Jx0ISQiEDRBqaNll+S2wWVoIy+5SlmV3CZANLbAshA4hCamQRuLEJe5VbqpWl9XLzJzfH5IlXVmyZWs0d8rn9Tx6pO+598584ontr+8991xjrUVEREREws/jdgARERGReKVGTERERMQlasREREREXKJGTERERMQlasREREREXKJGTERERMQlPrcDnI3c3FxbWlrqdgwRERGR09q8eXOTtTZvvG1R2YiVlpayadMmt2OIiIiInJYx5uhE23RpUkRERMQlasREREREXKJGTERERMQlasREREREXKJGTERERMQlasREREREXBKVy1eIiIjI2Wlvb6ehoYGBgQG3o0S9hIQE8vPzyczMPOvXUCMmIiISJ9rb26mvr6eoqIiUlBSMMW5HilrWWnp6eqipqQE462ZMlyZFRETiRENDA0VFRaSmpqoJmyJjDKmpqRQVFdHQ0HDWr6NGTEREJE4MDAyQkpLidoyYkpKSMqXLvGrERERE4ojOhIXWVH891YiJiIiIuESNmIiIiESVL37xixhjuPbaa0/a9ta3vpXLL78cgOeeew5jDLm5uXR2djr2u//++yPi7KAaMREREYlKTz31FBs3bjztfs3NzXz3u98NQ6Izp0ZMREREok52djYrV67kX/7lX0677+WXX843vvENent7w5DszKgRExERkahjjOEzn/kMjzzyCDt27Djlvp/+9KdpbW3l+9//fpjSTZ4WdBUREYlTpfc85nYEAI585cazOu62227j3nvv5V/+5V94+OGHJ9xvzpw5vPvd7+ZrX/saH/rQh0hISDjbqCGnM2IiIiISlTweD/fccw+/+tWv2L9//yn3veeee6itreUnP/lJmNJNjhoxERERiVrvfOc7mTt3Lv/2b/92yv3mz5/P7bffzle+8hUCgUCY0p1eSBoxY8wPjTENxpidE2w3xpj/NsZUGGO2G2PWjNp2nTFm39C2e0KRR0REROKDz+fj05/+ND/9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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" } } ], "metadata": { "ExecuteTime": { "end_time": "2021-10-02T03:25:51.800408Z", "start_time": "2021-10-02T03:25:50.365398Z" }, "id": "y5tyN2oPQMX3", "scrolled": false } }, { "cell_type": "code", "execution_count": 11, "source": [ "tf.keras.backend.clear_session()\n", "model = MLP(1,1,15,8)\n", "optimizer = keras.optimizers.Adam(learning_rate=1e-3) \n", "max_epoch = 3000\n", "\n", "for epoch in range(1,max_epoch+1):\n", " \n", " with tf.GradientTape() as tape:\n", " \n", " gen_out = model(x_train)\n", " loss_val = my_mse(y_train, gen_out) # Using custom mse\n", "\n", " # Adding regularization losses\n", " loss_val += sum(model.losses)\n", " \n", " grads = tape.gradient(loss_val, model.trainable_variables)\n", " \n", " optimizer.apply_gradients(zip(grads, model.trainable_variables)) # zip used to create an iterator over the tuples\n", "\n", " if epoch % 100 == 0 or epoch==max_epoch:\n", " print(f\"Epoch: {epoch}, loss: {loss_val:.2e}\") " ], "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Epoch: 100, loss: 1.75e-01\n", "Epoch: 200, loss: 1.03e-01\n", "Epoch: 300, loss: 1.01e-01\n", "Epoch: 400, loss: 6.66e-02\n", "Epoch: 500, loss: 6.12e-02\n", "Epoch: 600, loss: 5.98e-02\n", "Epoch: 700, loss: 5.94e-02\n", "Epoch: 800, loss: 5.92e-02\n", "Epoch: 900, loss: 5.90e-02\n", "Epoch: 1000, loss: 5.89e-02\n", "Epoch: 1100, loss: 5.88e-02\n", "Epoch: 1200, loss: 5.87e-02\n", "Epoch: 1300, loss: 5.87e-02\n", "Epoch: 1400, loss: 5.86e-02\n", "Epoch: 1500, loss: 5.87e-02\n", "Epoch: 1600, loss: 5.84e-02\n", "Epoch: 1700, loss: 5.82e-02\n", "Epoch: 1800, loss: 5.93e-02\n", "Epoch: 1900, loss: 5.79e-02\n", "Epoch: 2000, loss: 5.76e-02\n", "Epoch: 2100, loss: 5.73e-02\n", "Epoch: 2200, loss: 5.67e-02\n", "Epoch: 2300, loss: 5.51e-02\n", "Epoch: 2400, loss: 6.83e-03\n", "Epoch: 2500, loss: 1.33e-03\n", "Epoch: 2600, loss: 1.06e-03\n", "Epoch: 2700, loss: 1.00e-03\n", "Epoch: 2800, loss: 9.54e-04\n", "Epoch: 2900, loss: 9.15e-04\n", "Epoch: 3000, loss: 8.82e-04\n" ] } ], "metadata": { "ExecuteTime": { "end_time": "2021-10-02T02:06:39.441482Z", "start_time": "2021-10-02T02:04:46.414431Z" }, "id": "GRpQP8GuQMX4", "scrolled": true } }, { "cell_type": "code", "execution_count": 12, "source": [ "plt.figure(figsize=(10,10))\n", "plt.plot(x_train,model.predict(x_train),'-',label='NN',linewidth=4)\n", "plt.plot(x_train,y_train,'--',label='True',linewidth=4)\n", "plt.legend(fontsize=15)\n", "plt.show()" ], "outputs": [ { "output_type": "stream", "name": "stderr", "text": [ "2021-10-01 19:06:39.495984: I tensorflow/core/grappler/optimizers/custom_graph_optimizer_registry.cc:112] Plugin optimizer for device_type GPU is enabled.\n" ] }, { "output_type": "display_data", "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" } } ], "metadata": { "ExecuteTime": { "end_time": "2021-10-02T02:06:39.666449Z", "start_time": "2021-10-02T02:06:39.443819Z" }, "id": "B6S8GHU5fs1B" } }, { "cell_type": "code", "execution_count": null, "source": [], "outputs": [], "metadata": { "id": "rI_V9lF3f0Rv" } } ], "metadata": { "colab": { "collapsed_sections": [], "name": "Custom_training_demo.ipynb", "provenance": [] }, "interpreter": { "hash": "859cadc33cf9c93d9354f622d0bfdc75f7d75fc23a9b22a18dfc646072acf83e" }, "kernelspec": { "name": "python3", "display_name": "Python 3.8.12 64-bit ('tf': conda)" }, "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.8.12" }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 1 }