Skip to content

Instantly share code, notes, and snippets.

@alsrgv
Last active October 19, 2019 20:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save alsrgv/02a65164285791ebcfc6c022468f6ca8 to your computer and use it in GitHub Desktop.
Save alsrgv/02a65164285791ebcfc6c022468f6ca8 to your computer and use it in GitHub Desktop.
Tangent DL
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Problem statement"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"```\n",
" (x0, y0)\n",
"---------------->-----------*\n",
" alpha /\n",
" /\n",
" / \n",
" /\n",
" /\n",
" /\n",
" /\n",
" /\n",
"~~~~~~~~~~~~~~~~~~~*~~~~~~~~~~~~~~~~~~~~~~~~\n",
"(0, 0) (xt, 0)\n",
" \n",
"xt = x0 - y0 * tan(pi/2 - alpha), alpha = [0, pi)\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Generate input data"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"def xt(x0, y0, alpha0, alpha):\n",
" return x0 - y0 * np.tan(alpha0 - alpha)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"N = 1000\n",
"x0 = 10.0\n",
"y0 = 10.0\n",
"alpha0 = np.pi/2\n",
"alphas = (np.random.rand(N) * 0.8 + 0.1) * np.pi\n",
"xts = xt(x0, y0, alpha0, alphas)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5,1,'Function plot')"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(alphas, xts, 'ro')\n",
"plt.title('Function plot')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Build a dense model"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Using TensorFlow backend.\n"
]
}
],
"source": [
"import keras\n",
"from keras.models import Sequential\n",
"from keras.layers import Dense, Activation"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"model = Sequential([\n",
" Dense(1, input_shape=(1,), activation='sigmoid'),\n",
" Dense(1, activation='sigmoid'),\n",
" Dense(1, activation='sigmoid'),\n",
" Dense(1, activation='linear')\n",
"])"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"model.compile(keras.optimizers.adam(0.01), 'mae')"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train on 500 samples, validate on 500 samples\n",
"Epoch 1/1000\n",
" - 1s - loss: 10.7925 - val_loss: 9.9397\n",
"Epoch 2/1000\n",
" - 1s - loss: 8.9296 - val_loss: 9.3375\n",
"Epoch 3/1000\n",
" - 1s - loss: 8.6620 - val_loss: 9.2013\n",
"Epoch 4/1000\n",
" - 1s - loss: 8.6035 - val_loss: 9.1835\n",
"Epoch 5/1000\n",
" - 1s - loss: 8.5911 - val_loss: 9.1167\n",
"Epoch 6/1000\n",
" - 1s - loss: 7.1363 - val_loss: 6.8368\n",
"Epoch 7/1000\n",
" - 1s - loss: 5.8644 - val_loss: 6.3118\n",
"Epoch 8/1000\n",
" - 1s - loss: 5.4597 - val_loss: 5.9684\n",
"Epoch 9/1000\n",
" - 1s - loss: 5.2467 - val_loss: 5.6347\n",
"Epoch 10/1000\n",
" - 1s - loss: 5.0600 - val_loss: 5.4765\n",
"Epoch 11/1000\n",
" - 1s - loss: 4.9672 - val_loss: 5.3055\n",
"Epoch 12/1000\n",
" - 1s - loss: 4.8163 - val_loss: 5.1971\n",
"Epoch 13/1000\n",
" - 1s - loss: 4.7217 - val_loss: 5.0519\n",
"Epoch 14/1000\n",
" - 1s - loss: 4.5931 - val_loss: 4.9358\n",
"Epoch 15/1000\n",
" - 1s - loss: 4.5099 - val_loss: 5.0212\n",
"Epoch 16/1000\n",
" - 1s - loss: 4.4456 - val_loss: 4.7371\n",
"Epoch 17/1000\n",
" - 1s - loss: 4.3692 - val_loss: 4.6615\n",
"Epoch 18/1000\n",
" - 1s - loss: 4.2757 - val_loss: 4.5659\n",
"Epoch 19/1000\n",
" - 1s - loss: 4.1710 - val_loss: 4.5181\n",
"Epoch 20/1000\n",
" - 1s - loss: 4.1445 - val_loss: 4.4309\n",
"Epoch 21/1000\n",
" - 1s - loss: 4.1202 - val_loss: 4.3754\n",
"Epoch 22/1000\n",
" - 1s - loss: 3.9930 - val_loss: 4.2898\n",
"Epoch 23/1000\n",
" - 1s - loss: 3.9569 - val_loss: 4.2762\n",
"Epoch 24/1000\n",
" - 1s - loss: 3.8951 - val_loss: 4.1311\n",
"Epoch 25/1000\n",
" - 1s - loss: 3.8637 - val_loss: 4.1126\n",
"Epoch 26/1000\n",
" - 1s - loss: 3.8115 - val_loss: 4.0311\n",
"Epoch 27/1000\n",
" - 1s - loss: 3.7506 - val_loss: 4.0511\n",
"Epoch 28/1000\n",
" - 1s - loss: 3.6890 - val_loss: 4.0650\n",
"Epoch 29/1000\n",
" - 1s - loss: 3.6750 - val_loss: 4.0656\n",
"Epoch 30/1000\n",
" - 1s - loss: 3.6083 - val_loss: 3.8089\n",
"Epoch 31/1000\n",
" - 1s - loss: 3.5777 - val_loss: 3.9468\n",
"Epoch 32/1000\n",
" - 1s - loss: 3.5322 - val_loss: 3.8944\n",
"Epoch 33/1000\n",
" - 1s - loss: 3.5142 - val_loss: 3.6922\n",
"Epoch 34/1000\n",
" - 1s - loss: 3.4402 - val_loss: 3.6803\n",
"Epoch 35/1000\n",
" - 1s - loss: 3.4512 - val_loss: 3.6076\n",
"Epoch 36/1000\n",
" - 1s - loss: 3.3729 - val_loss: 3.5536\n",
"Epoch 37/1000\n",
" - 1s - loss: 3.3810 - val_loss: 3.5800\n",
"Epoch 38/1000\n",
" - 1s - loss: 3.3545 - val_loss: 3.5162\n",
"Epoch 39/1000\n",
" - 1s - loss: 3.2678 - val_loss: 3.6007\n",
"Epoch 40/1000\n",
" - 1s - loss: 3.2645 - val_loss: 3.6501\n",
"Epoch 41/1000\n",
" - 1s - loss: 3.2485 - val_loss: 3.3819\n",
"Epoch 42/1000\n",
" - 1s - loss: 3.2319 - val_loss: 3.4298\n",
"Epoch 43/1000\n",
" - 1s - loss: 3.2518 - val_loss: 3.3201\n",
"Epoch 44/1000\n",
" - 1s - loss: 3.2345 - val_loss: 3.4718\n",
"Epoch 45/1000\n",
" - 1s - loss: 3.1643 - val_loss: 3.2942\n",
"Epoch 46/1000\n",
" - 1s - loss: 3.1669 - val_loss: 3.2535\n",
"Epoch 47/1000\n",
" - 1s - loss: 3.1319 - val_loss: 3.2573\n",
"Epoch 48/1000\n",
" - 1s - loss: 3.0872 - val_loss: 3.4586\n",
"Epoch 49/1000\n",
" - 1s - loss: 3.0787 - val_loss: 3.4577\n",
"Epoch 50/1000\n",
" - 1s - loss: 3.0466 - val_loss: 3.4527\n",
"Epoch 51/1000\n",
" - 1s - loss: 3.0726 - val_loss: 3.1633\n",
"Epoch 52/1000\n",
" - 1s - loss: 3.0663 - val_loss: 3.5573\n",
"Epoch 53/1000\n",
" - 1s - loss: 3.0855 - val_loss: 3.1189\n",
"Epoch 54/1000\n",
" - 1s - loss: 3.0575 - val_loss: 3.1009\n",
"Epoch 55/1000\n",
" - 1s - loss: 2.9985 - val_loss: 3.1468\n",
"Epoch 56/1000\n",
" - 1s - loss: 2.9711 - val_loss: 3.1504\n",
"Epoch 57/1000\n",
" - 1s - loss: 2.9657 - val_loss: 3.2312\n",
"Epoch 58/1000\n",
" - 1s - loss: 2.9622 - val_loss: 3.3062\n",
"Epoch 59/1000\n",
" - 1s - loss: 2.9618 - val_loss: 3.0904\n",
"Epoch 60/1000\n",
" - 1s - loss: 2.9455 - val_loss: 2.9928\n",
"Epoch 61/1000\n",
" - 1s - loss: 2.9392 - val_loss: 3.0355\n",
"Epoch 62/1000\n",
" - 1s - loss: 2.9007 - val_loss: 3.3310\n",
"Epoch 63/1000\n",
" - 1s - loss: 3.0090 - val_loss: 3.0556\n",
"Epoch 64/1000\n",
" - 1s - loss: 2.8749 - val_loss: 3.0421\n",
"Epoch 65/1000\n",
" - 1s - loss: 2.9156 - val_loss: 3.3153\n",
"Epoch 66/1000\n",
" - 1s - loss: 2.9068 - val_loss: 2.9724\n",
"Epoch 67/1000\n",
" - 1s - loss: 2.8824 - val_loss: 2.9063\n",
"Epoch 68/1000\n",
" - 1s - loss: 2.9851 - val_loss: 2.8933\n",
"Epoch 69/1000\n",
" - 1s - loss: 2.8765 - val_loss: 2.9933\n",
"Epoch 70/1000\n",
" - 1s - loss: 2.8790 - val_loss: 2.8743\n",
"Epoch 71/1000\n",
" - 1s - loss: 2.8289 - val_loss: 2.8723\n",
"Epoch 72/1000\n",
" - 1s - loss: 2.8650 - val_loss: 3.2131\n",
"Epoch 73/1000\n",
" - 1s - loss: 2.9271 - val_loss: 2.9211\n",
"Epoch 74/1000\n",
" - 1s - loss: 2.8302 - val_loss: 3.0967\n",
"Epoch 75/1000\n",
" - 1s - loss: 2.8432 - val_loss: 2.9141\n",
"Epoch 76/1000\n",
" - 1s - loss: 2.8195 - val_loss: 2.9590\n",
"Epoch 77/1000\n",
" - 1s - loss: 2.8431 - val_loss: 2.8571\n",
"Epoch 78/1000\n",
" - 1s - loss: 2.8409 - val_loss: 2.8092\n",
"Epoch 79/1000\n",
" - 1s - loss: 2.7956 - val_loss: 3.3540\n",
"Epoch 80/1000\n",
" - 1s - loss: 2.8168 - val_loss: 3.0450\n",
"Epoch 81/1000\n",
" - 1s - loss: 2.8285 - val_loss: 2.7926\n",
"Epoch 82/1000\n",
" - 1s - loss: 2.7765 - val_loss: 2.8455\n",
"Epoch 83/1000\n",
" - 1s - loss: 2.7778 - val_loss: 3.3278\n",
"Epoch 84/1000\n",
" - 1s - loss: 2.8557 - val_loss: 2.7703\n",
"Epoch 85/1000\n",
" - 1s - loss: 2.7913 - val_loss: 2.8085\n",
"Epoch 86/1000\n",
" - 1s - loss: 2.7491 - val_loss: 3.0603\n",
"Epoch 87/1000\n",
" - 1s - loss: 2.7871 - val_loss: 2.8578\n",
"Epoch 88/1000\n",
" - 1s - loss: 2.8144 - val_loss: 3.1336\n",
"Epoch 89/1000\n",
" - 1s - loss: 2.7388 - val_loss: 2.9888\n",
"Epoch 90/1000\n",
" - 1s - loss: 2.7873 - val_loss: 2.7516\n",
"Epoch 91/1000\n",
" - 1s - loss: 2.7479 - val_loss: 2.8912\n",
"Epoch 92/1000\n",
" - 1s - loss: 2.7327 - val_loss: 2.7610\n",
"Epoch 93/1000\n",
" - 1s - loss: 2.7468 - val_loss: 2.9736\n",
"Epoch 94/1000\n",
" - 1s - loss: 2.7259 - val_loss: 2.9166\n",
"Epoch 95/1000\n",
" - 1s - loss: 2.7652 - val_loss: 2.6974\n",
"Epoch 96/1000\n",
" - 1s - loss: 2.7649 - val_loss: 2.7026\n",
"Epoch 97/1000\n",
" - 1s - loss: 2.7535 - val_loss: 2.7129\n",
"Epoch 98/1000\n",
" - 1s - loss: 2.7827 - val_loss: 3.0586\n",
"Epoch 99/1000\n",
" - 1s - loss: 2.7670 - val_loss: 2.7034\n",
"Epoch 100/1000\n",
" - 1s - loss: 2.6683 - val_loss: 2.8728\n",
"Epoch 101/1000\n",
" - 1s - loss: 2.7351 - val_loss: 2.6637\n",
"Epoch 102/1000\n",
" - 1s - loss: 2.7217 - val_loss: 2.8742\n",
"Epoch 103/1000\n",
" - 1s - loss: 2.6876 - val_loss: 2.7453\n",
"Epoch 104/1000\n",
" - 1s - loss: 2.6671 - val_loss: 3.0600\n",
"Epoch 105/1000\n",
" - 1s - loss: 2.7866 - val_loss: 2.7262\n",
"Epoch 106/1000\n",
" - 1s - loss: 2.7277 - val_loss: 2.6761\n",
"Epoch 107/1000\n",
" - 1s - loss: 2.7005 - val_loss: 2.6564\n",
"Epoch 108/1000\n",
" - 1s - loss: 2.6608 - val_loss: 2.6327\n",
"Epoch 109/1000\n",
" - 1s - loss: 2.7170 - val_loss: 2.6369\n",
"Epoch 110/1000\n",
" - 1s - loss: 2.7061 - val_loss: 2.6897\n",
"Epoch 111/1000\n",
" - 1s - loss: 2.6653 - val_loss: 2.8486\n",
"Epoch 112/1000\n",
" - 1s - loss: 2.7441 - val_loss: 3.4665\n",
"Epoch 113/1000\n",
" - 1s - loss: 2.7091 - val_loss: 2.6547\n",
"Epoch 114/1000\n",
" - 1s - loss: 2.6954 - val_loss: 2.9514\n",
"Epoch 115/1000\n",
" - 1s - loss: 2.6503 - val_loss: 2.6581\n",
"Epoch 116/1000\n",
" - 1s - loss: 2.7008 - val_loss: 2.6493\n",
"Epoch 117/1000\n",
" - 1s - loss: 2.6861 - val_loss: 2.6724\n",
"Epoch 118/1000\n",
" - 1s - loss: 2.6537 - val_loss: 2.6604\n",
"\n",
"Epoch 00118: ReduceLROnPlateau reducing learning rate to 0.000999999977648.\n",
"Epoch 119/1000\n",
" - 1s - loss: 2.5312 - val_loss: 2.6275\n",
"Epoch 120/1000\n",
" - 1s - loss: 2.5087 - val_loss: 2.5996\n",
"Epoch 121/1000\n",
" - 1s - loss: 2.5169 - val_loss: 2.6602\n",
"Epoch 122/1000\n",
" - 1s - loss: 2.5106 - val_loss: 2.6682\n",
"Epoch 123/1000\n",
" - 1s - loss: 2.5047 - val_loss: 2.6286\n",
"Epoch 124/1000\n",
" - 1s - loss: 2.4938 - val_loss: 2.6131\n",
"Epoch 125/1000\n",
" - 1s - loss: 2.5097 - val_loss: 2.6047\n",
"Epoch 126/1000\n",
" - 1s - loss: 2.5078 - val_loss: 2.6085\n",
"Epoch 127/1000\n",
" - 1s - loss: 2.5053 - val_loss: 2.7178\n",
"Epoch 128/1000\n",
" - 1s - loss: 2.5112 - val_loss: 2.6119\n",
"Epoch 129/1000\n",
" - 1s - loss: 2.4913 - val_loss: 2.7506\n",
"Epoch 130/1000\n",
" - 1s - loss: 2.4953 - val_loss: 2.6360\n",
"\n",
"Epoch 00130: ReduceLROnPlateau reducing learning rate to 9.99999931082e-05.\n",
"Epoch 131/1000\n",
" - 1s - loss: 2.4813 - val_loss: 2.6267\n",
"Epoch 132/1000\n",
" - 1s - loss: 2.4783 - val_loss: 2.6135\n",
"Epoch 133/1000\n",
" - 1s - loss: 2.4802 - val_loss: 2.6129\n",
"Epoch 134/1000\n",
" - 1s - loss: 2.4777 - val_loss: 2.6114\n",
"Epoch 135/1000\n",
" - 1s - loss: 2.4789 - val_loss: 2.6123\n",
"Epoch 136/1000\n",
" - 1s - loss: 2.4783 - val_loss: 2.6130\n",
"Epoch 137/1000\n",
" - 1s - loss: 2.4784 - val_loss: 2.6126\n",
"Epoch 138/1000\n",
" - 1s - loss: 2.4786 - val_loss: 2.6153\n",
"Epoch 139/1000\n",
" - 1s - loss: 2.4773 - val_loss: 2.6144\n",
"Epoch 140/1000\n",
" - 1s - loss: 2.4782 - val_loss: 2.6142\n",
"\n",
"Epoch 00140: ReduceLROnPlateau reducing learning rate to 9.99999901978e-06.\n"
]
},
{
"data": {
"text/plain": [
"<keras.callbacks.History at 0x13494cfd0>"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.fit(alphas, xts, batch_size=1, epochs=1000, validation_split=0.5, verbose=2, \n",
" callbacks=[keras.callbacks.EarlyStopping(patience=20),\n",
" keras.callbacks.ReduceLROnPlateau(patience=10, verbose=1)])"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5,1,'Error plot')"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAEICAYAAABcVE8dAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAGDhJREFUeJzt3WuQHNdZxvHn0c2WrBQWlrC9m8RygpNit4qYsGWSogiGFRBSECdAwKlVYucmeQeD4VsScTEXA0UBqRCwZAGu2NGUHUhw4tyJDBUXFLmsgxMkG4NjLCLJiTd2TJCvurx8mBl7vJ7p7t2Z7p7p/v+qprTT56j7tGb17NnTp087IgQAqL5VZTcAAFAMAh8AaoLAB4CaIPABoCYIfACoCQIfAGqCwAdyZPv9tn+/7HYAEoGPMWb7ftuP2z7W9fqLstu1UrbD9veW3Q5U15qyGwAM6GcjYn9aJdtrIuJE2rbl7gMYJ/TwUUm2L7f9L7bfY/shSVf32bbK9m/YPmT7Qds32v6u9j62tnvdb7P9P5L+scdxLrZ92Pa7bX+r/VvHXEK73mH7XtsP277V9kR7++3tKl9p/6byS8P/V0HdEfiosh+SdJ+ksyVd02fb5e3Xj0l6kaSNkpYOC/2opO+T9FN9jnOOpM2SJiVdJmmv7ZcurWT7xyX9oaRflHSupEOSbpakiHhVu9rLImJjRHxwWWcKZEDgY9x9xPYjXa93dJUdjYj3RcSJiHi8z7Y5SX8WEfdFxDFJ75J0qe3u4c6rI+LRrn308psR8WREfE7SJ9QK9aXmJF0fEV+OiCfbx3ql7a0rO3VgeRjDx7h7XcIY/tczbJtQq6fdcUit/xdnp+yn27cj4tEl+5joUW9C0pc7byLiWHtoaVLS/SnHAAZGDx9V1msp2KXbjko6r+v9CyWdkPTNlP1022T7jCX7ONqj3rOO1f47Z0k6krJ/YCgIfNTdTZJ+3fb5tjdK+gNJH1zBbJzfsb3O9o9I+hlJf9fnWG+xfaHt09rH+kJE3N8u/6Za1xGAXBD4GHcfWzIP/5Zl/v3rJX1A0u2S/lvSE5J+ZZn7+Iakb6vVg29KuiIi/mNppfbQ029K+rCkByS9WNKlXVWulnRD+1pEr2sAwEDMA1CAlbN9saR9EfH8stsCpKGHDwA1QeADQE0wpAMANUEPHwBqYqRuvNq8eXNs3bq17GYAwFi54447vhURW9LqjVTgb926VQsLC2U3AwDGiu1D6bUY0gGA2iDwAaAmCHwAqAkCHwBqgsAHgJog8AGgTM2mtHWrtGpV689mM7dDjdS0TAColWZTestbpOPHW+8PHWq9l6S5vo9GXjF6+ABQlquueibsO44fb23PAYEPAGV56KHlbR8QgQ8AZWg0Cj8kgQ8AZdi7t3/ZWWflckgCHwDKcPJk/7L3vjeXQxL4ADBqcpihIxH4AFAbBD4AFC3Hm6uSEPgAULSkefY5XbCVhhT4tq+3/aDtA13brrZ9xPad7ddrhnEsABh7SfPsc7pgKw2vh/9+Sa/usf09EXFh+/XJIR0LAMZX2nBOThdspSEFfkTcLunhYewLACpt167+ZTkO50j5j+Ffafur7SGfTb0q2N5he8H2wuLiYs7NAYCSHUp4/GyOwzlSvoG/W9KLJV0o6QFJf9qrUkTsjYiZiJjZsiX1oesAMN5W9YldO9fhHCnHwI+Ib0bEyYg4JemvJF2U17EAYCw0m9KpU73LInI/fG6Bb/vcrrevl3SgX10AqIWk6ZjnnZf74YfyABTbN0m6WNJm24cl/baki21fKCkk3S9p5zCOBQBjK2k65jXX5H74oQR+RLyxx+a/Gca+AaASSpyO2cGdtgBQhBKnY3YQ+ABQhBKnY3YQ+ABQBLv/9gKGcyQCHwDy12z2n3ZZwHTMDgIfAPKWNB2zQAQ+AOQtaTpmQRdsJQIfAMpV0AVbicAHgPxt3Nh/e0EXbCUCHwDy1WxKjz323O1r1kh79hTaFAIfAPJ01VW9F0w77bRCe/cSgQ8A+ep3wfbRR4tthwh8AKgNAh8A8jI93b+swOmYHQQ+AOSh0ZDuuqt/eYHTMTsIfADIQ9oMnIIv2EoEPgAMX9LaOZK0enVxbelC4APAsKWtnbNjRzHtWILAB4BhS1o7R5KuvbaYdixB4ANAkUqYndMxlMC3fb3tB20f6Nr23bY/a/u/2n9uGsaxAGDknX56/7ISZud0DKuH/35Jr16y7Z2SbouICyTd1n4PANXWaEhPPNG7bH6+lNk5HUMJ/Ii4XdLDSzZfIumG9tc3SHrdMI4FACNt797e2+3Sxu478hzDPzsiHmh//Q1JZ+d4LAAYDSdP9t5e4KMM+ynkom1EhKSeZ2t7h+0F2wuLi4tFNAcA8tFs9i8rae59tzwD/5u2z5Wk9p8P9qoUEXsjYiYiZrZs2ZJjcwAgR82mdNll/ctLmnvfLc/Av1VS5+wvk/TRHI8FAOXaubP/cM78fOnj99LwpmXeJOlfJb3U9mHbb5P0R5J+wvZ/SdrWfg8A1ZS0vv0IhL0krRnGTiLijX2KZoexfwAYaZvG4zYj7rQFgEE0m9Ijj/QvXzU6MTs6LQGAcbRrV3L5zp3FtCMDAh8ABnHoUHL5iIzfSwQ+AKxc0rx7qXV37Qgh8AFgpdKGaz7wgWLakRGBDwAr0WwmT8WUSl0orRcCHwBW4u1vTy4vcd37fgh8AFiupCWQO0pc974fAh8AlmvPnuTyjRtHbjhHIvABYHmazfSljtN+IJSEwAeA5XjTm5LLS36qVRICHwCyajSSe/ezsyN1o9VSBD4AZLV7d3L5/v3FtGOFCHwAyKLRKLsFAyPwASCL665LLp8d/dXgCXwASNNoSKdO9S+fmBj54RyJwAeAZM1m8ti9LR05Ulx7BkDgA0CStAXSrriimHYMAYEPAP1kWSBthKdhLkXgA0A/I/S0qmEYykPMk9i+X9L/STop6UREzOR9TAAYirTe/RjMzOlWVA//xyLiQsIewFhoNqXTTkuuMzU1FjNzuuXewweAsdJsSm9+c/I0TFs6eLC4Ng1JET38kPQPtu+wvWNpoe0dthdsLywuLhbQHABIcNllyWEvjdXMnG6OtGU+Bz2APRkRR2x/j6TPSvqViLi9V92ZmZlYWFjItT0A0Nf0tHTXXcl17PQfCAWzfUeWIfPce/gRcaT954OSbpF0Ud7HBIBlazbTw14a2969lHPg2z7D9vM6X0v6SUkH8jwmAKzI9u3pdUZ8+eM0effwz5b0z7a/IumLkj4REZ/O+ZgAsDybNqXXmZ8fu1k5S+U6Syci7pP0sjyPAQADmZyUHnkkuc7U1Fj37Du40xZAfU1PS0ePptcbwymYvRD4AOpp27ZsF2nXr8+/LQUh8AHU0223Zav32GP5tqNABD6A+tmwIVu9+fl821EwllYAUC+rV2e7cWrMp2D2Qg8fQH2sW5c97Md8CmYvBD6AetiwQTp+PL1eRcNeIvABVF2z2Vr/5vHH0+uO4ZLHy0HgA6iuZjPbkglSa/plRebb90PgA6imRiN72K9aVanpl/0wSwdA9WRZ5rhj7Vrpqafybc+IIPABVMumTelr43SsX1+Lnn0HQzoAqqHZbA3NZA37tWtrFfYSgY+sJidbMx2KejUaZZ8xxknnObRZn+A3NVWbYZxuBD5amk1pzZr+AZxlRcFh2r2bHwxI12i0vg+2b8/+2MHZ2crPxumHwK+jRqN1e3l3cG7fLp08WXbLli/pB8PkZNmtQ542bWp9/stR8Xn2aQj8Omg0WmObnSDcvXvkHsKci6NH+/8waDbLbh1WqtOrzzpW3zE/X9uefQeBX1Wduws7AZ91bLMutm9neGjcdIJ+ub16Sdq3r3ILoa0EgV8lzWZr5kFniAbL02t4aM0afhso2/T0yoN+drbV2ZmbG367xlDugW/71bbvsX2v7Xfmfbza6e7Jb98unThRdouq5eRJfhsoy7ZtrX/rrDdQdesEfY3H63vJNfBtr5b0l5J+WtKUpDfansrzmLXRmVVTRk9+fr71n2nYr4mJ4s9lpXr9NrBuXdmtqoZO0Gd9ItVSExMEfR959/AvknRvRNwXEU9JulnSJTkfs9q6p6HlOatm377+wZzXWOiRI+k/FPbtk04/PZ/jD+r48ef+EHje8xgSyqLzfT1I0EutzsiRI8NrV8XkHfiTkr7e9f5we9vTbO+wvWB7YXFxMefmjLHOXYQrGcdM06vHPqpjnnNzrWVu+/1AmJ0tu4XPduwYQ0JJBhmf7zYxkW9npCJKv2gbEXsjYiYiZrZs2VJ2c0ZPd49+GDNtVq9+bu+9Sv9J9u/v/YNg1J5N2u/+gW3bym5Zvjodl875rmR8vtuaNa3vZ3r1meQd+EckvaDr/fPb25CmM445jB59dw/+xInR7b3n6dprew8PjZrbbqvWTWTdQzXD7LiceWZrP8eP1/P7eYXyDvwvSbrA9vm210m6VNKtOR9z/E1ODjaOKT075KvUgx+mubn+1wnsslv3bEk3kY3KENHScB9Wh6Xb6ae3Pp9vf3u4+62JXAM/Ik5IulLSZyTdLelvI6Let7ol6fTqV7puzdQUIT8Mc3OtO5GX/hBYM8KriWdde2i5Q0fNprR5c7Z95nF9qaMzDPn44/ToB+AYoTswZ2ZmYmFhoexmlGPDhmzP3Oxlaqr2t4yXptmU3vY26ckny25JNfG9nYntOyJiJq1e6Rdta6/za/BKwr7To+c/RHnm5qQnnhjtC8TjpnMhlu/toSPwy7Rhw8p+De5MQeM/w2jqdYF4FKeMjpIzzngm5LkQmxsCvwydsfrl9urXrm39h2AK2njqNWV0fn70LhAXwX72xIJjxwj5AhD4RduwYWUzcPbtq+UTeirv2mufe4G4qsND3QF/6hQTC0pA4Bdp06bl9+o7wzf0fuqp3/DQKA8RrV9f7JIcyIzAL8r09PIf2MAdhEjS767ipHWIBplaunQYpt+rZg8GHycjPLG4QrZtW94t5PPz9IYwfHNz/KZYcwR+3rZtW96Y/QjdFwGgWgj8PG3alH0YZ2KC4RsAuWIMPy8bNmQPe8bqARSAwM9D1mUSOncUMq4KoAAM6QzbunWtOwXTzM7yGDYAhaKHP0wbNhD2AEYWgT8s09PZhnHOPJOwB1AKAn8Yss6zX7+eBzcAKA2BP6is8+zXr+cORAClIvAH0Whkv6mKsAdQMgJ/pZrN7GvZj+LDsgHUDoG/Ujt3ptdZvZp59gBGBvPwV6LRkB59NL3eiRP5twUAMsqth2/7attHbN/Zfr0mr2MVLstQzqiuVQ6gtvLu4b8nIv4k52MUa9u29DoTE8y1BzByGNJZjunp9Pn2GzeyEBqAkZT3RdsrbX/V9vW2N/WqYHuH7QXbC4uLizk3ZwBZb67asyf/tgDACjgGeOCG7f2SzulRtEvS5yV9S1JI+j1J50bEW5P2NzMzEwsLCytuT67s9Do8qQpACWzfEREzafUGGtKJiAwD2pLtv5L08UGOVap169LrzM4S9gBGWp6zdM7tevt6SQfyOlauJifTV8Bk9UsAYyDPi7Z/bPtCtYZ07peU4U6lEXT0aHL56tWEPYCxkFvgR8Sb8tp3YSYn0+vccEP+7QCAIWBphX62bUvv3U9NsWwCgLFB4PeTZRXMgwfzbwcADAmB30uzmV6HpRMAjBkCv5fLLkuvw4VaAGOGwF+q2ZROnkyuMz9fTFsAYIgI/KXS1rmfmuIGKwBjicDv1mymr3PPhVoAY4rA75aldw8AY4rA70h7itXq1fTuAYw1Ar/juuuSy7mjFsCYI/A7Tp3qXzY/zx21AMYegS+lP7aQWTkAKoDAbzSSl1E444zi2gIAOSLwd+9OLk8b2weAMVHvwE9bM+essxi7B1AZ9Q78tyY+Yld673uLaQcAFKC+gd9oSE89lVyH3j2ACqlv4KeN3QNAxdQz8LOsd8+KmAAqZqDAt/0G2wdtn7I9s6TsXbbvtX2P7Z8arJlDdtVVyeWzs8y9B1A5gz7E/ICkn5P0rLmLtqckXSppWtKEpP22XxIRKQvNF+Shh5LLebgJgAoaqIcfEXdHxD09ii6RdHNEPBkR/y3pXkkXDXKsockyFRMAKiivMfxJSV/ven+4ve05bO+wvWB7YXFxMafmdLniiuRypmICqKjUIR3b+yWd06NoV0R8dNAGRMReSXslaWZmJgbdX6pjx/qX2UzFBFBZqYEfESkri/V0RNILut4/v72tXI1Gcnla7x8AxlheQzq3SrrU9mm2z5d0gaQv5nSs7PbuTS5nZg6ACht0WubrbR+W9EpJn7D9GUmKiIOS/lbSXZI+LemXR2KGzsmEJmzcWFw7AKAEA03LjIhbJN3Sp+waSdcMsv9C7dlTdgsAIFf1udM2bTomF2sBVFx9Aj/p7trzziuuHQBQknoEfrOZfHftNeMz8gQAK1WPwE+abslDTgDURPUDv9FIvtmKO2sB1ET1Az9p3Xt69wBqpPqBn4TePYAaqXfg07sHUCPVDvxtK1kGCACqqdqBf9tt/ctYSgFAzVQ38NPurGUpBQA1U93AT3tuLeP3AGqmuoGfdGft7Gxx7QCAEVHdwE/CQ8oB1FA1Az/tyVYAUEPVDPyku2sBoKaqGfgAgOeoX+DPz5fdAgAoRfUCP23+PQ8qB1BTgz7E/A22D9o+ZXuma/tW24/bvrP9Ku4up127+pedcUZhzQCAUTPQQ8wlHZD0c5Ku61H2tYi4cMD9L9+hQ/3LruvVTACoh4ECPyLuliTbw2nNMKxaJZ061Xs7d9cCqLE8x/DPt/1vtj9n+0f6VbK9w/aC7YXFxcXBjths9g57qf92AKiJ1B6+7f2SzulRtCsiPtrnrz0g6YUR8ZDtH5T0EdvTEfGdpRUjYq+kvZI0MzMT2ZveQ9L6OeedN9CuAWDcpQZ+RCx7UfmIeFLSk+2v77D9NUkvkbSw7BYuR9L6Oddck+uhAWDU5TKkY3uL7dXtr18k6QJJ9+VxrKelTcdk/B5AzQ06LfP1tg9LeqWkT9j+TLvoVZK+avtOSR+SdEVEPDxYU1MkDeecdVauhwaAcTDoLJ1bJN3SY/uHJX14kH0vW9JwDg8rB4AK3mnbC8M5AFChwO93L8Cq6pwiAAyiGmnYbErRZ0Yn8+8BQFJVAn/nzv5lzL8HAElVCfxHH+1fxvx7AJBUlcBPwgVbAJBUhcBPuuGKC7YA8LTxT8Sk9e+TxvYBoGbGP/CT1r/n6VYA8LTxD3wAQCYEPgDUBIEPADUx/oHf78HkPLAcAJ5l/AP/uuueO/1y1SoeWA4AS4x/4M/NSTfe2FpCwW79eeON3HAFAEsMtB7+yJibI+ABIMX49/ABAJkQ+ABQEwQ+ANQEgQ8ANUHgA0BNOPo9GrAEthclJayGVprNkr5VdiMKVrdzrtv5SvU75yqf73kRsSWt0kgF/qiyvRARM2W3o0h1O+e6na9Uv3Ou2/n2wpAOANQEgQ8ANUHgZ7O37AaUoG7nXLfzlep3znU73+dgDB8AaoIePgDUBIEPADVB4Hex/Wrb99i+1/Y7e5RfbnvR9p3t19vLaOew2L7e9oO2D/Qpt+0/b/97fNX2y4tu4zBlON+Lbf9v1+f7W0W3cdhsv8D2P9m+y/ZB21f1qFOZzznj+Vbuc84sIni1rmOslvQ1SS+StE7SVyRNLalzuaS/KLutQzznV0l6uaQDfcpfI+lTkizpFZK+UHabcz7fiyV9vOx2Dvmcz5X08vbXz5P0nz2+ryvzOWc838p9zllf9PCfcZGkeyPivoh4StLNki4puU25iojbJT2cUOUSSTdGy+clnWn73GJaN3wZzrdyIuKBiPhy++v/k3S3pMkl1SrzOWc839oi8J8xKenrXe8Pq/c3ys+3f+39kO0XFNO00mT9N6mSV9r+iu1P2Z4uuzHDZHurpB+Q9IUlRZX8nBPOV6rw55yEwF+ej0naGhHfL+mzkm4ouT0Yri+rtSbJyyS9T9JHSm7P0NjeKOnDkn4tIr5TdnvylnK+lf2c0xD4zzgiqbvH/vz2tqdFxEMR8WT77V9L+sGC2laW1H+TKomI70TEsfbXn5S01vbmkps1MNtr1Qq/ZkT8fY8qlfqc0863qp9zFgT+M74k6QLb59teJ+lSSbd2V1gyrvlatcYHq+xWSW9uz+J4haT/jYgHym5UXmyfY9vtry9S6//HQ+W2ajDt8/kbSXdHxJ/1qVaZzznL+Vbxc86qGg8xH4KIOGH7SkmfUWvGzvURcdD270paiIhbJf2q7ddKOqHWxb/LS2vwENi+Sa0ZC5ttH5b025LWSlJE7JH0SbVmcNwr6TFJbymnpcOR4Xx/QdK87ROSHpd0abSndYyxH5b0Jkn/bvvO9rZ3S3qhVMnPOcv5VvFzzoSlFQCgJhjSAYCaIPABoCYIfACoCQIfAGqCwAeAmiDwAaAmCHwAqIn/B37rugin+1TkAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(alphas, xts - np.reshape(model.predict(alphas), [N]), 'ro')\n",
"plt.title('Error plot')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Add more parameters"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"import keras\n",
"from keras.models import Sequential\n",
"from keras.layers import Dense, Activation"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"model = Sequential([\n",
" Dense(100, input_shape=(1,), activation='sigmoid'),\n",
" Dense(100, activation='sigmoid'),\n",
" Dense(100, activation='sigmoid'),\n",
" Dense(1, activation='linear')\n",
"])"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"model.compile(keras.optimizers.adam(0.01), 'mae')"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train on 500 samples, validate on 500 samples\n",
"Epoch 1/1000\n",
" - 1s - loss: 8.7532 - val_loss: 9.4619\n",
"Epoch 2/1000\n",
" - 1s - loss: 8.6549 - val_loss: 8.7629\n",
"Epoch 3/1000\n",
" - 1s - loss: 4.1797 - val_loss: 2.8980\n",
"Epoch 4/1000\n",
" - 1s - loss: 2.7264 - val_loss: 2.1787\n",
"Epoch 5/1000\n",
" - 1s - loss: 2.1460 - val_loss: 3.4483\n",
"Epoch 6/1000\n",
" - 1s - loss: 2.3181 - val_loss: 2.1554\n",
"Epoch 7/1000\n",
" - 1s - loss: 1.9001 - val_loss: 2.2891\n",
"Epoch 8/1000\n",
" - 1s - loss: 1.7631 - val_loss: 1.6546\n",
"Epoch 9/1000\n",
" - 1s - loss: 1.8787 - val_loss: 3.0211\n",
"Epoch 10/1000\n",
" - 1s - loss: 1.3719 - val_loss: 1.0239\n",
"Epoch 11/1000\n",
" - 1s - loss: 1.5782 - val_loss: 1.3933\n",
"Epoch 12/1000\n",
" - 1s - loss: 1.2955 - val_loss: 2.0476\n",
"Epoch 13/1000\n",
" - 1s - loss: 1.4562 - val_loss: 1.3873\n",
"Epoch 14/1000\n",
" - 1s - loss: 1.5530 - val_loss: 1.8240\n",
"Epoch 15/1000\n",
" - 1s - loss: 1.4931 - val_loss: 0.7797\n",
"Epoch 16/1000\n",
" - 1s - loss: 1.2939 - val_loss: 0.7529\n",
"Epoch 17/1000\n",
" - 1s - loss: 1.4188 - val_loss: 1.1303\n",
"Epoch 18/1000\n",
" - 1s - loss: 1.3619 - val_loss: 1.0933\n",
"Epoch 19/1000\n",
" - 1s - loss: 1.1092 - val_loss: 0.9383\n",
"Epoch 20/1000\n",
" - 1s - loss: 1.2492 - val_loss: 1.1624\n",
"Epoch 21/1000\n",
" - 1s - loss: 1.3205 - val_loss: 1.0803\n",
"Epoch 22/1000\n",
" - 1s - loss: 1.2218 - val_loss: 0.9855\n",
"Epoch 23/1000\n",
" - 1s - loss: 1.3948 - val_loss: 1.1764\n",
"Epoch 24/1000\n",
" - 1s - loss: 1.5514 - val_loss: 1.3135\n",
"Epoch 25/1000\n",
" - 1s - loss: 1.1839 - val_loss: 1.4799\n",
"Epoch 26/1000\n",
" - 1s - loss: 1.4382 - val_loss: 1.4105\n",
"\n",
"Epoch 00026: ReduceLROnPlateau reducing learning rate to 0.000999999977648.\n",
"Epoch 27/1000\n",
" - 1s - loss: 0.7521 - val_loss: 0.5351\n",
"Epoch 28/1000\n",
" - 1s - loss: 0.4792 - val_loss: 0.4284\n",
"Epoch 29/1000\n",
" - 1s - loss: 0.3499 - val_loss: 0.2595\n",
"Epoch 30/1000\n",
" - 1s - loss: 0.2936 - val_loss: 0.2495\n",
"Epoch 31/1000\n",
" - 1s - loss: 0.2522 - val_loss: 0.2264\n",
"Epoch 32/1000\n",
" - 1s - loss: 0.2223 - val_loss: 0.2031\n",
"Epoch 33/1000\n",
" - 1s - loss: 0.2229 - val_loss: 0.2000\n",
"Epoch 34/1000\n",
" - 1s - loss: 0.2102 - val_loss: 0.2356\n",
"Epoch 35/1000\n",
" - 1s - loss: 0.1958 - val_loss: 0.2326\n",
"Epoch 36/1000\n",
" - 1s - loss: 0.1814 - val_loss: 0.2276\n",
"Epoch 37/1000\n",
" - 1s - loss: 0.1806 - val_loss: 0.2065\n",
"Epoch 38/1000\n",
" - 1s - loss: 0.1727 - val_loss: 0.2939\n",
"Epoch 39/1000\n",
" - 1s - loss: 0.1776 - val_loss: 0.1515\n",
"Epoch 40/1000\n",
" - 1s - loss: 0.1472 - val_loss: 0.1844\n",
"Epoch 41/1000\n",
" - 1s - loss: 0.1610 - val_loss: 0.2021\n",
"Epoch 42/1000\n",
" - 1s - loss: 0.1654 - val_loss: 0.1308\n",
"Epoch 43/1000\n",
" - 1s - loss: 0.1446 - val_loss: 0.1592\n",
"Epoch 44/1000\n",
" - 1s - loss: 0.1528 - val_loss: 0.1225\n",
"Epoch 45/1000\n",
" - 1s - loss: 0.1622 - val_loss: 0.1595\n",
"Epoch 46/1000\n",
" - 1s - loss: 0.1604 - val_loss: 0.1989\n",
"Epoch 47/1000\n",
" - 1s - loss: 0.1554 - val_loss: 0.1921\n",
"Epoch 48/1000\n",
" - 1s - loss: 0.1522 - val_loss: 0.1574\n",
"Epoch 49/1000\n",
" - 1s - loss: 0.1395 - val_loss: 0.1172\n",
"Epoch 50/1000\n",
" - 1s - loss: 0.1435 - val_loss: 0.1494\n",
"Epoch 51/1000\n",
" - 1s - loss: 0.1723 - val_loss: 0.2866\n",
"Epoch 52/1000\n",
" - 1s - loss: 0.1514 - val_loss: 0.2148\n",
"Epoch 53/1000\n",
" - 1s - loss: 0.1512 - val_loss: 0.1533\n",
"Epoch 54/1000\n",
" - 1s - loss: 0.1270 - val_loss: 0.1388\n",
"Epoch 55/1000\n",
" - 1s - loss: 0.1437 - val_loss: 0.1978\n",
"Epoch 56/1000\n",
" - 1s - loss: 0.1382 - val_loss: 0.1986\n",
"Epoch 57/1000\n",
" - 1s - loss: 0.1446 - val_loss: 0.2621\n",
"Epoch 58/1000\n",
" - 1s - loss: 0.1575 - val_loss: 0.1106\n",
"Epoch 59/1000\n",
" - 1s - loss: 0.1549 - val_loss: 0.1673\n",
"Epoch 60/1000\n",
" - 1s - loss: 0.1527 - val_loss: 0.1388\n",
"Epoch 61/1000\n",
" - 1s - loss: 0.1556 - val_loss: 0.1491\n",
"Epoch 62/1000\n",
" - 1s - loss: 0.1472 - val_loss: 0.1261\n",
"Epoch 63/1000\n",
" - 1s - loss: 0.1449 - val_loss: 0.2812\n",
"Epoch 64/1000\n",
" - 1s - loss: 0.1633 - val_loss: 0.1292\n",
"Epoch 65/1000\n",
" - 1s - loss: 0.1346 - val_loss: 0.2302\n",
"Epoch 66/1000\n",
" - 1s - loss: 0.1540 - val_loss: 0.1819\n",
"Epoch 67/1000\n",
" - 1s - loss: 0.1513 - val_loss: 0.1354\n",
"Epoch 68/1000\n",
" - 1s - loss: 0.1391 - val_loss: 0.2778\n",
"\n",
"Epoch 00068: ReduceLROnPlateau reducing learning rate to 9.99999931082e-05.\n",
"Epoch 69/1000\n",
" - 1s - loss: 0.0841 - val_loss: 0.0599\n",
"Epoch 70/1000\n",
" - 1s - loss: 0.0458 - val_loss: 0.0508\n",
"Epoch 71/1000\n",
" - 1s - loss: 0.0436 - val_loss: 0.0519\n",
"Epoch 72/1000\n",
" - 1s - loss: 0.0424 - val_loss: 0.0517\n",
"Epoch 73/1000\n",
" - 1s - loss: 0.0408 - val_loss: 0.0508\n",
"Epoch 74/1000\n",
" - 1s - loss: 0.0399 - val_loss: 0.0513\n",
"Epoch 75/1000\n",
" - 1s - loss: 0.0407 - val_loss: 0.0504\n",
"Epoch 76/1000\n",
" - 1s - loss: 0.0423 - val_loss: 0.0470\n",
"Epoch 77/1000\n",
" - 1s - loss: 0.0400 - val_loss: 0.0464\n",
"Epoch 78/1000\n",
" - 1s - loss: 0.0399 - val_loss: 0.0475\n",
"Epoch 79/1000\n",
" - 1s - loss: 0.0398 - val_loss: 0.0453\n",
"Epoch 80/1000\n",
" - 1s - loss: 0.0383 - val_loss: 0.0441\n",
"Epoch 81/1000\n",
" - 1s - loss: 0.0392 - val_loss: 0.0441\n",
"Epoch 82/1000\n",
" - 1s - loss: 0.0382 - val_loss: 0.0508\n",
"Epoch 83/1000\n",
" - 1s - loss: 0.0393 - val_loss: 0.0456\n",
"Epoch 84/1000\n",
" - 1s - loss: 0.0386 - val_loss: 0.0497\n",
"Epoch 85/1000\n",
" - 1s - loss: 0.0394 - val_loss: 0.0443\n",
"Epoch 86/1000\n",
" - 1s - loss: 0.0354 - val_loss: 0.0544\n",
"Epoch 87/1000\n",
" - 1s - loss: 0.0364 - val_loss: 0.0451\n",
"Epoch 88/1000\n",
" - 1s - loss: 0.0372 - val_loss: 0.0424\n",
"Epoch 89/1000\n",
" - 1s - loss: 0.0364 - val_loss: 0.0407\n",
"Epoch 90/1000\n",
" - 1s - loss: 0.0359 - val_loss: 0.0406\n",
"Epoch 91/1000\n",
" - 1s - loss: 0.0359 - val_loss: 0.0470\n",
"Epoch 92/1000\n",
" - 1s - loss: 0.0357 - val_loss: 0.0473\n",
"Epoch 93/1000\n",
" - 1s - loss: 0.0354 - val_loss: 0.0443\n",
"Epoch 94/1000\n",
" - 1s - loss: 0.0350 - val_loss: 0.0403\n",
"Epoch 95/1000\n",
" - 1s - loss: 0.0351 - val_loss: 0.0510\n",
"Epoch 96/1000\n",
" - 1s - loss: 0.0327 - val_loss: 0.0387\n",
"Epoch 97/1000\n",
" - 1s - loss: 0.0356 - val_loss: 0.0545\n",
"Epoch 98/1000\n",
" - 1s - loss: 0.0341 - val_loss: 0.0409\n",
"Epoch 99/1000\n",
" - 1s - loss: 0.0365 - val_loss: 0.0409\n",
"Epoch 100/1000\n",
" - 1s - loss: 0.0365 - val_loss: 0.0376\n",
"Epoch 101/1000\n",
" - 1s - loss: 0.0325 - val_loss: 0.0536\n",
"Epoch 102/1000\n",
" - 1s - loss: 0.0346 - val_loss: 0.0391\n",
"Epoch 103/1000\n",
" - 1s - loss: 0.0347 - val_loss: 0.0374\n",
"Epoch 104/1000\n",
" - 1s - loss: 0.0323 - val_loss: 0.0453\n",
"Epoch 105/1000\n",
" - 1s - loss: 0.0347 - val_loss: 0.0407\n",
"Epoch 106/1000\n",
" - 1s - loss: 0.0318 - val_loss: 0.0393\n",
"Epoch 107/1000\n",
" - 1s - loss: 0.0333 - val_loss: 0.0502\n",
"Epoch 108/1000\n",
" - 1s - loss: 0.0314 - val_loss: 0.0488\n",
"Epoch 109/1000\n",
" - 1s - loss: 0.0316 - val_loss: 0.0382\n",
"Epoch 110/1000\n",
" - 1s - loss: 0.0333 - val_loss: 0.0390\n",
"Epoch 111/1000\n",
" - 1s - loss: 0.0327 - val_loss: 0.0519\n",
"Epoch 112/1000\n",
" - 1s - loss: 0.0324 - val_loss: 0.0449\n",
"Epoch 113/1000\n",
" - 1s - loss: 0.0336 - val_loss: 0.0388\n",
"\n",
"Epoch 00113: ReduceLROnPlateau reducing learning rate to 9.99999901978e-06.\n",
"Epoch 114/1000\n",
" - 1s - loss: 0.0267 - val_loss: 0.0350\n",
"Epoch 115/1000\n",
" - 1s - loss: 0.0253 - val_loss: 0.0351\n",
"Epoch 116/1000\n",
" - 1s - loss: 0.0251 - val_loss: 0.0355\n",
"Epoch 117/1000\n",
" - 1s - loss: 0.0250 - val_loss: 0.0348\n",
"Epoch 118/1000\n",
" - 1s - loss: 0.0254 - val_loss: 0.0356\n",
"Epoch 119/1000\n",
" - 1s - loss: 0.0252 - val_loss: 0.0347\n",
"Epoch 120/1000\n",
" - 1s - loss: 0.0250 - val_loss: 0.0342\n",
"Epoch 121/1000\n",
" - 1s - loss: 0.0252 - val_loss: 0.0354\n",
"Epoch 122/1000\n",
" - 1s - loss: 0.0250 - val_loss: 0.0342\n",
"Epoch 123/1000\n",
" - 1s - loss: 0.0247 - val_loss: 0.0341\n",
"Epoch 124/1000\n",
" - 1s - loss: 0.0250 - val_loss: 0.0353\n",
"Epoch 125/1000\n",
" - 1s - loss: 0.0249 - val_loss: 0.0340\n",
"Epoch 126/1000\n",
" - 1s - loss: 0.0249 - val_loss: 0.0345\n",
"Epoch 127/1000\n",
" - 1s - loss: 0.0249 - val_loss: 0.0352\n",
"Epoch 128/1000\n",
" - 1s - loss: 0.0251 - val_loss: 0.0346\n",
"Epoch 129/1000\n",
" - 1s - loss: 0.0249 - val_loss: 0.0343\n",
"Epoch 130/1000\n",
" - 1s - loss: 0.0250 - val_loss: 0.0339\n",
"Epoch 131/1000\n",
" - 1s - loss: 0.0250 - val_loss: 0.0357\n",
"Epoch 132/1000\n",
" - 1s - loss: 0.0249 - val_loss: 0.0344\n",
"Epoch 133/1000\n",
" - 1s - loss: 0.0249 - val_loss: 0.0342\n",
"Epoch 134/1000\n",
" - 1s - loss: 0.0249 - val_loss: 0.0343\n",
"Epoch 135/1000\n",
" - 1s - loss: 0.0248 - val_loss: 0.0340\n",
"Epoch 136/1000\n",
" - 1s - loss: 0.0248 - val_loss: 0.0336\n",
"Epoch 137/1000\n",
" - 1s - loss: 0.0245 - val_loss: 0.0344\n",
"Epoch 138/1000\n",
" - 1s - loss: 0.0246 - val_loss: 0.0339\n",
"Epoch 139/1000\n",
" - 1s - loss: 0.0247 - val_loss: 0.0339\n",
"Epoch 140/1000\n",
" - 1s - loss: 0.0247 - val_loss: 0.0338\n",
"Epoch 141/1000\n",
" - 1s - loss: 0.0247 - val_loss: 0.0343\n",
"Epoch 142/1000\n",
" - 1s - loss: 0.0248 - val_loss: 0.0358\n",
"Epoch 143/1000\n",
" - 1s - loss: 0.0247 - val_loss: 0.0343\n",
"Epoch 144/1000\n",
" - 1s - loss: 0.0246 - val_loss: 0.0351\n",
"Epoch 145/1000\n",
" - 1s - loss: 0.0247 - val_loss: 0.0338\n",
"Epoch 146/1000\n",
" - 1s - loss: 0.0246 - val_loss: 0.0340\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Epoch 00146: ReduceLROnPlateau reducing learning rate to 9.99999883788e-07.\n",
"Epoch 147/1000\n",
" - 1s - loss: 0.0241 - val_loss: 0.0337\n",
"Epoch 148/1000\n",
" - 1s - loss: 0.0238 - val_loss: 0.0337\n",
"Epoch 149/1000\n",
" - 1s - loss: 0.0237 - val_loss: 0.0337\n",
"Epoch 150/1000\n",
" - 1s - loss: 0.0237 - val_loss: 0.0338\n",
"Epoch 151/1000\n",
" - 1s - loss: 0.0237 - val_loss: 0.0337\n",
"Epoch 152/1000\n",
" - 1s - loss: 0.0237 - val_loss: 0.0338\n",
"Epoch 153/1000\n",
" - 1s - loss: 0.0237 - val_loss: 0.0339\n",
"Epoch 154/1000\n",
" - 1s - loss: 0.0237 - val_loss: 0.0337\n",
"Epoch 155/1000\n",
" - 1s - loss: 0.0237 - val_loss: 0.0339\n",
"Epoch 156/1000\n",
" - 1s - loss: 0.0237 - val_loss: 0.0338\n",
"\n",
"Epoch 00156: ReduceLROnPlateau reducing learning rate to 9.99999883788e-08.\n"
]
},
{
"data": {
"text/plain": [
"<keras.callbacks.History at 0x134f80dd0>"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.fit(alphas, xts, batch_size=1, epochs=1000, validation_split=0.5, verbose=2, \n",
" callbacks=[keras.callbacks.EarlyStopping(patience=20),\n",
" keras.callbacks.ReduceLROnPlateau(patience=10, verbose=1)])"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5,1,'Error plot')"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(alphas, xts - np.reshape(model.predict(alphas), [N]), 'ro')\n",
"plt.title('Error plot')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Better model"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"import keras\n",
"from keras.models import Sequential\n",
"from keras.layers import Dense, Activation\n",
"import tensorflow as tf\n",
"import keras.backend as K"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"def clamped_tan(x):\n",
" return tf.clip_by_value(tf.tan(x), -100, 100)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"model = Sequential([\n",
" Dense(1, input_shape=(1,), activation=clamped_tan),\n",
" Dense(1, activation='linear'),\n",
"])"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"# note, we need higher LR to escape local minimas\n",
"model.compile(keras.optimizers.adam(0.1), 'mae')"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train on 500 samples, validate on 500 samples\n",
"Epoch 1/1000\n",
" - 1s - loss: 9.3882 - val_loss: 9.2950\n",
"Epoch 2/1000\n",
" - 1s - loss: 8.4865 - val_loss: 8.1812\n",
"Epoch 3/1000\n",
" - 1s - loss: 8.8095 - val_loss: 10.6867\n",
"Epoch 4/1000\n",
" - 1s - loss: 8.0937 - val_loss: 7.9604\n",
"Epoch 5/1000\n",
" - 1s - loss: 5.8308 - val_loss: 3.8140\n",
"Epoch 6/1000\n",
" - 1s - loss: 2.2599 - val_loss: 3.2915\n",
"Epoch 7/1000\n",
" - 1s - loss: 1.9299 - val_loss: 1.3904\n",
"Epoch 8/1000\n",
" - 1s - loss: 3.6888 - val_loss: 3.7436\n",
"Epoch 9/1000\n",
" - 0s - loss: 10.4053 - val_loss: 6.9549\n",
"Epoch 10/1000\n",
" - 1s - loss: 9.4471 - val_loss: 9.7340\n",
"Epoch 11/1000\n",
" - 1s - loss: 7.1927 - val_loss: 5.2702\n",
"Epoch 12/1000\n",
" - 1s - loss: 2.2219 - val_loss: 1.7317\n",
"Epoch 13/1000\n",
" - 1s - loss: 0.6109 - val_loss: 0.1838\n",
"Epoch 14/1000\n",
" - 1s - loss: 0.5237 - val_loss: 0.7525\n",
"Epoch 15/1000\n",
" - 1s - loss: 0.7018 - val_loss: 0.6387\n",
"Epoch 16/1000\n",
" - 1s - loss: 0.6286 - val_loss: 0.3456\n",
"Epoch 17/1000\n",
" - 0s - loss: 1.0029 - val_loss: 0.6240\n",
"Epoch 18/1000\n",
" - 0s - loss: 1.0459 - val_loss: 1.0381\n",
"Epoch 19/1000\n",
" - 0s - loss: 1.1080 - val_loss: 1.3432\n",
"Epoch 20/1000\n",
" - 0s - loss: 1.7839 - val_loss: 0.8179\n",
"Epoch 21/1000\n",
" - 0s - loss: 4.5418 - val_loss: 1.0650\n",
"Epoch 22/1000\n",
" - 0s - loss: 7.9761 - val_loss: 5.5950\n",
"Epoch 23/1000\n",
" - 1s - loss: 1.9594 - val_loss: 1.6370\n",
"\n",
"Epoch 00023: ReduceLROnPlateau reducing learning rate to 0.010000000149.\n",
"Epoch 24/1000\n",
" - 1s - loss: 0.2774 - val_loss: 0.1575\n",
"Epoch 25/1000\n",
" - 1s - loss: 0.1945 - val_loss: 0.1247\n",
"Epoch 26/1000\n",
" - 1s - loss: 0.1626 - val_loss: 0.1484\n",
"Epoch 27/1000\n",
" - 1s - loss: 0.2114 - val_loss: 0.0803\n",
"Epoch 28/1000\n",
" - 1s - loss: 0.2154 - val_loss: 0.0957\n",
"Epoch 29/1000\n",
" - 0s - loss: 0.2935 - val_loss: 0.3342\n",
"Epoch 30/1000\n",
" - 0s - loss: 0.2423 - val_loss: 0.7723\n",
"Epoch 31/1000\n",
" - 1s - loss: 0.2901 - val_loss: 0.0723\n",
"Epoch 32/1000\n",
" - 0s - loss: 0.2627 - val_loss: 0.1582\n",
"Epoch 33/1000\n",
" - 0s - loss: 0.3267 - val_loss: 0.6098\n",
"Epoch 34/1000\n",
" - 0s - loss: 0.3307 - val_loss: 0.2420\n",
"Epoch 35/1000\n",
" - 1s - loss: 0.2961 - val_loss: 0.3767\n",
"Epoch 36/1000\n",
" - 1s - loss: 0.3996 - val_loss: 1.2126\n",
"Epoch 37/1000\n",
" - 1s - loss: 0.3267 - val_loss: 0.0422\n",
"Epoch 38/1000\n",
" - 1s - loss: 0.3453 - val_loss: 0.9478\n",
"Epoch 39/1000\n",
" - 1s - loss: 0.3346 - val_loss: 0.0480\n",
"Epoch 40/1000\n",
" - 1s - loss: 0.2920 - val_loss: 0.1970\n",
"Epoch 41/1000\n",
" - 1s - loss: 0.3187 - val_loss: 0.6392\n",
"Epoch 42/1000\n",
" - 1s - loss: 0.2981 - val_loss: 0.3982\n",
"Epoch 43/1000\n",
" - 1s - loss: 0.2875 - val_loss: 0.2427\n",
"Epoch 44/1000\n",
" - 1s - loss: 0.3193 - val_loss: 0.3648\n",
"Epoch 45/1000\n",
" - 1s - loss: 0.2251 - val_loss: 0.1762\n",
"Epoch 46/1000\n",
" - 1s - loss: 0.3825 - val_loss: 0.7760\n",
"Epoch 47/1000\n",
" - 0s - loss: 0.4387 - val_loss: 0.3939\n",
"\n",
"Epoch 00047: ReduceLROnPlateau reducing learning rate to 0.000999999977648.\n",
"Epoch 48/1000\n",
" - 1s - loss: 0.0645 - val_loss: 0.0457\n",
"Epoch 49/1000\n",
" - 0s - loss: 0.0279 - val_loss: 0.0489\n",
"Epoch 50/1000\n",
" - 1s - loss: 0.0320 - val_loss: 0.0128\n",
"Epoch 51/1000\n",
" - 0s - loss: 0.0248 - val_loss: 0.0150\n",
"Epoch 52/1000\n",
" - 1s - loss: 0.0343 - val_loss: 0.0166\n",
"Epoch 53/1000\n",
" - 1s - loss: 0.0298 - val_loss: 0.0142\n",
"Epoch 54/1000\n",
" - 1s - loss: 0.0334 - val_loss: 0.0489\n",
"Epoch 55/1000\n",
" - 1s - loss: 0.0364 - val_loss: 0.0499\n",
"Epoch 56/1000\n",
" - 1s - loss: 0.0316 - val_loss: 0.0138\n",
"Epoch 57/1000\n",
" - 0s - loss: 0.0377 - val_loss: 0.0401\n",
"Epoch 58/1000\n",
" - 1s - loss: 0.0324 - val_loss: 0.0121\n",
"Epoch 59/1000\n",
" - 1s - loss: 0.0270 - val_loss: 0.0115\n",
"Epoch 60/1000\n",
" - 0s - loss: 0.0269 - val_loss: 0.0458\n",
"Epoch 61/1000\n",
" - 0s - loss: 0.0355 - val_loss: 0.0144\n",
"Epoch 62/1000\n",
" - 1s - loss: 0.0228 - val_loss: 0.0209\n",
"Epoch 63/1000\n",
" - 1s - loss: 0.0321 - val_loss: 0.0161\n",
"Epoch 64/1000\n",
" - 1s - loss: 0.0259 - val_loss: 0.1069\n",
"Epoch 65/1000\n",
" - 1s - loss: 0.0317 - val_loss: 0.0375\n",
"Epoch 66/1000\n",
" - 1s - loss: 0.0322 - val_loss: 0.0086\n",
"Epoch 67/1000\n",
" - 1s - loss: 0.0288 - val_loss: 0.0105\n",
"Epoch 68/1000\n",
" - 1s - loss: 0.0258 - val_loss: 0.0757\n",
"Epoch 69/1000\n",
" - 1s - loss: 0.0338 - val_loss: 0.0222\n",
"Epoch 70/1000\n",
" - 1s - loss: 0.0296 - val_loss: 0.0211\n",
"Epoch 71/1000\n",
" - 1s - loss: 0.0310 - val_loss: 0.0212\n",
"Epoch 72/1000\n",
" - 1s - loss: 0.0286 - val_loss: 0.0107\n",
"Epoch 73/1000\n",
" - 1s - loss: 0.0271 - val_loss: 0.0161\n",
"Epoch 74/1000\n",
" - 1s - loss: 0.0337 - val_loss: 0.0131\n",
"Epoch 75/1000\n",
" - 1s - loss: 0.0294 - val_loss: 0.0693\n",
"Epoch 76/1000\n",
" - 1s - loss: 0.0224 - val_loss: 0.0291\n",
"\n",
"Epoch 00076: ReduceLROnPlateau reducing learning rate to 9.99999931082e-05.\n",
"Epoch 77/1000\n",
" - 1s - loss: 0.0043 - val_loss: 0.0020\n",
"Epoch 78/1000\n",
" - 1s - loss: 0.0024 - val_loss: 0.0019\n",
"Epoch 79/1000\n",
" - 0s - loss: 0.0032 - val_loss: 0.0091\n",
"Epoch 80/1000\n",
" - 1s - loss: 0.0032 - val_loss: 0.0039\n",
"Epoch 81/1000\n",
" - 0s - loss: 0.0029 - val_loss: 0.0067\n",
"Epoch 82/1000\n",
" - 1s - loss: 0.0036 - val_loss: 0.0041\n",
"Epoch 83/1000\n",
" - 1s - loss: 0.0037 - val_loss: 0.0028\n",
"Epoch 84/1000\n",
" - 1s - loss: 0.0034 - val_loss: 0.0042\n",
"Epoch 85/1000\n",
" - 1s - loss: 0.0039 - val_loss: 0.0038\n",
"Epoch 86/1000\n",
" - 1s - loss: 0.0030 - val_loss: 7.3419e-04\n",
"Epoch 87/1000\n",
" - 0s - loss: 0.0036 - val_loss: 0.0010\n",
"Epoch 88/1000\n",
" - 1s - loss: 0.0038 - val_loss: 0.0027\n",
"Epoch 89/1000\n",
" - 0s - loss: 0.0037 - val_loss: 0.0023\n",
"Epoch 90/1000\n",
" - 1s - loss: 0.0029 - val_loss: 0.0106\n",
"Epoch 91/1000\n",
" - 0s - loss: 0.0035 - val_loss: 0.0035\n",
"Epoch 92/1000\n",
" - 1s - loss: 0.0035 - val_loss: 0.0024\n",
"Epoch 93/1000\n",
" - 0s - loss: 0.0029 - val_loss: 0.0036\n",
"Epoch 94/1000\n",
" - 0s - loss: 0.0032 - val_loss: 0.0039\n",
"Epoch 95/1000\n",
" - 1s - loss: 0.0032 - val_loss: 0.0018\n",
"Epoch 96/1000\n",
" - 1s - loss: 0.0031 - val_loss: 0.0030\n",
"\n",
"Epoch 00096: ReduceLROnPlateau reducing learning rate to 9.99999901978e-06.\n",
"Epoch 97/1000\n",
" - 0s - loss: 6.5757e-04 - val_loss: 1.3222e-04\n",
"Epoch 98/1000\n",
" - 1s - loss: 3.5494e-04 - val_loss: 9.8179e-05\n",
"Epoch 99/1000\n",
" - 1s - loss: 3.3314e-04 - val_loss: 2.2509e-04\n",
"Epoch 100/1000\n",
" - 0s - loss: 3.2775e-04 - val_loss: 5.0473e-04\n",
"Epoch 101/1000\n",
" - 0s - loss: 2.4226e-04 - val_loss: 2.3533e-04\n",
"Epoch 102/1000\n",
" - 1s - loss: 2.8306e-04 - val_loss: 2.7044e-04\n",
"Epoch 103/1000\n",
" - 0s - loss: 3.7954e-04 - val_loss: 1.4866e-04\n",
"Epoch 104/1000\n",
" - 0s - loss: 2.8738e-04 - val_loss: 3.1966e-04\n",
"Epoch 105/1000\n",
" - 0s - loss: 3.9319e-04 - val_loss: 7.6511e-05\n",
"Epoch 106/1000\n",
" - 1s - loss: 2.9062e-04 - val_loss: 6.7954e-04\n",
"Epoch 107/1000\n",
" - 1s - loss: 3.6448e-04 - val_loss: 3.6411e-04\n",
"\n",
"Epoch 00107: ReduceLROnPlateau reducing learning rate to 9.99999883788e-07.\n",
"Epoch 108/1000\n",
" - 1s - loss: 4.7128e-05 - val_loss: 2.9301e-05\n",
"Epoch 109/1000\n",
" - 1s - loss: 2.3475e-05 - val_loss: 1.2173e-05\n",
"Epoch 110/1000\n",
" - 1s - loss: 3.2617e-05 - val_loss: 8.2297e-06\n",
"Epoch 111/1000\n",
" - 1s - loss: 3.3242e-05 - val_loss: 5.8362e-05\n",
"Epoch 112/1000\n",
" - 0s - loss: 3.0942e-05 - val_loss: 3.3017e-05\n",
"Epoch 113/1000\n",
" - 1s - loss: 3.6104e-05 - val_loss: 2.9936e-05\n",
"Epoch 114/1000\n",
" - 1s - loss: 2.6015e-05 - val_loss: 2.2729e-05\n",
"Epoch 115/1000\n",
" - 1s - loss: 2.8887e-05 - val_loss: 1.3047e-05\n",
"Epoch 116/1000\n",
" - 1s - loss: 4.4149e-05 - val_loss: 3.4975e-05\n",
"Epoch 117/1000\n",
" - 1s - loss: 3.6987e-05 - val_loss: 2.5734e-05\n",
"Epoch 118/1000\n",
" - 0s - loss: 4.0498e-05 - val_loss: 6.3176e-05\n",
"\n",
"Epoch 00118: ReduceLROnPlateau reducing learning rate to 9.99999883788e-08.\n",
"Epoch 119/1000\n",
" - 1s - loss: 8.5613e-06 - val_loss: 4.5268e-06\n",
"Epoch 120/1000\n",
" - 0s - loss: 4.6026e-06 - val_loss: 4.5268e-06\n",
"Epoch 121/1000\n",
" - 1s - loss: 6.7542e-06 - val_loss: 6.3893e-06\n",
"Epoch 122/1000\n",
" - 1s - loss: 5.4063e-06 - val_loss: 9.2913e-06\n",
"Epoch 123/1000\n",
" - 1s - loss: 7.0408e-06 - val_loss: 8.7770e-06\n",
"Epoch 124/1000\n",
" - 1s - loss: 6.5823e-06 - val_loss: 8.0083e-06\n",
"Epoch 125/1000\n",
" - 1s - loss: 5.2226e-06 - val_loss: 4.1434e-06\n",
"Epoch 126/1000\n",
" - 1s - loss: 6.4519e-06 - val_loss: 1.6645e-05\n",
"Epoch 127/1000\n",
" - 1s - loss: 7.5108e-06 - val_loss: 4.5268e-06\n",
"Epoch 128/1000\n",
" - 0s - loss: 6.9363e-06 - val_loss: 4.5268e-06\n",
"\n",
"Epoch 00128: ReduceLROnPlateau reducing learning rate to 9.99999869578e-09.\n",
"Epoch 129/1000\n",
" - 0s - loss: 4.5387e-06 - val_loss: 4.5268e-06\n",
"Epoch 130/1000\n",
" - 0s - loss: 4.5387e-06 - val_loss: 4.5268e-06\n",
"Epoch 131/1000\n",
" - 0s - loss: 4.5387e-06 - val_loss: 4.5268e-06\n",
"Epoch 132/1000\n",
" - 0s - loss: 4.5387e-06 - val_loss: 4.5268e-06\n",
"Epoch 133/1000\n",
" - 0s - loss: 4.5387e-06 - val_loss: 4.5268e-06\n",
"Epoch 134/1000\n",
" - 1s - loss: 4.5387e-06 - val_loss: 4.5268e-06\n",
"Epoch 135/1000\n",
" - 1s - loss: 4.5387e-06 - val_loss: 4.5268e-06\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 136/1000\n",
" - 1s - loss: 4.5387e-06 - val_loss: 4.5268e-06\n",
"Epoch 137/1000\n",
" - 1s - loss: 4.5387e-06 - val_loss: 4.5268e-06\n",
"Epoch 138/1000\n",
" - 1s - loss: 4.5387e-06 - val_loss: 4.5268e-06\n",
"\n",
"Epoch 00138: ReduceLROnPlateau reducing learning rate to 9.99999905105e-10.\n",
"Epoch 139/1000\n",
" - 1s - loss: 4.5387e-06 - val_loss: 4.5268e-06\n",
"Epoch 140/1000\n",
" - 1s - loss: 4.5387e-06 - val_loss: 4.5268e-06\n",
"Epoch 141/1000\n",
" - 1s - loss: 4.5387e-06 - val_loss: 4.5268e-06\n",
"Epoch 142/1000\n",
" - 1s - loss: 4.5387e-06 - val_loss: 4.5268e-06\n",
"Epoch 143/1000\n",
" - 1s - loss: 4.5387e-06 - val_loss: 4.5268e-06\n",
"Epoch 144/1000\n",
" - 1s - loss: 4.5387e-06 - val_loss: 4.5268e-06\n",
"Epoch 145/1000\n",
" - 1s - loss: 4.5387e-06 - val_loss: 4.5268e-06\n"
]
},
{
"data": {
"text/plain": [
"<keras.callbacks.History at 0x135266690>"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.fit(alphas, xts, batch_size=1, epochs=1000, validation_split=0.5, verbose=2, \n",
" callbacks=[keras.callbacks.EarlyStopping(patience=20),\n",
" keras.callbacks.ReduceLROnPlateau(patience=10, verbose=1)])"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5,1,'Error plot')"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(alphas, xts - np.reshape(model.predict(alphas), [N]), 'ro')\n",
"plt.title('Error plot')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.15"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment