Skip to content

Instantly share code, notes, and snippets.

@EyeBool
Created June 21, 2018 14:58
Show Gist options
  • Save EyeBool/a015b6fb4f1d95cc83695cb796023cdb to your computer and use it in GitHub Desktop.
Save EyeBool/a015b6fb4f1d95cc83695cb796023cdb to your computer and use it in GitHub Desktop.
Sine Neural Network Approximation
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Sine NN Approximation"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Anaconda3\\lib\\site-packages\\h5py\\__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.\n",
" from ._conv import register_converters as _register_converters\n",
"Using TensorFlow backend.\n"
]
}
],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"\n",
"from keras.layers import Input, Dense\n",
"from keras.models import Sequential"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Data (Sine Function)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x286e1887630>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"X_train = np.linspace(0, 2 * np.pi, 10000)\n",
"y_train = np.sin(X_train)\n",
"\n",
"plt.plot(X_train, y_train)\n",
"\n",
"plt.xlabel('x')\n",
"plt.ylabel('\\sin(x)')\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Training NN (tanh)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"tanh_approx = Sequential()\n",
"\n",
"tanh_approx.add(Dense(10, input_shape=(1,), activation='relu'))\n",
"tanh_approx.add(Dense(10, activation='relu'))\n",
"tanh_approx.add(Dense(1, activation='tanh'))\n",
"\n",
"tanh_approx.compile(loss='mse', optimizer='adam')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/200\n",
"10000/10000 [==============================] - 0s 20us/step - loss: 0.5728\n",
"Epoch 2/200\n",
"10000/10000 [==============================] - 0s 23us/step - loss: 0.3617\n",
"Epoch 3/200\n",
"10000/10000 [==============================] - 0s 14us/step - loss: 0.2766\n",
"Epoch 4/200\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.2164\n",
"Epoch 5/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.1748\n",
"Epoch 6/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.1481\n",
"Epoch 7/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.1299\n",
"Epoch 8/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.1183\n",
"Epoch 9/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.1104\n",
"Epoch 10/200\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.1049\n",
"Epoch 11/200\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.1008\n",
"Epoch 12/200\n",
"10000/10000 [==============================] - 0s 16us/step - loss: 0.0977\n",
"Epoch 13/200\n",
"10000/10000 [==============================] - 0s 12us/step - loss: 0.0952\n",
"Epoch 14/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.0930\n",
"Epoch 15/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0911\n",
"Epoch 16/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.0892\n",
"Epoch 17/200\n",
"10000/10000 [==============================] - 0s 16us/step - loss: 0.0874\n",
"Epoch 18/200\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.0853\n",
"Epoch 19/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.0831\n",
"Epoch 20/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0806\n",
"Epoch 21/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0777\n",
"Epoch 22/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0746\n",
"Epoch 23/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0712\n",
"Epoch 24/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0678\n",
"Epoch 25/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0643\n",
"Epoch 26/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0612\n",
"Epoch 27/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.0582\n",
"Epoch 28/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0555\n",
"Epoch 29/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.0532\n",
"Epoch 30/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.0511\n",
"Epoch 31/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0492\n",
"Epoch 32/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.0476\n",
"Epoch 33/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0461\n",
"Epoch 34/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0448\n",
"Epoch 35/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0437\n",
"Epoch 36/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0427\n",
"Epoch 37/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0418\n",
"Epoch 38/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0411\n",
"Epoch 39/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0404\n",
"Epoch 40/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.0398\n",
"Epoch 41/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0392\n",
"Epoch 42/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0386\n",
"Epoch 43/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0381\n",
"Epoch 44/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0376\n",
"Epoch 45/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.0372\n",
"Epoch 46/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.0367\n",
"Epoch 47/200\n",
"10000/10000 [==============================] - 0s 20us/step - loss: 0.0362\n",
"Epoch 48/200\n",
"10000/10000 [==============================] - 0s 13us/step - loss: 0.0357\n",
"Epoch 49/200\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.0352\n",
"Epoch 50/200\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.0347\n",
"Epoch 51/200\n",
"10000/10000 [==============================] - 0s 12us/step - loss: 0.0342\n",
"Epoch 52/200\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.0337\n",
"Epoch 53/200\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.0330\n",
"Epoch 54/200\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.0324\n",
"Epoch 55/200\n",
"10000/10000 [==============================] - 0s 19us/step - loss: 0.0317\n",
"Epoch 56/200\n",
"10000/10000 [==============================] - 0s 13us/step - loss: 0.0310\n",
"Epoch 57/200\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.0303\n",
"Epoch 58/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.0295\n",
"Epoch 59/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.0289\n",
"Epoch 60/200\n",
"10000/10000 [==============================] - 0s 14us/step - loss: 0.0280\n",
"Epoch 61/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.0274\n",
"Epoch 62/200\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.0262\n",
"Epoch 63/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.0252\n",
"Epoch 64/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0241\n",
"Epoch 65/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0232\n",
"Epoch 66/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.0222\n",
"Epoch 67/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.0211\n",
"Epoch 68/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0200\n",
"Epoch 69/200\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.0188\n",
"Epoch 70/200\n",
"10000/10000 [==============================] - 0s 21us/step - loss: 0.0177\n",
"Epoch 71/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.0166\n",
"Epoch 72/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.0155\n",
"Epoch 73/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0143\n",
"Epoch 74/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0132\n",
"Epoch 75/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0121\n",
"Epoch 76/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0111\n",
"Epoch 77/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0103\n",
"Epoch 78/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0094\n",
"Epoch 79/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0086\n",
"Epoch 80/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.0078\n",
"Epoch 81/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0072\n",
"Epoch 82/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0066\n",
"Epoch 83/200\n",
"10000/10000 [==============================] - 0s 20us/step - loss: 0.0060\n",
"Epoch 84/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.0055\n",
"Epoch 85/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.0051\n",
"Epoch 86/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0047\n",
"Epoch 87/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0043\n",
"Epoch 88/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0040\n",
"Epoch 89/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0037\n",
"Epoch 90/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.0034\n",
"Epoch 91/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0032\n",
"Epoch 92/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0029\n",
"Epoch 93/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0027\n",
"Epoch 94/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0026\n",
"Epoch 95/200\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0024\n",
"Epoch 96/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0022\n",
"Epoch 97/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0021\n",
"Epoch 98/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0020\n",
"Epoch 99/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0019\n",
"Epoch 100/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.0018\n",
"Epoch 101/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0017\n",
"Epoch 102/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0016\n",
"Epoch 103/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0015\n",
"Epoch 104/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.0014\n",
"Epoch 105/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0014\n",
"Epoch 106/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0013\n",
"Epoch 107/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0013\n",
"Epoch 108/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0013\n",
"Epoch 109/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.0012\n",
"Epoch 110/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0012\n",
"Epoch 111/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0011\n",
"Epoch 112/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0011\n",
"Epoch 113/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0011\n",
"Epoch 114/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0011\n",
"Epoch 115/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0010\n",
"Epoch 116/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0010\n",
"Epoch 117/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 9.9528e-04\n",
"Epoch 118/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 9.8340e-04\n",
"Epoch 119/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0010\n",
"Epoch 120/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.0010\n",
"Epoch 121/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 9.3637e-04\n",
"Epoch 122/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 9.5688e-04\n",
"Epoch 123/200\n",
"10000/10000 [==============================] - 0s 7us/step - loss: 9.2418e-04\n",
"Epoch 124/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 9.1618e-04\n",
"Epoch 125/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 9.1398e-04\n",
"Epoch 126/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 9.0962e-04\n",
"Epoch 127/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 9.2880e-04\n",
"Epoch 128/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 9.0152e-04\n",
"Epoch 129/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 9.1046e-04\n",
"Epoch 130/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 9.2531e-04\n",
"Epoch 131/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 9.0482e-04\n",
"Epoch 132/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 8.7701e-04\n",
"Epoch 133/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 9.0400e-04\n",
"Epoch 134/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 8.9793e-04\n",
"Epoch 135/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 8.6375e-04\n",
"Epoch 136/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 8.6167e-04\n",
"Epoch 137/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 8.5921e-04\n",
"Epoch 138/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 8.4984e-04\n",
"Epoch 139/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 8.5170e-04\n",
"Epoch 140/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 8.5683e-04\n",
"Epoch 141/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 8.5612e-04\n",
"Epoch 142/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 8.5011e-04\n",
"Epoch 143/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 8.5185e-04\n",
"Epoch 144/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 8.3434e-04\n",
"Epoch 145/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 8.4353e-04\n",
"Epoch 146/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 8.5707e-04\n",
"Epoch 147/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 8.3152e-04\n",
"Epoch 148/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 8.2961e-04\n",
"Epoch 149/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 8.4411e-04\n",
"Epoch 150/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 8.3339e-04\n",
"Epoch 151/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 8.3463e-04\n",
"Epoch 152/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 8.3353e-04\n",
"Epoch 153/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 8.4212e-04\n",
"Epoch 154/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 8.8180e-04\n",
"Epoch 155/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 8.3501e-04\n",
"Epoch 156/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 8.5700e-04\n",
"Epoch 157/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 8.2246e-04\n",
"Epoch 158/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 8.5474e-04\n",
"Epoch 159/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 8.2928e-04\n",
"Epoch 160/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 8.1985e-04\n",
"Epoch 161/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 8.3128e-04\n",
"Epoch 162/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 8.6472e-04\n",
"Epoch 163/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 8.3689e-04\n",
"Epoch 164/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 8.1084e-04\n",
"Epoch 165/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 8.2628e-04\n",
"Epoch 166/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 8.3980e-04\n",
"Epoch 167/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 8.4671e-04\n",
"Epoch 168/200\n",
"10000/10000 [==============================] - 0s 14us/step - loss: 8.5124e-04\n",
"Epoch 169/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 8.0737e-04\n",
"Epoch 170/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 8.3701e-04\n",
"Epoch 171/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 8.1876e-04\n",
"Epoch 172/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 8.4450e-04\n",
"Epoch 173/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 8.1008e-04\n",
"Epoch 174/200\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 8.6692e-04\n",
"Epoch 175/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 8.4114e-04\n",
"Epoch 176/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 8.3414e-04\n",
"Epoch 177/200\n",
"10000/10000 [==============================] - 0s 23us/step - loss: 8.0723e-04\n",
"Epoch 178/200\n",
"10000/10000 [==============================] - 0s 12us/step - loss: 8.0814e-04\n",
"Epoch 179/200\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 8.0892e-04\n",
"Epoch 180/200\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 8.0713e-04\n",
"Epoch 181/200\n",
"10000/10000 [==============================] - 0s 14us/step - loss: 8.4911e-04\n",
"Epoch 182/200\n",
"10000/10000 [==============================] - 0s 12us/step - loss: 8.1687e-04\n",
"Epoch 183/200\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 8.1374e-04\n",
"Epoch 184/200\n",
"10000/10000 [==============================] - 0s 22us/step - loss: 8.6901e-04\n",
"Epoch 185/200\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"10000/10000 [==============================] - 0s 17us/step - loss: 8.2434e-04\n",
"Epoch 186/200\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 8.1117e-04\n",
"Epoch 187/200\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 8.2916e-04\n",
"Epoch 188/200\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 8.0325e-04\n",
"Epoch 189/200\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 8.0986e-04\n",
"Epoch 190/200\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 8.2168e-04\n",
"Epoch 191/200\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 8.3695e-04\n",
"Epoch 192/200\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 8.3726e-04\n",
"Epoch 193/200\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 8.4510e-04\n",
"Epoch 194/200\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 8.3435e-04\n",
"Epoch 195/200\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 7.9759e-04\n",
"Epoch 196/200\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 8.2633e-04\n",
"Epoch 197/200\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 8.1838e-04\n",
"Epoch 198/200\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 8.0894e-04\n",
"Epoch 199/200\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 8.1621e-04\n",
"Epoch 200/200\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 8.0566e-04\n"
]
}
],
"source": [
"tanh_history = tanh_approx.fit(X_train, y_train,\n",
" epochs=200,\n",
" batch_size = 256,\n",
" shuffle=True)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x286e3e6d4e0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(tanh_history.history['loss'])\n",
"\n",
"plt.title(\"tanh approx. MSE\")\n",
"plt.xlabel('epoch')\n",
"plt.ylabel('MSE loss')\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x286e3ef3390>]"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x286e3ecd748>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"x_test = np.linspace(-3 * np.pi, 3 * np.pi, 103)\n",
"y_test = tanh_approx.predict(x_test)\n",
"\n",
"plt.plot(x_test, y_test)\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Training NN (sigmoid)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"sig_approx = Sequential()\n",
"\n",
"sig_approx.add(Dense(10, input_shape=(1,), activation='relu'))\n",
"sig_approx.add(Dense(10, activation='relu'))\n",
"sig_approx.add(Dense(1, activation='sigmoid'))\n",
"\n",
"sig_approx.compile(loss='mse', optimizer='adam')"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/300\n",
"10000/10000 [==============================] - 1s 80us/step - loss: 0.4348\n",
"Epoch 2/300\n",
"10000/10000 [==============================] - 0s 16us/step - loss: 0.4073\n",
"Epoch 3/300\n",
"10000/10000 [==============================] - 0s 12us/step - loss: 0.3979\n",
"Epoch 4/300\n",
"10000/10000 [==============================] - 0s 20us/step - loss: 0.3876\n",
"Epoch 5/300\n",
"10000/10000 [==============================] - 0s 19us/step - loss: 0.3764\n",
"Epoch 6/300\n",
"10000/10000 [==============================] - 0s 12us/step - loss: 0.3647\n",
"Epoch 7/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.3527\n",
"Epoch 8/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.3406\n",
"Epoch 9/300\n",
"10000/10000 [==============================] - 0s 27us/step - loss: 0.3281\n",
"Epoch 10/300\n",
"10000/10000 [==============================] - 1s 55us/step - loss: 0.3157\n",
"Epoch 11/300\n",
"10000/10000 [==============================] - 0s 47us/step - loss: 0.3037\n",
"Epoch 12/300\n",
"10000/10000 [==============================] - 0s 29us/step - loss: 0.2929\n",
"Epoch 13/300\n",
"10000/10000 [==============================] - 0s 27us/step - loss: 0.2838\n",
"Epoch 14/300\n",
"10000/10000 [==============================] - 0s 27us/step - loss: 0.2764\n",
"Epoch 15/300\n",
"10000/10000 [==============================] - 0s 26us/step - loss: 0.2707\n",
"Epoch 16/300\n",
"10000/10000 [==============================] - 0s 18us/step - loss: 0.2663\n",
"Epoch 17/300\n",
"10000/10000 [==============================] - 0s 16us/step - loss: 0.2631\n",
"Epoch 18/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.2606\n",
"Epoch 19/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.2588\n",
"Epoch 20/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.2573\n",
"Epoch 21/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.2562\n",
"Epoch 22/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.2554\n",
"Epoch 23/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2547\n",
"Epoch 24/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.2541\n",
"Epoch 25/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.2537\n",
"Epoch 26/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.2533\n",
"Epoch 27/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2530\n",
"Epoch 28/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.2528\n",
"Epoch 29/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2526\n",
"Epoch 30/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2524\n",
"Epoch 31/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2522\n",
"Epoch 32/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.2521\n",
"Epoch 33/300\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.2520\n",
"Epoch 34/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2519\n",
"Epoch 35/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2519\n",
"Epoch 36/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2518\n",
"Epoch 37/300\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.2518\n",
"Epoch 38/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.2517\n",
"Epoch 39/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.2517\n",
"Epoch 40/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2516\n",
"Epoch 41/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2516\n",
"Epoch 42/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2516\n",
"Epoch 43/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.2516\n",
"Epoch 44/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.2516\n",
"Epoch 45/300\n",
"10000/10000 [==============================] - 0s 13us/step - loss: 0.2515\n",
"Epoch 46/300\n",
"10000/10000 [==============================] - 0s 15us/step - loss: 0.2515\n",
"Epoch 47/300\n",
"10000/10000 [==============================] - 0s 13us/step - loss: 0.2515\n",
"Epoch 48/300\n",
"10000/10000 [==============================] - 0s 45us/step - loss: 0.2515\n",
"Epoch 49/300\n",
"10000/10000 [==============================] - 0s 23us/step - loss: 0.2515\n",
"Epoch 50/300\n",
"10000/10000 [==============================] - 0s 35us/step - loss: 0.2515\n",
"Epoch 51/300\n",
"10000/10000 [==============================] - 2s 161us/step - loss: 0.2515\n",
"Epoch 52/300\n",
"10000/10000 [==============================] - 0s 29us/step - loss: 0.2514\n",
"Epoch 53/300\n",
"10000/10000 [==============================] - 0s 26us/step - loss: 0.2514\n",
"Epoch 54/300\n",
"10000/10000 [==============================] - 5s 512us/step - loss: 0.2514 0s - loss:\n",
"Epoch 55/300\n",
"10000/10000 [==============================] - 0s 39us/step - loss: 0.2514\n",
"Epoch 56/300\n",
"10000/10000 [==============================] - 1s 66us/step - loss: 0.2514: 0s - loss: 0.25 - ETA: 0s - loss: 0.2\n",
"Epoch 57/300\n",
"10000/10000 [==============================] - ETA: 0s - loss: 0.251 - 0s 42us/step - loss: 0.2514\n",
"Epoch 58/300\n",
"10000/10000 [==============================] - 1s 73us/step - loss: 0.2514\n",
"Epoch 59/300\n",
"10000/10000 [==============================] - 0s 32us/step - loss: 0.2514\n",
"Epoch 60/300\n",
"10000/10000 [==============================] - 0s 24us/step - loss: 0.2514\n",
"Epoch 61/300\n",
"10000/10000 [==============================] - 0s 19us/step - loss: 0.2514\n",
"Epoch 62/300\n",
"10000/10000 [==============================] - ETA: 0s - loss: 0.252 - 0s 34us/step - loss: 0.2514\n",
"Epoch 63/300\n",
"10000/10000 [==============================] - 0s 25us/step - loss: 0.2514\n",
"Epoch 64/300\n",
"10000/10000 [==============================] - 0s 31us/step - loss: 0.2514\n",
"Epoch 65/300\n",
"10000/10000 [==============================] - 0s 26us/step - loss: 0.2514\n",
"Epoch 66/300\n",
"10000/10000 [==============================] - 0s 21us/step - loss: 0.2514\n",
"Epoch 67/300\n",
"10000/10000 [==============================] - 0s 17us/step - loss: 0.2514\n",
"Epoch 68/300\n",
"10000/10000 [==============================] - 0s 14us/step - loss: 0.2514\n",
"Epoch 69/300\n",
"10000/10000 [==============================] - 0s 15us/step - loss: 0.2514\n",
"Epoch 70/300\n",
"10000/10000 [==============================] - 0s 36us/step - loss: 0.2514\n",
"Epoch 71/300\n",
"10000/10000 [==============================] - 0s 15us/step - loss: 0.2514\n",
"Epoch 72/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.2514\n",
"Epoch 73/300\n",
"10000/10000 [==============================] - 0s 31us/step - loss: 0.2514\n",
"Epoch 74/300\n",
"10000/10000 [==============================] - 0s 13us/step - loss: 0.2514\n",
"Epoch 75/300\n",
"10000/10000 [==============================] - 0s 15us/step - loss: 0.2514\n",
"Epoch 76/300\n",
"10000/10000 [==============================] - 0s 12us/step - loss: 0.2514\n",
"Epoch 77/300\n",
"10000/10000 [==============================] - 0s 24us/step - loss: 0.2514\n",
"Epoch 78/300\n",
"10000/10000 [==============================] - 0s 21us/step - loss: 0.2514\n",
"Epoch 79/300\n",
"10000/10000 [==============================] - 0s 14us/step - loss: 0.2513\n",
"Epoch 80/300\n",
"10000/10000 [==============================] - 0s 24us/step - loss: 0.2513\n",
"Epoch 81/300\n",
"10000/10000 [==============================] - 0s 36us/step - loss: 0.2513: 0s - loss: 0.\n",
"Epoch 82/300\n",
"10000/10000 [==============================] - 0s 15us/step - loss: 0.2513\n",
"Epoch 83/300\n",
"10000/10000 [==============================] - 0s 23us/step - loss: 0.2512\n",
"Epoch 84/300\n",
"10000/10000 [==============================] - 1s 67us/step - loss: 0.2510: 0s - loss\n",
"Epoch 85/300\n",
"10000/10000 [==============================] - 0s 47us/step - loss: 0.2510\n",
"Epoch 86/300\n",
"10000/10000 [==============================] - 0s 36us/step - loss: 0.2509\n",
"Epoch 87/300\n",
"10000/10000 [==============================] - 0s 34us/step - loss: 0.2509\n",
"Epoch 88/300\n",
"10000/10000 [==============================] - 0s 41us/step - loss: 0.2509\n",
"Epoch 89/300\n",
"10000/10000 [==============================] - 0s 31us/step - loss: 0.2509\n",
"Epoch 90/300\n",
"10000/10000 [==============================] - 1s 125us/step - loss: 0.2509 2s - los\n",
"Epoch 91/300\n",
"10000/10000 [==============================] - 0s 40us/step - loss: 0.2508\n",
"Epoch 92/300\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"10000/10000 [==============================] - 0s 27us/step - loss: 0.2508\n",
"Epoch 93/300\n",
"10000/10000 [==============================] - 0s 37us/step - loss: 0.2508\n",
"Epoch 94/300\n",
"10000/10000 [==============================] - 0s 37us/step - loss: 0.2508\n",
"Epoch 95/300\n",
"10000/10000 [==============================] - 0s 33us/step - loss: 0.2508\n",
"Epoch 96/300\n",
"10000/10000 [==============================] - 0s 22us/step - loss: 0.2508\n",
"Epoch 97/300\n",
"10000/10000 [==============================] - 0s 30us/step - loss: 0.2508\n",
"Epoch 98/300\n",
"10000/10000 [==============================] - 0s 15us/step - loss: 0.2508\n",
"Epoch 99/300\n",
"10000/10000 [==============================] - 0s 14us/step - loss: 0.2508\n",
"Epoch 100/300\n",
"10000/10000 [==============================] - 0s 12us/step - loss: 0.2508\n",
"Epoch 101/300\n",
"10000/10000 [==============================] - 0s 10us/step - loss: 0.2508\n",
"Epoch 102/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.2508\n",
"Epoch 103/300\n",
"10000/10000 [==============================] - 0s 32us/step - loss: 0.2508\n",
"Epoch 104/300\n",
"10000/10000 [==============================] - 0s 26us/step - loss: 0.2508: 0s - loss: 0.25\n",
"Epoch 105/300\n",
"10000/10000 [==============================] - 0s 18us/step - loss: 0.2507\n",
"Epoch 106/300\n",
"10000/10000 [==============================] - 0s 46us/step - loss: 0.2507\n",
"Epoch 107/300\n",
"10000/10000 [==============================] - 0s 14us/step - loss: 0.2507\n",
"Epoch 108/300\n",
"10000/10000 [==============================] - 0s 15us/step - loss: 0.2507\n",
"Epoch 109/300\n",
"10000/10000 [==============================] - 0s 13us/step - loss: 0.2507\n",
"Epoch 110/300\n",
"10000/10000 [==============================] - 0s 13us/step - loss: 0.2507\n",
"Epoch 111/300\n",
"10000/10000 [==============================] - 0s 12us/step - loss: 0.2507\n",
"Epoch 112/300\n",
"10000/10000 [==============================] - 0s 10us/step - loss: 0.2507\n",
"Epoch 113/300\n",
"10000/10000 [==============================] - 0s 22us/step - loss: 0.2507\n",
"Epoch 114/300\n",
"10000/10000 [==============================] - 1s 57us/step - loss: 0.2507\n",
"Epoch 115/300\n",
"10000/10000 [==============================] - 0s 14us/step - loss: 0.2507\n",
"Epoch 116/300\n",
"10000/10000 [==============================] - 0s 13us/step - loss: 0.2507\n",
"Epoch 117/300\n",
"10000/10000 [==============================] - 0s 41us/step - loss: 0.2507: 0s - loss: 0. - ETA: 0s - loss: 0.25\n",
"Epoch 118/300\n",
"10000/10000 [==============================] - 0s 22us/step - loss: 0.2507\n",
"Epoch 119/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.2507\n",
"Epoch 120/300\n",
"10000/10000 [==============================] - 0s 34us/step - loss: 0.2506\n",
"Epoch 121/300\n",
"10000/10000 [==============================] - 0s 18us/step - loss: 0.2506\n",
"Epoch 122/300\n",
"10000/10000 [==============================] - 0s 38us/step - loss: 0.2506\n",
"Epoch 123/300\n",
"10000/10000 [==============================] - 0s 24us/step - loss: 0.2506\n",
"Epoch 124/300\n",
"10000/10000 [==============================] - 0s 21us/step - loss: 0.2506\n",
"Epoch 125/300\n",
"10000/10000 [==============================] - 0s 43us/step - loss: 0.2506\n",
"Epoch 126/300\n",
"10000/10000 [==============================] - 1s 78us/step - loss: 0.2506\n",
"Epoch 127/300\n",
"10000/10000 [==============================] - 1s 62us/step - loss: 0.2506\n",
"Epoch 128/300\n",
"10000/10000 [==============================] - 0s 30us/step - loss: 0.2506\n",
"Epoch 129/300\n",
"10000/10000 [==============================] - 0s 46us/step - loss: 0.2506\n",
"Epoch 130/300\n",
"10000/10000 [==============================] - 0s 14us/step - loss: 0.2506\n",
"Epoch 131/300\n",
"10000/10000 [==============================] - 1s 64us/step - loss: 0.2506\n",
"Epoch 132/300\n",
"10000/10000 [==============================] - 0s 28us/step - loss: 0.2506\n",
"Epoch 133/300\n",
"10000/10000 [==============================] - 0s 20us/step - loss: 0.2505\n",
"Epoch 134/300\n",
"10000/10000 [==============================] - 0s 16us/step - loss: 0.2505\n",
"Epoch 135/300\n",
"10000/10000 [==============================] - 0s 40us/step - loss: 0.2505\n",
"Epoch 136/300\n",
"10000/10000 [==============================] - 0s 30us/step - loss: 0.2505\n",
"Epoch 137/300\n",
"10000/10000 [==============================] - 0s 17us/step - loss: 0.2505\n",
"Epoch 138/300\n",
"10000/10000 [==============================] - 0s 27us/step - loss: 0.2505\n",
"Epoch 139/300\n",
"10000/10000 [==============================] - 0s 20us/step - loss: 0.2505\n",
"Epoch 140/300\n",
"10000/10000 [==============================] - 0s 23us/step - loss: 0.2505\n",
"Epoch 141/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.2505\n",
"Epoch 142/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.2505\n",
"Epoch 143/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.2505\n",
"Epoch 144/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.2505\n",
"Epoch 145/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.2505\n",
"Epoch 146/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.2505\n",
"Epoch 147/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.2504\n",
"Epoch 148/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2504\n",
"Epoch 149/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.2504\n",
"Epoch 150/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.2504\n",
"Epoch 151/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.2504\n",
"Epoch 152/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.2504\n",
"Epoch 153/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.2504\n",
"Epoch 154/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.2504\n",
"Epoch 155/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.2504\n",
"Epoch 156/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.2504\n",
"Epoch 157/300\n",
"10000/10000 [==============================] - 0s 13us/step - loss: 0.2504\n",
"Epoch 158/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.2504\n",
"Epoch 159/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.2504\n",
"Epoch 160/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.2504\n",
"Epoch 161/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.2504\n",
"Epoch 162/300\n",
"10000/10000 [==============================] - 0s 13us/step - loss: 0.2503\n",
"Epoch 163/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.2503\n",
"Epoch 164/300\n",
"10000/10000 [==============================] - 0s 14us/step - loss: 0.2503\n",
"Epoch 165/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.2503\n",
"Epoch 166/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.2503\n",
"Epoch 167/300\n",
"10000/10000 [==============================] - 0s 13us/step - loss: 0.2503\n",
"Epoch 168/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.2503\n",
"Epoch 169/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.2503\n",
"Epoch 170/300\n",
"10000/10000 [==============================] - 0s 12us/step - loss: 0.2503\n",
"Epoch 171/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.2503\n",
"Epoch 172/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.2503\n",
"Epoch 173/300\n",
"10000/10000 [==============================] - 0s 13us/step - loss: 0.2503\n",
"Epoch 174/300\n",
"10000/10000 [==============================] - 0s 16us/step - loss: 0.2503\n",
"Epoch 175/300\n",
"10000/10000 [==============================] - 0s 23us/step - loss: 0.2503\n",
"Epoch 176/300\n",
"10000/10000 [==============================] - 0s 13us/step - loss: 0.2503\n",
"Epoch 177/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.2503\n",
"Epoch 178/300\n",
"10000/10000 [==============================] - 0s 13us/step - loss: 0.2503\n",
"Epoch 179/300\n",
"10000/10000 [==============================] - 0s 13us/step - loss: 0.2503\n",
"Epoch 180/300\n",
"10000/10000 [==============================] - 0s 14us/step - loss: 0.2503\n",
"Epoch 181/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.2502\n",
"Epoch 182/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.2502\n",
"Epoch 183/300\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"10000/10000 [==============================] - 0s 11us/step - loss: 0.2502\n",
"Epoch 184/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.2502\n",
"Epoch 185/300\n",
"10000/10000 [==============================] - 0s 13us/step - loss: 0.2502\n",
"Epoch 186/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.2502\n",
"Epoch 187/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.2502\n",
"Epoch 188/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.2502\n",
"Epoch 189/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.2502\n",
"Epoch 190/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.2502\n",
"Epoch 191/300\n",
"10000/10000 [==============================] - 0s 13us/step - loss: 0.2502\n",
"Epoch 192/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.2502\n",
"Epoch 193/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.2502\n",
"Epoch 194/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.2502\n",
"Epoch 195/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.2502\n",
"Epoch 196/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.2502\n",
"Epoch 197/300\n",
"10000/10000 [==============================] - 0s 12us/step - loss: 0.2502\n",
"Epoch 198/300\n",
"10000/10000 [==============================] - 0s 19us/step - loss: 0.2502\n",
"Epoch 199/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.2502\n",
"Epoch 200/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.2502\n",
"Epoch 201/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.2502\n",
"Epoch 202/300\n",
"10000/10000 [==============================] - 0s 13us/step - loss: 0.2502\n",
"Epoch 203/300\n",
"10000/10000 [==============================] - 0s 12us/step - loss: 0.2502\n",
"Epoch 204/300\n",
"10000/10000 [==============================] - 0s 20us/step - loss: 0.2502\n",
"Epoch 205/300\n",
"10000/10000 [==============================] - 0s 12us/step - loss: 0.2502\n",
"Epoch 206/300\n",
"10000/10000 [==============================] - 0s 17us/step - loss: 0.2502\n",
"Epoch 207/300\n",
"10000/10000 [==============================] - 0s 14us/step - loss: 0.2502\n",
"Epoch 208/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.2502\n",
"Epoch 209/300\n",
"10000/10000 [==============================] - 0s 14us/step - loss: 0.2502\n",
"Epoch 210/300\n",
"10000/10000 [==============================] - 0s 10us/step - loss: 0.2502\n",
"Epoch 211/300\n",
"10000/10000 [==============================] - 0s 10us/step - loss: 0.2502\n",
"Epoch 212/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.2502\n",
"Epoch 213/300\n",
"10000/10000 [==============================] - 0s 10us/step - loss: 0.2502\n",
"Epoch 214/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.2502\n",
"Epoch 215/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2501\n",
"Epoch 216/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.2501\n",
"Epoch 217/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.2501\n",
"Epoch 218/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2501\n",
"Epoch 219/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.2501\n",
"Epoch 220/300\n",
"10000/10000 [==============================] - 0s 14us/step - loss: 0.2501\n",
"Epoch 221/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.2501\n",
"Epoch 222/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.2501\n",
"Epoch 223/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2501\n",
"Epoch 224/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.2501\n",
"Epoch 225/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2501\n",
"Epoch 226/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.2501\n",
"Epoch 227/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.2501\n",
"Epoch 228/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2501\n",
"Epoch 229/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2501\n",
"Epoch 230/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.2501\n",
"Epoch 231/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.2501\n",
"Epoch 232/300\n",
"10000/10000 [==============================] - 0s 20us/step - loss: 0.2501\n",
"Epoch 233/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.2501\n",
"Epoch 234/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.2501\n",
"Epoch 235/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2501\n",
"Epoch 236/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.2501\n",
"Epoch 237/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.2501\n",
"Epoch 238/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.2501\n",
"Epoch 239/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.2501\n",
"Epoch 240/300\n",
"10000/10000 [==============================] - 0s 12us/step - loss: 0.2501\n",
"Epoch 241/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.2501\n",
"Epoch 242/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2501\n",
"Epoch 243/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.2501\n",
"Epoch 244/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2501\n",
"Epoch 245/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2501\n",
"Epoch 246/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2501\n",
"Epoch 247/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2501\n",
"Epoch 248/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2501\n",
"Epoch 249/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.2501\n",
"Epoch 250/300\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.2501\n",
"Epoch 251/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2501\n",
"Epoch 252/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.2501\n",
"Epoch 253/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.2501\n",
"Epoch 254/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2501\n",
"Epoch 255/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.2501\n",
"Epoch 256/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.2501\n",
"Epoch 257/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.2501\n",
"Epoch 258/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2501\n",
"Epoch 259/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.2501\n",
"Epoch 260/300\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.2501\n",
"Epoch 261/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2501\n",
"Epoch 262/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2501\n",
"Epoch 263/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2501\n",
"Epoch 264/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2501\n",
"Epoch 265/300\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.2501\n",
"Epoch 266/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2501\n",
"Epoch 267/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2501\n",
"Epoch 268/300\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.2501\n",
"Epoch 269/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2501\n",
"Epoch 270/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2501\n",
"Epoch 271/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.2501\n",
"Epoch 272/300\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.2501\n",
"Epoch 273/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2501\n",
"Epoch 274/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2501\n",
"Epoch 275/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2501\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 276/300\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.2501\n",
"Epoch 277/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.2501\n",
"Epoch 278/300\n",
"10000/10000 [==============================] - 0s 16us/step - loss: 0.2501\n",
"Epoch 279/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.2501\n",
"Epoch 280/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.2501\n",
"Epoch 281/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.2501\n",
"Epoch 282/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.2501\n",
"Epoch 283/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.2501\n",
"Epoch 284/300\n",
"10000/10000 [==============================] - ETA: 0s - loss: 0.251 - 0s 9us/step - loss: 0.2501\n",
"Epoch 285/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.2501\n",
"Epoch 286/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.2501\n",
"Epoch 287/300\n",
"10000/10000 [==============================] - 0s 16us/step - loss: 0.2501\n",
"Epoch 288/300\n",
"10000/10000 [==============================] - 0s 12us/step - loss: 0.2501\n",
"Epoch 289/300\n",
"10000/10000 [==============================] - 0s 12us/step - loss: 0.2501\n",
"Epoch 290/300\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.2501\n",
"Epoch 291/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2501\n",
"Epoch 292/300\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.2501\n",
"Epoch 293/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2501\n",
"Epoch 294/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2501\n",
"Epoch 295/300\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.2501\n",
"Epoch 296/300\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.2501\n",
"Epoch 297/300\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.2501\n",
"Epoch 298/300\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.2501\n",
"Epoch 299/300\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.2501\n",
"Epoch 300/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.2501\n"
]
}
],
"source": [
"sig_history = sig_approx.fit(X_train, y_train,\n",
" epochs=300,\n",
" batch_size = 256,\n",
" shuffle=True)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x286e42ab6d8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(sig_history.history['loss'])\n",
"\n",
"plt.title(\"sigmoid approx. MSE\")\n",
"plt.xlabel('epoch')\n",
"plt.ylabel('MSE loss')\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<function matplotlib.pyplot.show>"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x286e52c5588>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"x_test = np.linspace(-3 * np.pi, 3 * np.pi, 103)\n",
"y_test = sig_approx.predict(x_test)\n",
"\n",
"plt.plot(x_test, y_test)\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Training NN (relu)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"relu_approx = Sequential()\n",
"\n",
"relu_approx.add(Dense(10, input_shape=(1,), activation='relu'))\n",
"relu_approx.add(Dense(10, activation='relu'))\n",
"relu_approx.add(Dense(1, activation='relu'))\n",
"\n",
"relu_approx.compile(loss='mse', optimizer='adam')"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/300\n",
"10000/10000 [==============================] - 0s 30us/step - loss: 0.5000\n",
"Epoch 2/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.4999\n",
"Epoch 3/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.5000\n",
"Epoch 4/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.4999\n",
"Epoch 5/300\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.5000\n",
"Epoch 6/300\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.4999\n",
"Epoch 7/300\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.5000\n",
"Epoch 8/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.5000\n",
"Epoch 9/300\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.4999\n",
"Epoch 10/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.4999\n",
"Epoch 11/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.4999\n",
"Epoch 12/300\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.5000\n",
"Epoch 13/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.5000\n",
"Epoch 14/300\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.5000\n",
"Epoch 15/300\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.4999\n",
"Epoch 16/300\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.5000\n",
"Epoch 17/300\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.5000\n",
"Epoch 18/300\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.5000\n",
"Epoch 19/300\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.4999\n",
"Epoch 20/300\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.4999\n",
"Epoch 21/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.4999\n",
"Epoch 22/300\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.4999\n",
"Epoch 23/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.4999\n",
"Epoch 24/300\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.5000\n",
"Epoch 25/300\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.5000\n",
"Epoch 26/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.4999\n",
"Epoch 27/300\n",
"10000/10000 [==============================] - 0s 5us/step - loss: 0.5000\n",
"Epoch 28/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.4999\n",
"Epoch 29/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.5000\n",
"Epoch 30/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.4999\n",
"Epoch 31/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.5000\n",
"Epoch 32/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.4999\n",
"Epoch 33/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.4999\n",
"Epoch 34/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.4999\n",
"Epoch 35/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.4999\n",
"Epoch 36/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.5000\n",
"Epoch 37/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.5000\n",
"Epoch 38/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.5000\n",
"Epoch 39/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.4999\n",
"Epoch 40/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.5000\n",
"Epoch 41/300\n",
"10000/10000 [==============================] - 0s 16us/step - loss: 0.5000\n",
"Epoch 42/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.5000\n",
"Epoch 43/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.5000\n",
"Epoch 44/300\n",
"10000/10000 [==============================] - 0s 14us/step - loss: 0.5000\n",
"Epoch 45/300\n",
"10000/10000 [==============================] - 0s 22us/step - loss: 0.4999\n",
"Epoch 46/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.5000\n",
"Epoch 47/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.4999\n",
"Epoch 48/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.5000\n",
"Epoch 49/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.5000\n",
"Epoch 50/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.5000\n",
"Epoch 51/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.4999\n",
"Epoch 52/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.4999\n",
"Epoch 53/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.4999\n",
"Epoch 54/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.4999\n",
"Epoch 55/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.5000\n",
"Epoch 56/300\n",
"10000/10000 [==============================] - 0s 7us/step - loss: 0.4999\n",
"Epoch 57/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.5000\n",
"Epoch 58/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.4999\n",
"Epoch 59/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.5000\n",
"Epoch 60/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.4999\n",
"Epoch 61/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.5000\n",
"Epoch 62/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.4999\n",
"Epoch 63/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.5000\n",
"Epoch 64/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.4999\n",
"Epoch 65/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.4999\n",
"Epoch 66/300\n",
"10000/10000 [==============================] - 0s 15us/step - loss: 0.4999\n",
"Epoch 67/300\n",
"10000/10000 [==============================] - 0s 10us/step - loss: 0.4999\n",
"Epoch 68/300\n",
"10000/10000 [==============================] - 0s 13us/step - loss: 0.5000\n",
"Epoch 69/300\n",
"10000/10000 [==============================] - 0s 16us/step - loss: 0.4999\n",
"Epoch 70/300\n",
"10000/10000 [==============================] - 0s 13us/step - loss: 0.4999\n",
"Epoch 71/300\n",
"10000/10000 [==============================] - 0s 14us/step - loss: 0.4999\n",
"Epoch 72/300\n",
"10000/10000 [==============================] - 0s 17us/step - loss: 0.5000\n",
"Epoch 73/300\n",
"10000/10000 [==============================] - 0s 16us/step - loss: 0.5000\n",
"Epoch 74/300\n",
"10000/10000 [==============================] - 0s 10us/step - loss: 0.4999\n",
"Epoch 75/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.4999\n",
"Epoch 76/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.5000\n",
"Epoch 77/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.5000\n",
"Epoch 78/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.5000\n",
"Epoch 79/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.5000\n",
"Epoch 80/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.4999\n",
"Epoch 81/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.4999\n",
"Epoch 82/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.5000\n",
"Epoch 83/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.5000\n",
"Epoch 84/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.5000\n",
"Epoch 85/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.4999\n",
"Epoch 86/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.5000\n",
"Epoch 87/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.5000\n",
"Epoch 88/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.5000\n",
"Epoch 89/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.4999\n",
"Epoch 90/300\n",
"10000/10000 [==============================] - 0s 12us/step - loss: 0.4999\n",
"Epoch 91/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.5000\n",
"Epoch 92/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.4999\n",
"Epoch 93/300\n",
"10000/10000 [==============================] - 0s 18us/step - loss: 0.5000\n",
"Epoch 94/300\n",
"10000/10000 [==============================] - 0s 10us/step - loss: 0.5000\n",
"Epoch 95/300\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"10000/10000 [==============================] - 0s 19us/step - loss: 0.5000: 0s - loss: 0.49\n",
"Epoch 96/300\n",
"10000/10000 [==============================] - 0s 27us/step - loss: 0.5000\n",
"Epoch 97/300\n",
"10000/10000 [==============================] - 0s 12us/step - loss: 0.5000\n",
"Epoch 98/300\n",
"10000/10000 [==============================] - 0s 18us/step - loss: 0.4999\n",
"Epoch 99/300\n",
"10000/10000 [==============================] - 0s 15us/step - loss: 0.5000\n",
"Epoch 100/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.4999\n",
"Epoch 101/300\n",
"10000/10000 [==============================] - 0s 12us/step - loss: 0.5000\n",
"Epoch 102/300\n",
"10000/10000 [==============================] - 0s 10us/step - loss: 0.4999\n",
"Epoch 103/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.5000\n",
"Epoch 104/300\n",
"10000/10000 [==============================] - 0s 42us/step - loss: 0.5000\n",
"Epoch 105/300\n",
"10000/10000 [==============================] - 0s 34us/step - loss: 0.5000\n",
"Epoch 106/300\n",
"10000/10000 [==============================] - 0s 19us/step - loss: 0.5000\n",
"Epoch 107/300\n",
"10000/10000 [==============================] - 0s 16us/step - loss: 0.5000\n",
"Epoch 108/300\n",
"10000/10000 [==============================] - 0s 22us/step - loss: 0.4999\n",
"Epoch 109/300\n",
"10000/10000 [==============================] - 0s 17us/step - loss: 0.5000\n",
"Epoch 110/300\n",
"10000/10000 [==============================] - 1s 52us/step - loss: 0.4999\n",
"Epoch 111/300\n",
"10000/10000 [==============================] - 0s 13us/step - loss: 0.4999\n",
"Epoch 112/300\n",
"10000/10000 [==============================] - 0s 12us/step - loss: 0.5000\n",
"Epoch 113/300\n",
"10000/10000 [==============================] - 0s 46us/step - loss: 0.5000\n",
"Epoch 114/300\n",
"10000/10000 [==============================] - 0s 32us/step - loss: 0.4999\n",
"Epoch 115/300\n",
"10000/10000 [==============================] - 1s 90us/step - loss: 0.4999\n",
"Epoch 116/300\n",
"10000/10000 [==============================] - 0s 20us/step - loss: 0.5000\n",
"Epoch 117/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.4999\n",
"Epoch 118/300\n",
"10000/10000 [==============================] - 0s 10us/step - loss: 0.5000\n",
"Epoch 119/300\n",
"10000/10000 [==============================] - 0s 12us/step - loss: 0.4999\n",
"Epoch 120/300\n",
"10000/10000 [==============================] - 0s 13us/step - loss: 0.4999\n",
"Epoch 121/300\n",
"10000/10000 [==============================] - 0s 21us/step - loss: 0.5000\n",
"Epoch 122/300\n",
"10000/10000 [==============================] - 0s 23us/step - loss: 0.5000\n",
"Epoch 123/300\n",
"10000/10000 [==============================] - 0s 35us/step - loss: 0.4999\n",
"Epoch 124/300\n",
"10000/10000 [==============================] - 0s 12us/step - loss: 0.5000\n",
"Epoch 125/300\n",
"10000/10000 [==============================] - 0s 16us/step - loss: 0.4999\n",
"Epoch 126/300\n",
"10000/10000 [==============================] - 0s 10us/step - loss: 0.5000\n",
"Epoch 127/300\n",
"10000/10000 [==============================] - 0s 35us/step - loss: 0.4999\n",
"Epoch 128/300\n",
"10000/10000 [==============================] - 0s 18us/step - loss: 0.5000\n",
"Epoch 129/300\n",
"10000/10000 [==============================] - 0s 22us/step - loss: 0.4999\n",
"Epoch 130/300\n",
"10000/10000 [==============================] - 0s 18us/step - loss: 0.5000\n",
"Epoch 131/300\n",
"10000/10000 [==============================] - 0s 17us/step - loss: 0.4999\n",
"Epoch 132/300\n",
"10000/10000 [==============================] - 0s 28us/step - loss: 0.5000\n",
"Epoch 133/300\n",
"10000/10000 [==============================] - 0s 13us/step - loss: 0.4999\n",
"Epoch 134/300\n",
"10000/10000 [==============================] - 0s 10us/step - loss: 0.4999\n",
"Epoch 135/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.4999\n",
"Epoch 136/300\n",
"10000/10000 [==============================] - 0s 10us/step - loss: 0.5000\n",
"Epoch 137/300\n",
"10000/10000 [==============================] - 0s 17us/step - loss: 0.4999\n",
"Epoch 138/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.4999\n",
"Epoch 139/300\n",
"10000/10000 [==============================] - 0s 10us/step - loss: 0.5000\n",
"Epoch 140/300\n",
"10000/10000 [==============================] - 0s 10us/step - loss: 0.4999\n",
"Epoch 141/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.5000\n",
"Epoch 142/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.5000\n",
"Epoch 143/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.5000\n",
"Epoch 144/300\n",
"10000/10000 [==============================] - 0s 10us/step - loss: 0.4999\n",
"Epoch 145/300\n",
"10000/10000 [==============================] - 0s 15us/step - loss: 0.5000\n",
"Epoch 146/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.5000\n",
"Epoch 147/300\n",
"10000/10000 [==============================] - 0s 13us/step - loss: 0.4999\n",
"Epoch 148/300\n",
"10000/10000 [==============================] - 0s 13us/step - loss: 0.5000\n",
"Epoch 149/300\n",
"10000/10000 [==============================] - 0s 13us/step - loss: 0.4999\n",
"Epoch 150/300\n",
"10000/10000 [==============================] - 0s 12us/step - loss: 0.4999\n",
"Epoch 151/300\n",
"10000/10000 [==============================] - 0s 14us/step - loss: 0.5000\n",
"Epoch 152/300\n",
"10000/10000 [==============================] - 0s 15us/step - loss: 0.4999\n",
"Epoch 153/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.4999\n",
"Epoch 154/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.4999\n",
"Epoch 155/300\n",
"10000/10000 [==============================] - 0s 13us/step - loss: 0.4999\n",
"Epoch 156/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.4999\n",
"Epoch 157/300\n",
"10000/10000 [==============================] - 0s 15us/step - loss: 0.4999\n",
"Epoch 158/300\n",
"10000/10000 [==============================] - 0s 15us/step - loss: 0.5000\n",
"Epoch 159/300\n",
"10000/10000 [==============================] - 0s 15us/step - loss: 0.5000\n",
"Epoch 160/300\n",
"10000/10000 [==============================] - 0s 16us/step - loss: 0.5000\n",
"Epoch 161/300\n",
"10000/10000 [==============================] - 0s 12us/step - loss: 0.5000\n",
"Epoch 162/300\n",
"10000/10000 [==============================] - 0s 13us/step - loss: 0.5000\n",
"Epoch 163/300\n",
"10000/10000 [==============================] - 0s 16us/step - loss: 0.4999\n",
"Epoch 164/300\n",
"10000/10000 [==============================] - 0s 17us/step - loss: 0.5000\n",
"Epoch 165/300\n",
"10000/10000 [==============================] - 0s 14us/step - loss: 0.5000\n",
"Epoch 166/300\n",
"10000/10000 [==============================] - 0s 13us/step - loss: 0.4999\n",
"Epoch 167/300\n",
"10000/10000 [==============================] - 0s 10us/step - loss: 0.5000\n",
"Epoch 168/300\n",
"10000/10000 [==============================] - 0s 12us/step - loss: 0.5000\n",
"Epoch 169/300\n",
"10000/10000 [==============================] - 0s 13us/step - loss: 0.5000\n",
"Epoch 170/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.5000\n",
"Epoch 171/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.5000\n",
"Epoch 172/300\n",
"10000/10000 [==============================] - 0s 10us/step - loss: 0.5000\n",
"Epoch 173/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.4999\n",
"Epoch 174/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.4999\n",
"Epoch 175/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.4999\n",
"Epoch 176/300\n",
"10000/10000 [==============================] - 0s 10us/step - loss: 0.4999\n",
"Epoch 177/300\n",
"10000/10000 [==============================] - 0s 10us/step - loss: 0.5000\n",
"Epoch 178/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.5000\n",
"Epoch 179/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.4999\n",
"Epoch 180/300\n",
"10000/10000 [==============================] - 0s 10us/step - loss: 0.4999\n",
"Epoch 181/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.4999\n",
"Epoch 182/300\n",
"10000/10000 [==============================] - 0s 47us/step - loss: 0.4999\n",
"Epoch 183/300\n",
"10000/10000 [==============================] - 0s 10us/step - loss: 0.4999\n",
"Epoch 184/300\n",
"10000/10000 [==============================] - 0s 12us/step - loss: 0.4999\n",
"Epoch 185/300\n",
"10000/10000 [==============================] - 0s 24us/step - loss: 0.4999\n",
"Epoch 186/300\n",
"10000/10000 [==============================] - 0s 17us/step - loss: 0.5000\n",
"Epoch 187/300\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"10000/10000 [==============================] - 0s 11us/step - loss: 0.4999\n",
"Epoch 188/300\n",
"10000/10000 [==============================] - 0s 10us/step - loss: 0.5000\n",
"Epoch 189/300\n",
"10000/10000 [==============================] - 0s 27us/step - loss: 0.5000\n",
"Epoch 190/300\n",
"10000/10000 [==============================] - 0s 17us/step - loss: 0.4999\n",
"Epoch 191/300\n",
"10000/10000 [==============================] - 0s 10us/step - loss: 0.5000\n",
"Epoch 192/300\n",
"10000/10000 [==============================] - 0s 10us/step - loss: 0.4999\n",
"Epoch 193/300\n",
"10000/10000 [==============================] - 0s 24us/step - loss: 0.4999\n",
"Epoch 194/300\n",
"10000/10000 [==============================] - 0s 40us/step - loss: 0.4999\n",
"Epoch 195/300\n",
"10000/10000 [==============================] - 0s 32us/step - loss: 0.4999: 0s - loss: 0\n",
"Epoch 196/300\n",
"10000/10000 [==============================] - 0s 19us/step - loss: 0.4999\n",
"Epoch 197/300\n",
"10000/10000 [==============================] - 0s 12us/step - loss: 0.5000\n",
"Epoch 198/300\n",
"10000/10000 [==============================] - 1s 61us/step - loss: 0.4999\n",
"Epoch 199/300\n",
"10000/10000 [==============================] - 0s 32us/step - loss: 0.4999\n",
"Epoch 200/300\n",
"10000/10000 [==============================] - 0s 18us/step - loss: 0.5000\n",
"Epoch 201/300\n",
"10000/10000 [==============================] - 0s 43us/step - loss: 0.5000\n",
"Epoch 202/300\n",
"10000/10000 [==============================] - 0s 14us/step - loss: 0.5000\n",
"Epoch 203/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.5000\n",
"Epoch 204/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.4999\n",
"Epoch 205/300\n",
"10000/10000 [==============================] - 1s 72us/step - loss: 0.5000: 0s - loss: 0. - ETA: 0s - loss: 0.\n",
"Epoch 206/300\n",
"10000/10000 [==============================] - 0s 43us/step - loss: 0.4999\n",
"Epoch 207/300\n",
"10000/10000 [==============================] - 1s 66us/step - loss: 0.5000\n",
"Epoch 208/300\n",
"10000/10000 [==============================] - ETA: 0s - loss: 0.499 - 0s 16us/step - loss: 0.4999\n",
"Epoch 209/300\n",
"10000/10000 [==============================] - 0s 17us/step - loss: 0.4999\n",
"Epoch 210/300\n",
"10000/10000 [==============================] - 0s 16us/step - loss: 0.4999\n",
"Epoch 211/300\n",
"10000/10000 [==============================] - 0s 14us/step - loss: 0.4999\n",
"Epoch 212/300\n",
"10000/10000 [==============================] - 0s 15us/step - loss: 0.4999\n",
"Epoch 213/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.4999\n",
"Epoch 214/300\n",
"10000/10000 [==============================] - 0s 12us/step - loss: 0.4999\n",
"Epoch 215/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.4999\n",
"Epoch 216/300\n",
"10000/10000 [==============================] - 0s 12us/step - loss: 0.5000\n",
"Epoch 217/300\n",
"10000/10000 [==============================] - 0s 17us/step - loss: 0.4999\n",
"Epoch 218/300\n",
"10000/10000 [==============================] - 0s 10us/step - loss: 0.5000\n",
"Epoch 219/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.4999\n",
"Epoch 220/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.5000\n",
"Epoch 221/300\n",
"10000/10000 [==============================] - 0s 12us/step - loss: 0.4999\n",
"Epoch 222/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.4999\n",
"Epoch 223/300\n",
"10000/10000 [==============================] - 0s 7us/step - loss: 0.5000\n",
"Epoch 224/300\n",
"10000/10000 [==============================] - 0s 7us/step - loss: 0.5000\n",
"Epoch 225/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.5000\n",
"Epoch 226/300\n",
"10000/10000 [==============================] - 0s 12us/step - loss: 0.5000\n",
"Epoch 227/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.4999\n",
"Epoch 228/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.4999\n",
"Epoch 229/300\n",
"10000/10000 [==============================] - 0s 10us/step - loss: 0.4999\n",
"Epoch 230/300\n",
"10000/10000 [==============================] - 0s 12us/step - loss: 0.5000\n",
"Epoch 231/300\n",
"10000/10000 [==============================] - 0s 10us/step - loss: 0.4999\n",
"Epoch 232/300\n",
"10000/10000 [==============================] - 0s 10us/step - loss: 0.4999\n",
"Epoch 233/300\n",
"10000/10000 [==============================] - 0s 25us/step - loss: 0.4999\n",
"Epoch 234/300\n",
"10000/10000 [==============================] - 0s 10us/step - loss: 0.5000\n",
"Epoch 235/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.5000\n",
"Epoch 236/300\n",
"10000/10000 [==============================] - 0s 10us/step - loss: 0.4999\n",
"Epoch 237/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.5000\n",
"Epoch 238/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.5000\n",
"Epoch 239/300\n",
"10000/10000 [==============================] - 0s 12us/step - loss: 0.5000\n",
"Epoch 240/300\n",
"10000/10000 [==============================] - 0s 6us/step - loss: 0.5000\n",
"Epoch 241/300\n",
"10000/10000 [==============================] - 0s 8us/step - loss: 0.4999\n",
"Epoch 242/300\n",
"10000/10000 [==============================] - 0s 13us/step - loss: 0.4999\n",
"Epoch 243/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.5000\n",
"Epoch 244/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.5000\n",
"Epoch 245/300\n",
"10000/10000 [==============================] - 0s 15us/step - loss: 0.5000\n",
"Epoch 246/300\n",
"10000/10000 [==============================] - 0s 16us/step - loss: 0.5000\n",
"Epoch 247/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.5000\n",
"Epoch 248/300\n",
"10000/10000 [==============================] - 0s 13us/step - loss: 0.4999\n",
"Epoch 249/300\n",
"10000/10000 [==============================] - 0s 10us/step - loss: 0.4999\n",
"Epoch 250/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.4999\n",
"Epoch 251/300\n",
"10000/10000 [==============================] - 0s 12us/step - loss: 0.5000\n",
"Epoch 252/300\n",
"10000/10000 [==============================] - 0s 10us/step - loss: 0.5000\n",
"Epoch 253/300\n",
"10000/10000 [==============================] - 0s 18us/step - loss: 0.5000\n",
"Epoch 254/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.4999\n",
"Epoch 255/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.4999\n",
"Epoch 256/300\n",
"10000/10000 [==============================] - 0s 13us/step - loss: 0.4999\n",
"Epoch 257/300\n",
"10000/10000 [==============================] - 0s 12us/step - loss: 0.4999\n",
"Epoch 258/300\n",
"10000/10000 [==============================] - 0s 10us/step - loss: 0.5000\n",
"Epoch 259/300\n",
"10000/10000 [==============================] - 0s 10us/step - loss: 0.4999\n",
"Epoch 260/300\n",
"10000/10000 [==============================] - 0s 13us/step - loss: 0.4999\n",
"Epoch 261/300\n",
"10000/10000 [==============================] - 0s 14us/step - loss: 0.4999\n",
"Epoch 262/300\n",
"10000/10000 [==============================] - 0s 23us/step - loss: 0.4999\n",
"Epoch 263/300\n",
"10000/10000 [==============================] - 0s 18us/step - loss: 0.5000\n",
"Epoch 264/300\n",
"10000/10000 [==============================] - 0s 24us/step - loss: 0.4999\n",
"Epoch 265/300\n",
"10000/10000 [==============================] - 0s 17us/step - loss: 0.5000\n",
"Epoch 266/300\n",
"10000/10000 [==============================] - 0s 18us/step - loss: 0.5000\n",
"Epoch 267/300\n",
"10000/10000 [==============================] - 0s 22us/step - loss: 0.4999\n",
"Epoch 268/300\n",
"10000/10000 [==============================] - 0s 22us/step - loss: 0.4999\n",
"Epoch 269/300\n",
"10000/10000 [==============================] - 0s 33us/step - loss: 0.4999\n",
"Epoch 270/300\n",
"10000/10000 [==============================] - 0s 27us/step - loss: 0.5000\n",
"Epoch 271/300\n",
"10000/10000 [==============================] - 0s 19us/step - loss: 0.4999\n",
"Epoch 272/300\n",
"10000/10000 [==============================] - 0s 14us/step - loss: 0.4999\n",
"Epoch 273/300\n",
"10000/10000 [==============================] - 0s 10us/step - loss: 0.4999\n",
"Epoch 274/300\n",
"10000/10000 [==============================] - 0s 13us/step - loss: 0.5000\n",
"Epoch 275/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.5000\n",
"Epoch 276/300\n",
"10000/10000 [==============================] - 0s 13us/step - loss: 0.4999\n",
"Epoch 277/300\n",
"10000/10000 [==============================] - 0s 14us/step - loss: 0.5000\n",
"Epoch 278/300\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"10000/10000 [==============================] - 0s 9us/step - loss: 0.5000\n",
"Epoch 279/300\n",
"10000/10000 [==============================] - 0s 12us/step - loss: 0.4999\n",
"Epoch 280/300\n",
"10000/10000 [==============================] - 0s 13us/step - loss: 0.5000\n",
"Epoch 281/300\n",
"10000/10000 [==============================] - 0s 19us/step - loss: 0.4999\n",
"Epoch 282/300\n",
"10000/10000 [==============================] - 0s 14us/step - loss: 0.4999\n",
"Epoch 283/300\n",
"10000/10000 [==============================] - 0s 15us/step - loss: 0.5000\n",
"Epoch 284/300\n",
"10000/10000 [==============================] - 0s 15us/step - loss: 0.4999\n",
"Epoch 285/300\n",
"10000/10000 [==============================] - 0s 16us/step - loss: 0.4999\n",
"Epoch 286/300\n",
"10000/10000 [==============================] - 0s 14us/step - loss: 0.5000\n",
"Epoch 287/300\n",
"10000/10000 [==============================] - 0s 14us/step - loss: 0.4999\n",
"Epoch 288/300\n",
"10000/10000 [==============================] - 0s 15us/step - loss: 0.4999\n",
"Epoch 289/300\n",
"10000/10000 [==============================] - 0s 14us/step - loss: 0.4999\n",
"Epoch 290/300\n",
"10000/10000 [==============================] - 0s 9us/step - loss: 0.4999\n",
"Epoch 291/300\n",
"10000/10000 [==============================] - 0s 11us/step - loss: 0.4999\n",
"Epoch 292/300\n",
"10000/10000 [==============================] - 0s 23us/step - loss: 0.5000\n",
"Epoch 293/300\n",
"10000/10000 [==============================] - 0s 15us/step - loss: 0.4999\n",
"Epoch 294/300\n",
"10000/10000 [==============================] - 0s 14us/step - loss: 0.4999\n",
"Epoch 295/300\n",
"10000/10000 [==============================] - 0s 10us/step - loss: 0.5000\n",
"Epoch 296/300\n",
"10000/10000 [==============================] - 0s 12us/step - loss: 0.5000\n",
"Epoch 297/300\n",
"10000/10000 [==============================] - 0s 17us/step - loss: 0.4999\n",
"Epoch 298/300\n",
"10000/10000 [==============================] - 0s 17us/step - loss: 0.5000\n",
"Epoch 299/300\n",
"10000/10000 [==============================] - 0s 15us/step - loss: 0.5000\n",
"Epoch 300/300\n",
"10000/10000 [==============================] - 0s 15us/step - loss: 0.5000\n"
]
}
],
"source": [
"relu_history = relu_approx.fit(X_train, y_train,\n",
" epochs=300,\n",
" batch_size = 256,\n",
" shuffle=True)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x286e4298be0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(relu_history.history['loss'])\n",
"\n",
"plt.title(\"relu approx. MSE\")\n",
"plt.xlabel('epoch')\n",
"plt.ylabel('MSE loss')\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x286e429c780>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"x_test = np.linspace(-3 * np.pi, 3 * np.pi, 103)\n",
"y_test = relu_approx.predict(x_test)\n",
"\n",
"plt.plot(x_test, y_test)\n",
"\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment