Table Of Contents
In [42]:
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

tf.__version__
Out [42]:
'2.14.0'

Prep Simple Data

Here, the dependent variable will JUST BE +10 of the independent variable:

In [43]:
# model.fit(tf.expand_dims(X, axis=-1), y, epochs=5)

# Create features
indVar = np.array([-7.0, -4.0, -1.0, 2.0, 5.0, 8.0, 11.0, 14.0])

# Create labels
depVar = np.array([3.0, 6.0, 9.0, 12.0, 15.0, 18.0, 21.0, 24.0])

# Visualize it
plt.scatter(indVar, depVar);
output png

Train A Model

In [44]:
# Set random seed
tf.random.set_seed(42)

# Create a model using the Sequential API
layer1 = tf.keras.layers.Dense(1)
model = tf.keras.Sequential()
model.add(layer1)

# Compile the model
model.compile(loss=tf.keras.losses.mae, # mae is short for mean absolute error
              optimizer=tf.keras.optimizers.SGD(), # SGD is short for stochastic gradient descent
              metrics=["mae"])

# Fit the model
model.fit(tf.expand_dims(indVar, axis=-1), depVar, epochs=5)
Epoch 1/5
1/1 [==============================] - 1s 1s/step - loss: 16.8788 - mae: 16.8788
Epoch 2/5
1/1 [==============================] - 0s 15ms/step - loss: 16.5976 - mae: 16.5976
Epoch 3/5
1/1 [==============================] - 0s 14ms/step - loss: 16.3163 - mae: 16.3163
Epoch 4/5
1/1 [==============================] - 0s 14ms/step - loss: 16.0351 - mae: 16.0351
Epoch 5/5
1/1 [==============================] - 0s 14ms/step - loss: 15.7538 - mae: 15.7538
Out [44]:
<keras.src.callbacks.History at 0x7f29c91a90>

Predict With The Model

In [45]:
# Make a prediction with the model
model.predict([17.0])
1/1 [==============================] - 0s 178ms/step
Out [45]:
array([[-8.86956]], dtype=float32)

hmmm.... the model guess was 12, but we know the answer should be 27....it's a little off.

Improve the Model: More Epochs

Many ways can be used to improve the performance of a model:

  • During creation:
    • use a different number of layers
    • use different types of layers
    • change the activation function of each layer
  • During model compilation:
    • change the optimizer function (i.e adam)
    • change the learning rate of the optimizer function (higher leads to bigger "Steps", lower leads to smaller "steps")
  • During model fitting:
    • add more epochs
    • add more data

Increase the training epoch count

In [46]:
# Create & compile a model (same as above)
modelTwo = tf.keras.Sequential()
modelTwo.add(layer1)
modelTwo.compile(loss=tf.keras.losses.mae,
              optimizer=tf.keras.optimizers.SGD(),
              metrics=["mae"])
modelTwo.fit(tf.expand_dims(indVar, axis=-1), depVar, epochs=100) # train for 100 epochs not 10
Epoch 1/100
1/1 [==============================] - 1s 952ms/step - loss: 15.4726 - mae: 15.4726
Epoch 2/100
1/1 [==============================] - 0s 15ms/step - loss: 15.1913 - mae: 15.1913
Epoch 3/100
1/1 [==============================] - 0s 14ms/step - loss: 14.9138 - mae: 14.9138
Epoch 4/100
1/1 [==============================] - 0s 15ms/step - loss: 14.7813 - mae: 14.7813
Epoch 5/100
1/1 [==============================] - 0s 15ms/step - loss: 14.6488 - mae: 14.6488
Epoch 6/100
1/1 [==============================] - 0s 15ms/step - loss: 14.5163 - mae: 14.5163
Epoch 7/100
1/1 [==============================] - 0s 15ms/step - loss: 14.3838 - mae: 14.3838
Epoch 8/100
1/1 [==============================] - 0s 15ms/step - loss: 14.2513 - mae: 14.2513
Epoch 9/100
1/1 [==============================] - 0s 15ms/step - loss: 14.1188 - mae: 14.1188
Epoch 10/100
1/1 [==============================] - 0s 16ms/step - loss: 13.9863 - mae: 13.9863
Epoch 11/100
1/1 [==============================] - 0s 15ms/step - loss: 13.8538 - mae: 13.8538
Epoch 12/100
1/1 [==============================] - 0s 15ms/step - loss: 13.7213 - mae: 13.7213
Epoch 13/100
1/1 [==============================] - 0s 15ms/step - loss: 13.5888 - mae: 13.5888
Epoch 14/100
1/1 [==============================] - 0s 15ms/step - loss: 13.4563 - mae: 13.4563
Epoch 15/100
1/1 [==============================] - 0s 15ms/step - loss: 13.3238 - mae: 13.3238
Epoch 16/100
1/1 [==============================] - 0s 15ms/step - loss: 13.1913 - mae: 13.1913
Epoch 17/100
1/1 [==============================] - 0s 15ms/step - loss: 13.0588 - mae: 13.0588
Epoch 18/100
1/1 [==============================] - 0s 15ms/step - loss: 12.9263 - mae: 12.9263
Epoch 19/100
1/1 [==============================] - 0s 14ms/step - loss: 12.7938 - mae: 12.7938
Epoch 20/100
1/1 [==============================] - 0s 14ms/step - loss: 12.6613 - mae: 12.6613
Epoch 21/100
1/1 [==============================] - 0s 14ms/step - loss: 12.5288 - mae: 12.5288
Epoch 22/100
1/1 [==============================] - 0s 15ms/step - loss: 12.3963 - mae: 12.3963
Epoch 23/100
1/1 [==============================] - 0s 16ms/step - loss: 12.2638 - mae: 12.2638
Epoch 24/100
1/1 [==============================] - 0s 15ms/step - loss: 12.1313 - mae: 12.1313
Epoch 25/100
1/1 [==============================] - 0s 15ms/step - loss: 11.9988 - mae: 11.9988
Epoch 26/100
1/1 [==============================] - 0s 15ms/step - loss: 11.8663 - mae: 11.8663
Epoch 27/100
1/1 [==============================] - 0s 15ms/step - loss: 11.7338 - mae: 11.7338
Epoch 28/100
1/1 [==============================] - 0s 15ms/step - loss: 11.6013 - mae: 11.6013
Epoch 29/100
1/1 [==============================] - 0s 15ms/step - loss: 11.4688 - mae: 11.4688
Epoch 30/100
1/1 [==============================] - 0s 14ms/step - loss: 11.3363 - mae: 11.3363
Epoch 31/100
1/1 [==============================] - 0s 16ms/step - loss: 11.2038 - mae: 11.2038
Epoch 32/100
1/1 [==============================] - 0s 26ms/step - loss: 11.0713 - mae: 11.0713
Epoch 33/100
1/1 [==============================] - 0s 20ms/step - loss: 10.9388 - mae: 10.9388
Epoch 34/100
1/1 [==============================] - 0s 15ms/step - loss: 10.8063 - mae: 10.8063
Epoch 35/100
1/1 [==============================] - 0s 15ms/step - loss: 10.6738 - mae: 10.6738
Epoch 36/100
1/1 [==============================] - 0s 17ms/step - loss: 10.5413 - mae: 10.5413
Epoch 37/100
1/1 [==============================] - 0s 21ms/step - loss: 10.4088 - mae: 10.4088
Epoch 38/100
1/1 [==============================] - 0s 17ms/step - loss: 10.2763 - mae: 10.2763
Epoch 39/100
1/1 [==============================] - 0s 19ms/step - loss: 10.1438 - mae: 10.1438
Epoch 40/100
1/1 [==============================] - 0s 19ms/step - loss: 10.0113 - mae: 10.0113
Epoch 41/100
1/1 [==============================] - 0s 17ms/step - loss: 9.8788 - mae: 9.8788
Epoch 42/100
1/1 [==============================] - 0s 18ms/step - loss: 9.7463 - mae: 9.7463
Epoch 43/100
1/1 [==============================] - 0s 17ms/step - loss: 9.6138 - mae: 9.6138
Epoch 44/100
1/1 [==============================] - 0s 18ms/step - loss: 9.4813 - mae: 9.4813
Epoch 45/100
1/1 [==============================] - 0s 18ms/step - loss: 9.3488 - mae: 9.3488
Epoch 46/100
1/1 [==============================] - 0s 17ms/step - loss: 9.2163 - mae: 9.2163
Epoch 47/100
1/1 [==============================] - 0s 17ms/step - loss: 9.0838 - mae: 9.0838
Epoch 48/100
1/1 [==============================] - 0s 17ms/step - loss: 8.9513 - mae: 8.9513
Epoch 49/100
1/1 [==============================] - 0s 17ms/step - loss: 8.8188 - mae: 8.8188
Epoch 50/100
1/1 [==============================] - 0s 16ms/step - loss: 8.6863 - mae: 8.6863
Epoch 51/100
1/1 [==============================] - 0s 17ms/step - loss: 8.5538 - mae: 8.5538
Epoch 52/100
1/1 [==============================] - 0s 17ms/step - loss: 8.4213 - mae: 8.4213
Epoch 53/100
1/1 [==============================] - 0s 18ms/step - loss: 8.2888 - mae: 8.2888
Epoch 54/100
1/1 [==============================] - 0s 17ms/step - loss: 8.1563 - mae: 8.1563
Epoch 55/100
1/1 [==============================] - 0s 18ms/step - loss: 8.0238 - mae: 8.0238
Epoch 56/100
1/1 [==============================] - 0s 19ms/step - loss: 7.8913 - mae: 7.8913
Epoch 57/100
1/1 [==============================] - 0s 17ms/step - loss: 7.7588 - mae: 7.7588
Epoch 58/100
1/1 [==============================] - 0s 28ms/step - loss: 7.6263 - mae: 7.6263
Epoch 59/100
1/1 [==============================] - 0s 24ms/step - loss: 7.4938 - mae: 7.4938
Epoch 60/100
1/1 [==============================] - 0s 22ms/step - loss: 7.3613 - mae: 7.3613
Epoch 61/100
1/1 [==============================] - 0s 15ms/step - loss: 7.2288 - mae: 7.2288
Epoch 62/100
1/1 [==============================] - 0s 14ms/step - loss: 7.0963 - mae: 7.0963
Epoch 63/100
1/1 [==============================] - 0s 15ms/step - loss: 7.0106 - mae: 7.0106
Epoch 64/100
1/1 [==============================] - 0s 14ms/step - loss: 7.0050 - mae: 7.0050
Epoch 65/100
1/1 [==============================] - 0s 14ms/step - loss: 6.9994 - mae: 6.9994
Epoch 66/100
1/1 [==============================] - 0s 14ms/step - loss: 6.9938 - mae: 6.9938
Epoch 67/100
1/1 [==============================] - 0s 15ms/step - loss: 6.9881 - mae: 6.9881
Epoch 68/100
1/1 [==============================] - 0s 14ms/step - loss: 6.9825 - mae: 6.9825
Epoch 69/100
1/1 [==============================] - 0s 14ms/step - loss: 6.9769 - mae: 6.9769
Epoch 70/100
1/1 [==============================] - 0s 14ms/step - loss: 6.9713 - mae: 6.9713
Epoch 71/100
1/1 [==============================] - 0s 15ms/step - loss: 6.9656 - mae: 6.9656
Epoch 72/100
1/1 [==============================] - 0s 15ms/step - loss: 6.9600 - mae: 6.9600
Epoch 73/100
1/1 [==============================] - 0s 14ms/step - loss: 6.9544 - mae: 6.9544
Epoch 74/100
1/1 [==============================] - 0s 14ms/step - loss: 6.9488 - mae: 6.9488
Epoch 75/100
1/1 [==============================] - 0s 15ms/step - loss: 6.9431 - mae: 6.9431
Epoch 76/100
1/1 [==============================] - 0s 15ms/step - loss: 6.9375 - mae: 6.9375
Epoch 77/100
1/1 [==============================] - 0s 19ms/step - loss: 6.9319 - mae: 6.9319
Epoch 78/100
1/1 [==============================] - 0s 15ms/step - loss: 6.9263 - mae: 6.9263
Epoch 79/100
1/1 [==============================] - 0s 15ms/step - loss: 6.9206 - mae: 6.9206
Epoch 80/100
1/1 [==============================] - 0s 16ms/step - loss: 6.9150 - mae: 6.9150
Epoch 81/100
1/1 [==============================] - 0s 15ms/step - loss: 6.9094 - mae: 6.9094
Epoch 82/100
1/1 [==============================] - 0s 15ms/step - loss: 6.9038 - mae: 6.9038
Epoch 83/100
1/1 [==============================] - 0s 15ms/step - loss: 6.8981 - mae: 6.8981
Epoch 84/100
1/1 [==============================] - 0s 16ms/step - loss: 6.8925 - mae: 6.8925
Epoch 85/100
1/1 [==============================] - 0s 14ms/step - loss: 6.8869 - mae: 6.8869
Epoch 86/100
1/1 [==============================] - 0s 17ms/step - loss: 6.8813 - mae: 6.8813
Epoch 87/100
1/1 [==============================] - 0s 14ms/step - loss: 6.8756 - mae: 6.8756
Epoch 88/100
1/1 [==============================] - 0s 15ms/step - loss: 6.8700 - mae: 6.8700
Epoch 89/100
1/1 [==============================] - 0s 16ms/step - loss: 6.8644 - mae: 6.8644
Epoch 90/100
1/1 [==============================] - 0s 14ms/step - loss: 6.8588 - mae: 6.8588
Epoch 91/100
1/1 [==============================] - 0s 16ms/step - loss: 6.8531 - mae: 6.8531
Epoch 92/100
1/1 [==============================] - 0s 14ms/step - loss: 6.8475 - mae: 6.8475
Epoch 93/100
1/1 [==============================] - 0s 15ms/step - loss: 6.8419 - mae: 6.8419
Epoch 94/100
1/1 [==============================] - 0s 15ms/step - loss: 6.8363 - mae: 6.8363
Epoch 95/100
1/1 [==============================] - 0s 15ms/step - loss: 6.8306 - mae: 6.8306
Epoch 96/100
1/1 [==============================] - 0s 14ms/step - loss: 6.8250 - mae: 6.8250
Epoch 97/100
1/1 [==============================] - 0s 14ms/step - loss: 6.8194 - mae: 6.8194
Epoch 98/100
1/1 [==============================] - 0s 15ms/step - loss: 6.8138 - mae: 6.8138
Epoch 99/100
1/1 [==============================] - 0s 14ms/step - loss: 6.8081 - mae: 6.8081
Epoch 100/100
1/1 [==============================] - 0s 14ms/step - loss: 6.8025 - mae: 6.8025
Out [46]:
<keras.src.callbacks.History at 0x7f29c920d0>

Predict Again

In [47]:
# Try and predict what y would be if X was 17.0
modelTwo.predict([17.0]) # the right answer is 27.0 (y = X + 10)
1/1 [==============================] - 0s 168ms/step
Out [47]:
array([[29.515434]], dtype=float32)

the model guessed 29, and the expected response is 27: CLOSER!!

Improve the model: adding a layer

In [48]:
# CREATE & COMPILE & FITthe model
modelThree = tf.keras.Sequential()
m3L1 = tf.keras.layers.Dense(100, activation="relu")
m3L2 = tf.keras.layers.Dense(1)
modelThree.add(m3L1)
modelThree.add(m3L2)
modelThree.compile(loss=tf.keras.losses.mae, 
                   optimizer=tf.keras.optimizers.SGD(),
                  metrics=["mae"])
modelThree.fit(tf.expand_dims(indVar, axis=-1), depVar, epochs=100)
Epoch 1/100
1/1 [==============================] - 1s 1s/step - loss: 12.8534 - mae: 12.8534
Epoch 2/100
1/1 [==============================] - 0s 17ms/step - loss: 12.2273 - mae: 12.2273
Epoch 3/100
1/1 [==============================] - 0s 15ms/step - loss: 11.6047 - mae: 11.6047
Epoch 4/100
1/1 [==============================] - 0s 16ms/step - loss: 10.9744 - mae: 10.9744
Epoch 5/100
1/1 [==============================] - 0s 15ms/step - loss: 10.3196 - mae: 10.3196
Epoch 6/100
1/1 [==============================] - 0s 15ms/step - loss: 9.6382 - mae: 9.6382
Epoch 7/100
1/1 [==============================] - 0s 15ms/step - loss: 8.9336 - mae: 8.9336
Epoch 8/100
1/1 [==============================] - 0s 14ms/step - loss: 8.1899 - mae: 8.1899
Epoch 9/100
1/1 [==============================] - 0s 15ms/step - loss: 7.4065 - mae: 7.4065
Epoch 10/100
1/1 [==============================] - 0s 15ms/step - loss: 6.5808 - mae: 6.5808
Epoch 11/100
1/1 [==============================] - 0s 15ms/step - loss: 5.6946 - mae: 5.6946
Epoch 12/100
1/1 [==============================] - 0s 15ms/step - loss: 4.7415 - mae: 4.7415
Epoch 13/100
1/1 [==============================] - 0s 15ms/step - loss: 4.1203 - mae: 4.1203
Epoch 14/100
1/1 [==============================] - 0s 15ms/step - loss: 3.9730 - mae: 3.9730
Epoch 15/100
1/1 [==============================] - 0s 15ms/step - loss: 3.9780 - mae: 3.9780
Epoch 16/100
1/1 [==============================] - 0s 15ms/step - loss: 3.9079 - mae: 3.9079
Epoch 17/100
1/1 [==============================] - 0s 15ms/step - loss: 3.9745 - mae: 3.9745
Epoch 18/100
1/1 [==============================] - 0s 15ms/step - loss: 3.9150 - mae: 3.9150
Epoch 19/100
1/1 [==============================] - 0s 15ms/step - loss: 3.9486 - mae: 3.9486
Epoch 20/100
1/1 [==============================] - 0s 15ms/step - loss: 3.9223 - mae: 3.9223
Epoch 21/100
1/1 [==============================] - 0s 15ms/step - loss: 3.9227 - mae: 3.9227
Epoch 22/100
1/1 [==============================] - 0s 15ms/step - loss: 3.9297 - mae: 3.9297
Epoch 23/100
1/1 [==============================] - 0s 15ms/step - loss: 3.9032 - mae: 3.9032
Epoch 24/100
1/1 [==============================] - 0s 15ms/step - loss: 3.9448 - mae: 3.9448
Epoch 25/100
1/1 [==============================] - 0s 15ms/step - loss: 3.8772 - mae: 3.8772
Epoch 26/100
1/1 [==============================] - 0s 15ms/step - loss: 3.9524 - mae: 3.9524
Epoch 27/100
1/1 [==============================] - 0s 15ms/step - loss: 3.8832 - mae: 3.8832
Epoch 28/100
1/1 [==============================] - 0s 15ms/step - loss: 3.9267 - mae: 3.9267
Epoch 29/100
1/1 [==============================] - 0s 16ms/step - loss: 3.8907 - mae: 3.8907
Epoch 30/100
1/1 [==============================] - 0s 15ms/step - loss: 3.9005 - mae: 3.9005
Epoch 31/100
1/1 [==============================] - 0s 15ms/step - loss: 3.9023 - mae: 3.9023
Epoch 32/100
1/1 [==============================] - 0s 15ms/step - loss: 3.8811 - mae: 3.8811
Epoch 33/100
1/1 [==============================] - 0s 15ms/step - loss: 3.9136 - mae: 3.9136
Epoch 34/100
1/1 [==============================] - 0s 15ms/step - loss: 3.8545 - mae: 3.8545
Epoch 35/100
1/1 [==============================] - 0s 15ms/step - loss: 3.9213 - mae: 3.9213
Epoch 36/100
1/1 [==============================] - 0s 15ms/step - loss: 3.8525 - mae: 3.8525
Epoch 37/100
1/1 [==============================] - 0s 16ms/step - loss: 3.9035 - mae: 3.9035
Epoch 38/100
1/1 [==============================] - 0s 15ms/step - loss: 3.8602 - mae: 3.8602
Epoch 39/100
1/1 [==============================] - 0s 14ms/step - loss: 3.8790 - mae: 3.8790
Epoch 40/100
1/1 [==============================] - 0s 15ms/step - loss: 3.8756 - mae: 3.8756
Epoch 41/100
1/1 [==============================] - 0s 15ms/step - loss: 3.8573 - mae: 3.8573
Epoch 42/100
1/1 [==============================] - 0s 15ms/step - loss: 3.8834 - mae: 3.8834
Epoch 43/100
1/1 [==============================] - 0s 15ms/step - loss: 3.8305 - mae: 3.8305
Epoch 44/100
1/1 [==============================] - 0s 15ms/step - loss: 3.8914 - mae: 3.8914
Epoch 45/100
1/1 [==============================] - 0s 14ms/step - loss: 3.8230 - mae: 3.8230
Epoch 46/100
1/1 [==============================] - 0s 15ms/step - loss: 3.8791 - mae: 3.8791
Epoch 47/100
1/1 [==============================] - 0s 14ms/step - loss: 3.8309 - mae: 3.8309
Epoch 48/100
1/1 [==============================] - 0s 14ms/step - loss: 3.8591 - mae: 3.8591
Epoch 49/100
1/1 [==============================] - 0s 15ms/step - loss: 3.8464 - mae: 3.8464
Epoch 50/100
1/1 [==============================] - 0s 15ms/step - loss: 3.8323 - mae: 3.8323
Epoch 51/100
1/1 [==============================] - 0s 15ms/step - loss: 3.8545 - mae: 3.8545
Epoch 52/100
1/1 [==============================] - 0s 15ms/step - loss: 3.8052 - mae: 3.8052
Epoch 53/100
1/1 [==============================] - 0s 15ms/step - loss: 3.8626 - mae: 3.8626
Epoch 54/100
1/1 [==============================] - 0s 15ms/step - loss: 3.7946 - mae: 3.7946
Epoch 55/100
1/1 [==============================] - 0s 15ms/step - loss: 3.8534 - mae: 3.8534
Epoch 56/100
1/1 [==============================] - 0s 15ms/step - loss: 3.8065 - mae: 3.8065
Epoch 57/100
1/1 [==============================] - 0s 17ms/step - loss: 3.8333 - mae: 3.8333
Epoch 58/100
1/1 [==============================] - 0s 15ms/step - loss: 3.8183 - mae: 3.8183
Epoch 59/100
1/1 [==============================] - 0s 16ms/step - loss: 3.8060 - mae: 3.8060
Epoch 60/100
1/1 [==============================] - 0s 15ms/step - loss: 3.8266 - mae: 3.8266
Epoch 61/100
1/1 [==============================] - 0s 15ms/step - loss: 3.7786 - mae: 3.7786
Epoch 62/100
1/1 [==============================] - 0s 15ms/step - loss: 3.8350 - mae: 3.8350
Epoch 63/100
1/1 [==============================] - 0s 15ms/step - loss: 3.7672 - mae: 3.7672
Epoch 64/100
1/1 [==============================] - 0s 15ms/step - loss: 3.8278 - mae: 3.8278
Epoch 65/100
1/1 [==============================] - 0s 15ms/step - loss: 3.7830 - mae: 3.7830
Epoch 66/100
1/1 [==============================] - 0s 15ms/step - loss: 3.8059 - mae: 3.8059
Epoch 67/100
1/1 [==============================] - 0s 15ms/step - loss: 3.7913 - mae: 3.7913
Epoch 68/100
1/1 [==============================] - 0s 15ms/step - loss: 3.7784 - mae: 3.7784
Epoch 69/100
1/1 [==============================] - 0s 15ms/step - loss: 3.7998 - mae: 3.7998
Epoch 70/100
1/1 [==============================] - 0s 15ms/step - loss: 3.7507 - mae: 3.7507
Epoch 71/100
1/1 [==============================] - 0s 15ms/step - loss: 3.8084 - mae: 3.8084
Epoch 72/100
1/1 [==============================] - 0s 15ms/step - loss: 3.7408 - mae: 3.7408
Epoch 73/100
1/1 [==============================] - 0s 15ms/step - loss: 3.8039 - mae: 3.8039
Epoch 74/100
1/1 [==============================] - 0s 15ms/step - loss: 3.7568 - mae: 3.7568
Epoch 75/100
1/1 [==============================] - 0s 15ms/step - loss: 3.7773 - mae: 3.7773
Epoch 76/100
1/1 [==============================] - 0s 15ms/step - loss: 3.7654 - mae: 3.7654
Epoch 77/100
1/1 [==============================] - 0s 15ms/step - loss: 3.7495 - mae: 3.7495
Epoch 78/100
1/1 [==============================] - 0s 15ms/step - loss: 3.7740 - mae: 3.7740
Epoch 79/100
1/1 [==============================] - 0s 15ms/step - loss: 3.7214 - mae: 3.7214
Epoch 80/100
1/1 [==============================] - 0s 15ms/step - loss: 3.7828 - mae: 3.7828
Epoch 81/100
1/1 [==============================] - 0s 15ms/step - loss: 3.7180 - mae: 3.7180
Epoch 82/100
1/1 [==============================] - 0s 15ms/step - loss: 3.7754 - mae: 3.7754
Epoch 83/100
1/1 [==============================] - 0s 15ms/step - loss: 3.7317 - mae: 3.7317
Epoch 84/100
1/1 [==============================] - 0s 15ms/step - loss: 3.7473 - mae: 3.7473
Epoch 85/100
1/1 [==============================] - 0s 14ms/step - loss: 3.7404 - mae: 3.7404
Epoch 86/100
1/1 [==============================] - 0s 15ms/step - loss: 3.7192 - mae: 3.7192
Epoch 87/100
1/1 [==============================] - 0s 15ms/step - loss: 3.7493 - mae: 3.7493
Epoch 88/100
1/1 [==============================] - 0s 15ms/step - loss: 3.6910 - mae: 3.6910
Epoch 89/100
1/1 [==============================] - 0s 15ms/step - loss: 3.7582 - mae: 3.7582
Epoch 90/100
1/1 [==============================] - 0s 15ms/step - loss: 3.6976 - mae: 3.6976
Epoch 91/100
1/1 [==============================] - 0s 15ms/step - loss: 3.7447 - mae: 3.7447
Epoch 92/100
1/1 [==============================] - 0s 15ms/step - loss: 3.7073 - mae: 3.7073
Epoch 93/100
1/1 [==============================] - 0s 14ms/step - loss: 3.7163 - mae: 3.7163
Epoch 94/100
1/1 [==============================] - 0s 15ms/step - loss: 3.7162 - mae: 3.7162
Epoch 95/100
1/1 [==============================] - 0s 15ms/step - loss: 3.6878 - mae: 3.6878
Epoch 96/100
1/1 [==============================] - 0s 14ms/step - loss: 3.7253 - mae: 3.7253
Epoch 97/100
1/1 [==============================] - 0s 15ms/step - loss: 3.6593 - mae: 3.6593
Epoch 98/100
1/1 [==============================] - 0s 15ms/step - loss: 3.7376 - mae: 3.7376
Epoch 99/100
1/1 [==============================] - 0s 15ms/step - loss: 3.6749 - mae: 3.6749
Epoch 100/100
1/1 [==============================] - 0s 15ms/step - loss: 3.7126 - mae: 3.7126
Out [48]:
<keras.src.callbacks.History at 0x7f291fd190>
In [49]:
# Try and predict what y would be if X was 17.0
modelThree.predict([17.0]) # the right answer is 27.0 (y = X + 10)
1/1 [==============================] - 0s 223ms/step
Out [49]:
array([[32.356853]], dtype=float32)

hmm... the output is 32. The goal is 27. This is WORSE than the previous model with less layers.
This seems to be a crux of machine-learning: experimentation.
Not sure how much it relates to this "learn-by-building" approach or not.

Improve the model: activation, optimization, and learning-rate

In [50]:
# activation=None
# optimizers.Adam()

# CREATE & COMPILE & FITthe model
mFour = tf.keras.Sequential()
m4L1 = tf.keras.layers.Dense(50, activation=None)
m4L2 = tf.keras.layers.Dense(1)
mFour.add(m4L1)
mFour.add(m4L2)
mFour.compile(loss=tf.keras.losses.mae, 
                   optimizer=tf.keras.optimizers.Adam(learning_rate=0.01),
                  metrics=["mae"])
mFour.fit(tf.expand_dims(indVar, axis=-1), depVar, epochs=100)
Epoch 1/100
1/1 [==============================] - 2s 2s/step - loss: 13.9719 - mae: 13.9719
Epoch 2/100
1/1 [==============================] - 0s 16ms/step - loss: 13.3078 - mae: 13.3078
Epoch 3/100
1/1 [==============================] - 0s 17ms/step - loss: 12.6463 - mae: 12.6463
Epoch 4/100
1/1 [==============================] - 0s 15ms/step - loss: 11.9838 - mae: 11.9838
Epoch 5/100
1/1 [==============================] - 0s 15ms/step - loss: 11.3169 - mae: 11.3169
Epoch 6/100
1/1 [==============================] - 0s 15ms/step - loss: 10.6430 - mae: 10.6430
Epoch 7/100
1/1 [==============================] - 0s 15ms/step - loss: 9.9593 - mae: 9.9593
Epoch 8/100
1/1 [==============================] - 0s 15ms/step - loss: 9.2629 - mae: 9.2629
Epoch 9/100
1/1 [==============================] - 0s 15ms/step - loss: 8.5505 - mae: 8.5505
Epoch 10/100
1/1 [==============================] - 0s 15ms/step - loss: 7.8185 - mae: 7.8185
Epoch 11/100
1/1 [==============================] - 0s 15ms/step - loss: 7.0638 - mae: 7.0638
Epoch 12/100
1/1 [==============================] - 0s 17ms/step - loss: 6.7142 - mae: 6.7142
Epoch 13/100
1/1 [==============================] - 0s 18ms/step - loss: 6.9971 - mae: 6.9971
Epoch 14/100
1/1 [==============================] - 0s 16ms/step - loss: 7.2948 - mae: 7.2948
Epoch 15/100
1/1 [==============================] - 0s 15ms/step - loss: 7.6387 - mae: 7.6387
Epoch 16/100
1/1 [==============================] - 0s 15ms/step - loss: 7.7572 - mae: 7.7572
Epoch 17/100
1/1 [==============================] - 0s 15ms/step - loss: 7.6730 - mae: 7.6730
Epoch 18/100
1/1 [==============================] - 0s 15ms/step - loss: 7.4355 - mae: 7.4355
Epoch 19/100
1/1 [==============================] - 0s 15ms/step - loss: 7.0819 - mae: 7.0819
Epoch 20/100
1/1 [==============================] - 0s 19ms/step - loss: 6.7707 - mae: 6.7707
Epoch 21/100
1/1 [==============================] - 0s 15ms/step - loss: 6.4845 - mae: 6.4845
Epoch 22/100
1/1 [==============================] - 0s 15ms/step - loss: 6.1899 - mae: 6.1899
Epoch 23/100
1/1 [==============================] - 0s 18ms/step - loss: 6.0660 - mae: 6.0660
Epoch 24/100
1/1 [==============================] - 0s 15ms/step - loss: 6.0265 - mae: 6.0265
Epoch 25/100
1/1 [==============================] - 0s 15ms/step - loss: 6.2063 - mae: 6.2063
Epoch 26/100
1/1 [==============================] - 0s 15ms/step - loss: 6.3025 - mae: 6.3025
Epoch 27/100
1/1 [==============================] - 0s 15ms/step - loss: 6.2996 - mae: 6.2996
Epoch 28/100
1/1 [==============================] - 0s 15ms/step - loss: 6.2099 - mae: 6.2099
Epoch 29/100
1/1 [==============================] - 0s 15ms/step - loss: 6.0424 - mae: 6.0424
Epoch 30/100
1/1 [==============================] - 0s 15ms/step - loss: 5.8039 - mae: 5.8039
Epoch 31/100
1/1 [==============================] - 0s 15ms/step - loss: 5.5068 - mae: 5.5068
Epoch 32/100
1/1 [==============================] - 0s 15ms/step - loss: 5.4012 - mae: 5.4012
Epoch 33/100
1/1 [==============================] - 0s 15ms/step - loss: 5.2927 - mae: 5.2927
Epoch 34/100
1/1 [==============================] - 0s 16ms/step - loss: 5.2614 - mae: 5.2614
Epoch 35/100
1/1 [==============================] - 0s 18ms/step - loss: 5.2559 - mae: 5.2559
Epoch 36/100
1/1 [==============================] - 0s 15ms/step - loss: 5.2080 - mae: 5.2080
Epoch 37/100
1/1 [==============================] - 0s 15ms/step - loss: 5.1211 - mae: 5.1211
Epoch 38/100
1/1 [==============================] - 0s 15ms/step - loss: 4.9985 - mae: 4.9985
Epoch 39/100
1/1 [==============================] - 0s 15ms/step - loss: 4.8433 - mae: 4.8433
Epoch 40/100
1/1 [==============================] - 0s 15ms/step - loss: 4.6586 - mae: 4.6586
Epoch 41/100
1/1 [==============================] - 0s 15ms/step - loss: 4.5234 - mae: 4.5234
Epoch 42/100
1/1 [==============================] - 0s 15ms/step - loss: 4.4325 - mae: 4.4325
Epoch 43/100
1/1 [==============================] - 0s 15ms/step - loss: 4.3340 - mae: 4.3340
Epoch 44/100
1/1 [==============================] - 0s 15ms/step - loss: 4.2826 - mae: 4.2826
Epoch 45/100
1/1 [==============================] - 0s 15ms/step - loss: 4.1589 - mae: 4.1589
Epoch 46/100
1/1 [==============================] - 0s 15ms/step - loss: 3.9608 - mae: 3.9608
Epoch 47/100
1/1 [==============================] - 0s 16ms/step - loss: 3.8120 - mae: 3.8120
Epoch 48/100
1/1 [==============================] - 0s 15ms/step - loss: 3.6564 - mae: 3.6564
Epoch 49/100
1/1 [==============================] - 0s 15ms/step - loss: 3.5064 - mae: 3.5064
Epoch 50/100
1/1 [==============================] - 0s 15ms/step - loss: 3.3872 - mae: 3.3872
Epoch 51/100
1/1 [==============================] - 0s 15ms/step - loss: 3.2206 - mae: 3.2206
Epoch 52/100
1/1 [==============================] - 0s 15ms/step - loss: 3.0274 - mae: 3.0274
Epoch 53/100
1/1 [==============================] - 0s 16ms/step - loss: 2.8648 - mae: 2.8648
Epoch 54/100
1/1 [==============================] - 0s 15ms/step - loss: 2.6918 - mae: 2.6918
Epoch 55/100
1/1 [==============================] - 0s 15ms/step - loss: 2.5084 - mae: 2.5084
Epoch 56/100
1/1 [==============================] - 0s 15ms/step - loss: 2.3143 - mae: 2.3143
Epoch 57/100
1/1 [==============================] - 0s 15ms/step - loss: 2.1095 - mae: 2.1095
Epoch 58/100
1/1 [==============================] - 0s 15ms/step - loss: 1.8937 - mae: 1.8937
Epoch 59/100
1/1 [==============================] - 0s 17ms/step - loss: 1.6668 - mae: 1.6668
Epoch 60/100
1/1 [==============================] - 0s 15ms/step - loss: 1.4285 - mae: 1.4285
Epoch 61/100
1/1 [==============================] - 0s 17ms/step - loss: 1.2146 - mae: 1.2146
Epoch 62/100
1/1 [==============================] - 0s 15ms/step - loss: 0.9407 - mae: 0.9407
Epoch 63/100
1/1 [==============================] - 0s 15ms/step - loss: 0.7351 - mae: 0.7351
Epoch 64/100
1/1 [==============================] - 0s 15ms/step - loss: 0.4361 - mae: 0.4361
Epoch 65/100
1/1 [==============================] - 0s 16ms/step - loss: 0.3288 - mae: 0.3288
Epoch 66/100
1/1 [==============================] - 0s 15ms/step - loss: 0.2512 - mae: 0.2512
Epoch 67/100
1/1 [==============================] - 0s 15ms/step - loss: 0.4235 - mae: 0.4235
Epoch 68/100
1/1 [==============================] - 0s 15ms/step - loss: 0.5682 - mae: 0.5682
Epoch 69/100
1/1 [==============================] - 0s 15ms/step - loss: 0.6563 - mae: 0.6563
Epoch 70/100
1/1 [==============================] - 0s 15ms/step - loss: 0.7068 - mae: 0.7068
Epoch 71/100
1/1 [==============================] - 0s 15ms/step - loss: 0.7562 - mae: 0.7562
Epoch 72/100
1/1 [==============================] - 0s 15ms/step - loss: 0.7907 - mae: 0.7907
Epoch 73/100
1/1 [==============================] - 0s 15ms/step - loss: 0.6607 - mae: 0.6607
Epoch 74/100
1/1 [==============================] - 0s 15ms/step - loss: 0.6651 - mae: 0.6651
Epoch 75/100
1/1 [==============================] - 0s 15ms/step - loss: 0.5813 - mae: 0.5813
Epoch 76/100
1/1 [==============================] - 0s 15ms/step - loss: 0.3394 - mae: 0.3394
Epoch 77/100
1/1 [==============================] - 0s 15ms/step - loss: 0.3367 - mae: 0.3367
Epoch 78/100
1/1 [==============================] - 0s 15ms/step - loss: 0.1364 - mae: 0.1364
Epoch 79/100
1/1 [==============================] - 0s 15ms/step - loss: 0.3209 - mae: 0.3209
Epoch 80/100
1/1 [==============================] - 0s 15ms/step - loss: 0.4119 - mae: 0.4119
Epoch 81/100
1/1 [==============================] - 0s 15ms/step - loss: 0.3162 - mae: 0.3162
Epoch 82/100
1/1 [==============================] - 0s 15ms/step - loss: 0.4758 - mae: 0.4758
Epoch 83/100
1/1 [==============================] - 0s 16ms/step - loss: 0.4860 - mae: 0.4860
Epoch 84/100
1/1 [==============================] - 0s 14ms/step - loss: 0.3739 - mae: 0.3739
Epoch 85/100
1/1 [==============================] - 0s 14ms/step - loss: 0.4546 - mae: 0.4546
Epoch 86/100
1/1 [==============================] - 0s 15ms/step - loss: 0.3964 - mae: 0.3964
Epoch 87/100
1/1 [==============================] - 0s 15ms/step - loss: 0.2002 - mae: 0.2002
Epoch 88/100
1/1 [==============================] - 0s 15ms/step - loss: 0.2906 - mae: 0.2906
Epoch 89/100
1/1 [==============================] - 0s 15ms/step - loss: 0.2834 - mae: 0.2834
Epoch 90/100
1/1 [==============================] - 0s 15ms/step - loss: 0.0937 - mae: 0.0937
Epoch 91/100
1/1 [==============================] - 0s 15ms/step - loss: 0.1835 - mae: 0.1835
Epoch 92/100
1/1 [==============================] - 0s 15ms/step - loss: 0.1459 - mae: 0.1459
Epoch 93/100
1/1 [==============================] - 0s 16ms/step - loss: 0.1355 - mae: 0.1355
Epoch 94/100
1/1 [==============================] - 0s 15ms/step - loss: 0.1572 - mae: 0.1572
Epoch 95/100
1/1 [==============================] - 0s 15ms/step - loss: 0.1068 - mae: 0.1068
Epoch 96/100
1/1 [==============================] - 0s 15ms/step - loss: 0.2074 - mae: 0.2074
Epoch 97/100
1/1 [==============================] - 0s 14ms/step - loss: 0.2497 - mae: 0.2497
Epoch 98/100
1/1 [==============================] - 0s 15ms/step - loss: 0.1256 - mae: 0.1256
Epoch 99/100
1/1 [==============================] - 0s 15ms/step - loss: 0.4174 - mae: 0.4174
Epoch 100/100
1/1 [==============================] - 0s 15ms/step - loss: 0.4758 - mae: 0.4758
Out [50]:
<keras.src.callbacks.History at 0x7f290b9310>
In [51]:
# Try and predict what y would be if X was 17.0
mFour.predict([17.0]) # the right answer is 27.0 (y = X + 10)
1/1 [==============================] - 0s 188ms/step
Out [51]:
array([[27.622854]], dtype=float32)

It guessed 27.62, VERY CLOSE to the goal of 27!