Quick Start: TF Watcherο
What if you could monitor your Machine Learning jobs on Colab, Kaggle, AzureML, or pretty much anywhere on your mobile phones, so you could monitor your models on the fly. Even while taking a walkπΆin < 5 lines of code!
Consider giving a starβ to the project if you like it.
In this example weβll use the Fashion MNIST dataset to serve as a quickstart.
Setupο
We start off by installing TF Watcher from PyPI.
[1]:
!pip install tf-watcher
Collecting tf-watcher
Downloading tf_watcher-0.1.1-py3-none-any.whl (22 kB)
Collecting pyrebase4~=4.5.0
Downloading Pyrebase4-4.5.0-py3-none-any.whl (8.9 kB)
Collecting tensorflow~=2.5.0
Downloading tensorflow-2.5.1-cp37-cp37m-manylinux2010_x86_64.whl (454.4 MB)
|ββββββββββββββββββββββββββββββββ| 454.4 MB 8.9 kB/s
Collecting pycryptodome>=3.6.4
Downloading pycryptodome-3.10.1-cp35-abi3-manylinux2010_x86_64.whl (1.9 MB)
|ββββββββββββββββββββββββββββββββ| 1.9 MB 66.0 MB/s
Collecting requests-toolbelt>=0.7.1
Downloading requests_toolbelt-0.9.1-py2.py3-none-any.whl (54 kB)
|ββββββββββββββββββββββββββββββββ| 54 kB 2.1 MB/s
Requirement already satisfied: oauth2client>=4.1.2 in /usr/local/lib/python3.7/dist-packages (from pyrebase4~=4.5.0->tf-watcher) (4.1.3)
Requirement already satisfied: requests>=2.19.1 in /usr/local/lib/python3.7/dist-packages (from pyrebase4~=4.5.0->tf-watcher) (2.23.0)
Collecting python-jwt>=2.0.1
Downloading python_jwt-3.3.0-py2.py3-none-any.whl (6.8 kB)
Collecting gcloud>=0.18.3
Downloading gcloud-0.18.3.tar.gz (454 kB)
|ββββββββββββββββββββββββββββββββ| 454 kB 53.1 MB/s
Requirement already satisfied: httplib2>=0.9.1 in /usr/local/lib/python3.7/dist-packages (from gcloud>=0.18.3->pyrebase4~=4.5.0->tf-watcher) (0.17.4)
Requirement already satisfied: googleapis-common-protos in /usr/local/lib/python3.7/dist-packages (from gcloud>=0.18.3->pyrebase4~=4.5.0->tf-watcher) (1.53.0)
Requirement already satisfied: protobuf!=3.0.0.b2.post1,>=3.0.0b2 in /usr/local/lib/python3.7/dist-packages (from gcloud>=0.18.3->pyrebase4~=4.5.0->tf-watcher) (3.17.3)
Requirement already satisfied: six in /usr/local/lib/python3.7/dist-packages (from gcloud>=0.18.3->pyrebase4~=4.5.0->tf-watcher) (1.15.0)
Requirement already satisfied: rsa>=3.1.4 in /usr/local/lib/python3.7/dist-packages (from oauth2client>=4.1.2->pyrebase4~=4.5.0->tf-watcher) (4.7.2)
Requirement already satisfied: pyasn1>=0.1.7 in /usr/local/lib/python3.7/dist-packages (from oauth2client>=4.1.2->pyrebase4~=4.5.0->tf-watcher) (0.4.8)
Requirement already satisfied: pyasn1-modules>=0.0.5 in /usr/local/lib/python3.7/dist-packages (from oauth2client>=4.1.2->pyrebase4~=4.5.0->tf-watcher) (0.2.8)
Collecting jwcrypto>=0.8
Downloading jwcrypto-1.0-py2.py3-none-any.whl (82 kB)
|ββββββββββββββββββββββββββββββββ| 82 kB 900 kB/s
Collecting deprecated
Downloading Deprecated-1.2.12-py2.py3-none-any.whl (9.5 kB)
Collecting cryptography>=2.3
Downloading cryptography-3.4.7-cp36-abi3-manylinux2014_x86_64.whl (3.2 MB)
|ββββββββββββββββββββββββββββββββ| 3.2 MB 41.4 MB/s
Requirement already satisfied: cffi>=1.12 in /usr/local/lib/python3.7/dist-packages (from cryptography>=2.3->jwcrypto>=0.8->python-jwt>=2.0.1->pyrebase4~=4.5.0->tf-watcher) (1.14.6)
Requirement already satisfied: pycparser in /usr/local/lib/python3.7/dist-packages (from cffi>=1.12->cryptography>=2.3->jwcrypto>=0.8->python-jwt>=2.0.1->pyrebase4~=4.5.0->tf-watcher) (2.20)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.7/dist-packages (from requests>=2.19.1->pyrebase4~=4.5.0->tf-watcher) (2021.5.30)
Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.7/dist-packages (from requests>=2.19.1->pyrebase4~=4.5.0->tf-watcher) (2.10)
Requirement already satisfied: chardet<4,>=3.0.2 in /usr/local/lib/python3.7/dist-packages (from requests>=2.19.1->pyrebase4~=4.5.0->tf-watcher) (3.0.4)
Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /usr/local/lib/python3.7/dist-packages (from requests>=2.19.1->pyrebase4~=4.5.0->tf-watcher) (1.24.3)
Collecting keras-nightly~=2.5.0.dev
Downloading keras_nightly-2.5.0.dev2021032900-py2.py3-none-any.whl (1.2 MB)
|ββββββββββββββββββββββββββββββββ| 1.2 MB 68.9 MB/s
Requirement already satisfied: numpy~=1.19.2 in /usr/local/lib/python3.7/dist-packages (from tensorflow~=2.5.0->tf-watcher) (1.19.5)
Requirement already satisfied: opt-einsum~=3.3.0 in /usr/local/lib/python3.7/dist-packages (from tensorflow~=2.5.0->tf-watcher) (3.3.0)
Requirement already satisfied: google-pasta~=0.2 in /usr/local/lib/python3.7/dist-packages (from tensorflow~=2.5.0->tf-watcher) (0.2.0)
Requirement already satisfied: tensorboard~=2.5 in /usr/local/lib/python3.7/dist-packages (from tensorflow~=2.5.0->tf-watcher) (2.6.0)
Collecting tensorflow-estimator<2.6.0,>=2.5.0
Downloading tensorflow_estimator-2.5.0-py2.py3-none-any.whl (462 kB)
|ββββββββββββββββββββββββββββββββ| 462 kB 74.3 MB/s
Requirement already satisfied: absl-py~=0.10 in /usr/local/lib/python3.7/dist-packages (from tensorflow~=2.5.0->tf-watcher) (0.12.0)
Collecting grpcio~=1.34.0
Downloading grpcio-1.34.1-cp37-cp37m-manylinux2014_x86_64.whl (4.0 MB)
|ββββββββββββββββββββββββββββββββ| 4.0 MB 41.3 MB/s
Requirement already satisfied: typing-extensions~=3.7.4 in /usr/local/lib/python3.7/dist-packages (from tensorflow~=2.5.0->tf-watcher) (3.7.4.3)
Requirement already satisfied: keras-preprocessing~=1.1.2 in /usr/local/lib/python3.7/dist-packages (from tensorflow~=2.5.0->tf-watcher) (1.1.2)
Requirement already satisfied: termcolor~=1.1.0 in /usr/local/lib/python3.7/dist-packages (from tensorflow~=2.5.0->tf-watcher) (1.1.0)
Requirement already satisfied: astunparse~=1.6.3 in /usr/local/lib/python3.7/dist-packages (from tensorflow~=2.5.0->tf-watcher) (1.6.3)
Requirement already satisfied: flatbuffers~=1.12.0 in /usr/local/lib/python3.7/dist-packages (from tensorflow~=2.5.0->tf-watcher) (1.12)
Requirement already satisfied: h5py~=3.1.0 in /usr/local/lib/python3.7/dist-packages (from tensorflow~=2.5.0->tf-watcher) (3.1.0)
Requirement already satisfied: gast==0.4.0 in /usr/local/lib/python3.7/dist-packages (from tensorflow~=2.5.0->tf-watcher) (0.4.0)
Requirement already satisfied: wrapt~=1.12.1 in /usr/local/lib/python3.7/dist-packages (from tensorflow~=2.5.0->tf-watcher) (1.12.1)
Requirement already satisfied: wheel~=0.35 in /usr/local/lib/python3.7/dist-packages (from tensorflow~=2.5.0->tf-watcher) (0.37.0)
Requirement already satisfied: cached-property in /usr/local/lib/python3.7/dist-packages (from h5py~=3.1.0->tensorflow~=2.5.0->tf-watcher) (1.5.2)
Requirement already satisfied: tensorboard-data-server<0.7.0,>=0.6.0 in /usr/local/lib/python3.7/dist-packages (from tensorboard~=2.5->tensorflow~=2.5.0->tf-watcher) (0.6.1)
Requirement already satisfied: setuptools>=41.0.0 in /usr/local/lib/python3.7/dist-packages (from tensorboard~=2.5->tensorflow~=2.5.0->tf-watcher) (57.4.0)
Requirement already satisfied: google-auth-oauthlib<0.5,>=0.4.1 in /usr/local/lib/python3.7/dist-packages (from tensorboard~=2.5->tensorflow~=2.5.0->tf-watcher) (0.4.5)
Requirement already satisfied: tensorboard-plugin-wit>=1.6.0 in /usr/local/lib/python3.7/dist-packages (from tensorboard~=2.5->tensorflow~=2.5.0->tf-watcher) (1.8.0)
Requirement already satisfied: werkzeug>=0.11.15 in /usr/local/lib/python3.7/dist-packages (from tensorboard~=2.5->tensorflow~=2.5.0->tf-watcher) (1.0.1)
Requirement already satisfied: markdown>=2.6.8 in /usr/local/lib/python3.7/dist-packages (from tensorboard~=2.5->tensorflow~=2.5.0->tf-watcher) (3.3.4)
Requirement already satisfied: google-auth<2,>=1.6.3 in /usr/local/lib/python3.7/dist-packages (from tensorboard~=2.5->tensorflow~=2.5.0->tf-watcher) (1.34.0)
Requirement already satisfied: cachetools<5.0,>=2.0.0 in /usr/local/lib/python3.7/dist-packages (from google-auth<2,>=1.6.3->tensorboard~=2.5->tensorflow~=2.5.0->tf-watcher) (4.2.2)
Requirement already satisfied: requests-oauthlib>=0.7.0 in /usr/local/lib/python3.7/dist-packages (from google-auth-oauthlib<0.5,>=0.4.1->tensorboard~=2.5->tensorflow~=2.5.0->tf-watcher) (1.3.0)
Requirement already satisfied: importlib-metadata in /usr/local/lib/python3.7/dist-packages (from markdown>=2.6.8->tensorboard~=2.5->tensorflow~=2.5.0->tf-watcher) (4.6.4)
Requirement already satisfied: oauthlib>=3.0.0 in /usr/local/lib/python3.7/dist-packages (from requests-oauthlib>=0.7.0->google-auth-oauthlib<0.5,>=0.4.1->tensorboard~=2.5->tensorflow~=2.5.0->tf-watcher) (3.1.1)
Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.7/dist-packages (from importlib-metadata->markdown>=2.6.8->tensorboard~=2.5->tensorflow~=2.5.0->tf-watcher) (3.5.0)
Building wheels for collected packages: gcloud
Building wheel for gcloud (setup.py) ... done
Created wheel for gcloud: filename=gcloud-0.18.3-py3-none-any.whl size=602936 sha256=207e73d727a7400f3c987feb991b513d6d82ec58ce461b1ae54dc4284ccc2c94
Stored in directory: /root/.cache/pip/wheels/50/9d/19/dc1a639905431252dbf8a61388a83459c5cfef7add445bebe4
Successfully built gcloud
Installing collected packages: deprecated, cryptography, jwcrypto, grpcio, tensorflow-estimator, requests-toolbelt, python-jwt, pycryptodome, keras-nightly, gcloud, tensorflow, pyrebase4, tf-watcher
Attempting uninstall: grpcio
Found existing installation: grpcio 1.39.0
Uninstalling grpcio-1.39.0:
Successfully uninstalled grpcio-1.39.0
Attempting uninstall: tensorflow-estimator
Found existing installation: tensorflow-estimator 2.6.0
Uninstalling tensorflow-estimator-2.6.0:
Successfully uninstalled tensorflow-estimator-2.6.0
Attempting uninstall: tensorflow
Found existing installation: tensorflow 2.6.0
Uninstalling tensorflow-2.6.0:
Successfully uninstalled tensorflow-2.6.0
Successfully installed cryptography-3.4.7 deprecated-1.2.12 gcloud-0.18.3 grpcio-1.34.1 jwcrypto-1.0 keras-nightly-2.5.0.dev2021032900 pycryptodome-3.10.1 pyrebase4-4.5.0 python-jwt-3.3.0 requests-toolbelt-0.9.1 tensorflow-2.5.1 tensorflow-estimator-2.5.0 tf-watcher-0.1.1
[2]:
import tensorflow as tf
from tensorflow import keras
import tfwatcher
Get the dataο
[3]:
# Load example MNIST data and pre-process it
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz
11493376/11490434 [==============================] - 0s 0us/step
Some simple pre-processing
[4]:
x_train = x_train.reshape(-1, 784).astype("float32") / 255.0
x_test = x_test.reshape(-1, 784).astype("float32") / 255.0
# Limit the data to 1000 samples
x_train = x_train[:1000]
y_train = y_train[:1000]
x_test = x_test[:1000]
y_test = y_test[:1000]
Create a simple modelο
Note the metrics
argument in model.compile
, specify any additional metrics you want to log from here.
[5]:
# Define the Keras model to add callbacks to
def get_model():
model = keras.Sequential()
model.add(keras.layers.Dense(1, input_dim=784))
model.compile(
optimizer=keras.optimizers.RMSprop(learning_rate=0.1),
loss="mean_squared_error",
metrics=["accuracy"],
)
return model
Use TF Watcher while trainingο
We use the
EpochEnd
class from TF Watcher to specify we are interested in operating in the epoch levelWe pass in
schedule
as 1 to monitor after every epoch. You could pass in this as 3 to monitor after every 3 epochs or also pass in a list of the specific epoch number you want to monitor on
[6]:
MonitorCallback = tfwatcher.callbacks.EpochEnd(schedule = 1)
Use this ID to monitor training for this session: ybhzyxK
We will now use this ID on https://www.tfwatcher.tech to monitor our model
[7]:
model = get_model()
history = model.fit(
x_train,
y_train,
batch_size=128,
epochs=100,
validation_split=0.5,
callbacks = [MonitorCallback]
)
Epoch 1/100
4/4 [==============================] - 1s 58ms/step - loss: 220.0279 - accuracy: 0.1400 - val_loss: 7.1787 - val_accuracy: 0.1000
Epoch 2/100
4/4 [==============================] - 0s 9ms/step - loss: 5.8449 - accuracy: 0.1400 - val_loss: 5.6531 - val_accuracy: 0.1240
Epoch 3/100
4/4 [==============================] - 0s 10ms/step - loss: 4.3850 - accuracy: 0.1580 - val_loss: 4.7036 - val_accuracy: 0.1160
Epoch 4/100
4/4 [==============================] - 0s 9ms/step - loss: 3.6359 - accuracy: 0.1700 - val_loss: 5.1514 - val_accuracy: 0.1040
Epoch 5/100
4/4 [==============================] - 0s 10ms/step - loss: 22.7958 - accuracy: 0.1500 - val_loss: 94.3385 - val_accuracy: 0.1000
Epoch 6/100
4/4 [==============================] - 0s 11ms/step - loss: 66.1149 - accuracy: 0.1160 - val_loss: 38.9990 - val_accuracy: 0.1000
Epoch 7/100
4/4 [==============================] - 0s 10ms/step - loss: 23.7571 - accuracy: 0.1280 - val_loss: 16.4039 - val_accuracy: 0.1000
Epoch 8/100
4/4 [==============================] - 0s 9ms/step - loss: 16.1609 - accuracy: 0.1080 - val_loss: 31.8129 - val_accuracy: 0.1000
Epoch 9/100
4/4 [==============================] - 0s 10ms/step - loss: 36.0135 - accuracy: 0.1200 - val_loss: 47.4181 - val_accuracy: 0.1000
Epoch 10/100
4/4 [==============================] - 0s 10ms/step - loss: 38.0579 - accuracy: 0.1220 - val_loss: 24.0960 - val_accuracy: 0.1000
Epoch 11/100
4/4 [==============================] - 0s 10ms/step - loss: 23.2553 - accuracy: 0.1040 - val_loss: 24.5393 - val_accuracy: 0.1000
Epoch 12/100
4/4 [==============================] - 0s 9ms/step - loss: 25.9761 - accuracy: 0.1180 - val_loss: 43.4903 - val_accuracy: 0.1000
Epoch 13/100
4/4 [==============================] - 0s 9ms/step - loss: 36.0534 - accuracy: 0.1320 - val_loss: 27.3967 - val_accuracy: 0.1000
Epoch 14/100
4/4 [==============================] - 0s 9ms/step - loss: 23.6804 - accuracy: 0.1200 - val_loss: 30.0495 - val_accuracy: 0.1000
Epoch 15/100
4/4 [==============================] - 0s 9ms/step - loss: 34.2381 - accuracy: 0.1220 - val_loss: 41.0987 - val_accuracy: 0.1000
Epoch 16/100
4/4 [==============================] - 0s 9ms/step - loss: 28.6988 - accuracy: 0.1220 - val_loss: 38.2743 - val_accuracy: 0.1000
Epoch 17/100
4/4 [==============================] - 0s 9ms/step - loss: 29.1761 - accuracy: 0.1180 - val_loss: 38.2930 - val_accuracy: 0.1000
Epoch 18/100
4/4 [==============================] - 0s 11ms/step - loss: 29.0422 - accuracy: 0.1320 - val_loss: 33.8774 - val_accuracy: 0.1000
Epoch 19/100
4/4 [==============================] - 0s 10ms/step - loss: 25.2365 - accuracy: 0.1360 - val_loss: 36.8045 - val_accuracy: 0.1000
Epoch 20/100
4/4 [==============================] - 0s 9ms/step - loss: 33.1871 - accuracy: 0.1080 - val_loss: 35.7805 - val_accuracy: 0.1000
Epoch 21/100
4/4 [==============================] - 0s 15ms/step - loss: 30.1454 - accuracy: 0.1140 - val_loss: 29.5536 - val_accuracy: 0.1000
Epoch 22/100
4/4 [==============================] - 0s 11ms/step - loss: 24.0112 - accuracy: 0.1120 - val_loss: 30.0866 - val_accuracy: 0.1000
Epoch 23/100
4/4 [==============================] - 0s 10ms/step - loss: 34.7015 - accuracy: 0.1040 - val_loss: 29.4295 - val_accuracy: 0.1000
Epoch 24/100
4/4 [==============================] - 0s 10ms/step - loss: 24.5739 - accuracy: 0.1340 - val_loss: 23.0243 - val_accuracy: 0.1000
Epoch 25/100
4/4 [==============================] - 0s 10ms/step - loss: 20.7962 - accuracy: 0.1360 - val_loss: 50.8549 - val_accuracy: 0.1000
Epoch 26/100
4/4 [==============================] - 0s 15ms/step - loss: 41.6597 - accuracy: 0.1160 - val_loss: 32.8466 - val_accuracy: 0.1000
Epoch 27/100
4/4 [==============================] - 0s 14ms/step - loss: 26.6706 - accuracy: 0.1260 - val_loss: 31.4648 - val_accuracy: 0.1000
Epoch 28/100
4/4 [==============================] - 0s 12ms/step - loss: 28.9898 - accuracy: 0.1060 - val_loss: 34.4348 - val_accuracy: 0.1000
Epoch 29/100
4/4 [==============================] - 0s 10ms/step - loss: 32.6081 - accuracy: 0.1180 - val_loss: 37.6328 - val_accuracy: 0.1000
Epoch 30/100
4/4 [==============================] - 0s 10ms/step - loss: 26.6324 - accuracy: 0.1340 - val_loss: 26.2719 - val_accuracy: 0.1000
Epoch 31/100
4/4 [==============================] - 0s 12ms/step - loss: 17.5867 - accuracy: 0.1200 - val_loss: 32.1177 - val_accuracy: 0.1000
Epoch 32/100
4/4 [==============================] - 0s 10ms/step - loss: 34.4390 - accuracy: 0.1240 - val_loss: 46.8234 - val_accuracy: 0.1000
Epoch 33/100
4/4 [==============================] - 0s 15ms/step - loss: 35.8227 - accuracy: 0.1020 - val_loss: 24.2219 - val_accuracy: 0.1000
Epoch 34/100
4/4 [==============================] - 0s 10ms/step - loss: 19.7204 - accuracy: 0.1160 - val_loss: 32.0298 - val_accuracy: 0.1000
Epoch 35/100
4/4 [==============================] - 0s 12ms/step - loss: 34.6682 - accuracy: 0.1300 - val_loss: 43.5553 - val_accuracy: 0.1000
Epoch 36/100
4/4 [==============================] - 0s 10ms/step - loss: 27.7967 - accuracy: 0.1360 - val_loss: 35.5064 - val_accuracy: 0.1000
Epoch 37/100
4/4 [==============================] - 0s 10ms/step - loss: 24.1768 - accuracy: 0.1060 - val_loss: 33.8834 - val_accuracy: 0.1000
Epoch 38/100
4/4 [==============================] - 0s 13ms/step - loss: 35.0535 - accuracy: 0.0980 - val_loss: 33.7792 - val_accuracy: 0.1000
Epoch 39/100
4/4 [==============================] - 0s 9ms/step - loss: 27.3413 - accuracy: 0.1040 - val_loss: 26.7047 - val_accuracy: 0.1000
Epoch 40/100
4/4 [==============================] - 0s 9ms/step - loss: 26.9778 - accuracy: 0.1180 - val_loss: 34.2578 - val_accuracy: 0.1000
Epoch 41/100
4/4 [==============================] - 0s 10ms/step - loss: 28.9345 - accuracy: 0.0940 - val_loss: 38.9659 - val_accuracy: 0.1000
Epoch 42/100
4/4 [==============================] - 0s 11ms/step - loss: 31.8423 - accuracy: 0.1180 - val_loss: 33.2312 - val_accuracy: 0.1000
Epoch 43/100
4/4 [==============================] - 0s 10ms/step - loss: 27.6944 - accuracy: 0.1100 - val_loss: 23.8519 - val_accuracy: 0.1000
Epoch 44/100
4/4 [==============================] - 0s 9ms/step - loss: 21.8561 - accuracy: 0.1160 - val_loss: 37.2674 - val_accuracy: 0.1000
Epoch 45/100
4/4 [==============================] - 0s 10ms/step - loss: 28.3689 - accuracy: 0.1200 - val_loss: 50.9949 - val_accuracy: 0.1000
Epoch 46/100
4/4 [==============================] - 0s 11ms/step - loss: 37.0924 - accuracy: 0.1120 - val_loss: 37.8075 - val_accuracy: 0.1000
Epoch 47/100
4/4 [==============================] - 0s 15ms/step - loss: 22.4427 - accuracy: 0.1220 - val_loss: 31.0246 - val_accuracy: 0.1000
Epoch 48/100
4/4 [==============================] - 0s 16ms/step - loss: 30.8454 - accuracy: 0.1160 - val_loss: 40.3705 - val_accuracy: 0.1000
Epoch 49/100
4/4 [==============================] - 0s 12ms/step - loss: 30.1953 - accuracy: 0.1080 - val_loss: 39.0889 - val_accuracy: 0.1000
Epoch 50/100
4/4 [==============================] - 0s 10ms/step - loss: 19.4889 - accuracy: 0.1080 - val_loss: 34.6825 - val_accuracy: 0.1000
Epoch 51/100
4/4 [==============================] - 0s 10ms/step - loss: 34.8757 - accuracy: 0.1300 - val_loss: 49.4359 - val_accuracy: 0.1000
Epoch 52/100
4/4 [==============================] - 0s 10ms/step - loss: 34.9451 - accuracy: 0.1140 - val_loss: 31.5136 - val_accuracy: 0.1000
Epoch 53/100
4/4 [==============================] - 0s 10ms/step - loss: 22.9106 - accuracy: 0.1380 - val_loss: 26.9605 - val_accuracy: 0.1000
Epoch 54/100
4/4 [==============================] - 0s 10ms/step - loss: 26.2229 - accuracy: 0.1040 - val_loss: 38.6458 - val_accuracy: 0.1000
Epoch 55/100
4/4 [==============================] - 0s 10ms/step - loss: 26.1122 - accuracy: 0.1140 - val_loss: 45.1972 - val_accuracy: 0.1000
Epoch 56/100
4/4 [==============================] - 0s 10ms/step - loss: 36.5613 - accuracy: 0.1280 - val_loss: 33.8477 - val_accuracy: 0.1000
Epoch 57/100
4/4 [==============================] - 0s 10ms/step - loss: 26.9645 - accuracy: 0.1020 - val_loss: 29.3765 - val_accuracy: 0.1000
Epoch 58/100
4/4 [==============================] - 0s 9ms/step - loss: 23.7523 - accuracy: 0.1140 - val_loss: 38.5822 - val_accuracy: 0.1000
Epoch 59/100
4/4 [==============================] - 0s 10ms/step - loss: 30.7082 - accuracy: 0.1440 - val_loss: 40.9264 - val_accuracy: 0.1000
Epoch 60/100
4/4 [==============================] - 0s 15ms/step - loss: 31.7553 - accuracy: 0.1200 - val_loss: 28.5086 - val_accuracy: 0.1000
Epoch 61/100
4/4 [==============================] - 0s 10ms/step - loss: 27.3221 - accuracy: 0.1240 - val_loss: 32.6517 - val_accuracy: 0.1000
Epoch 62/100
4/4 [==============================] - 0s 10ms/step - loss: 27.3470 - accuracy: 0.1200 - val_loss: 39.8263 - val_accuracy: 0.1000
Epoch 63/100
4/4 [==============================] - 0s 10ms/step - loss: 26.0612 - accuracy: 0.1240 - val_loss: 34.5444 - val_accuracy: 0.1000
Epoch 64/100
4/4 [==============================] - 0s 11ms/step - loss: 34.7778 - accuracy: 0.1200 - val_loss: 44.2647 - val_accuracy: 0.1000
Epoch 65/100
4/4 [==============================] - 0s 12ms/step - loss: 34.8926 - accuracy: 0.1080 - val_loss: 34.5197 - val_accuracy: 0.1000
Epoch 66/100
4/4 [==============================] - 0s 11ms/step - loss: 24.3221 - accuracy: 0.1220 - val_loss: 30.9930 - val_accuracy: 0.1000
Epoch 67/100
4/4 [==============================] - 0s 10ms/step - loss: 27.4201 - accuracy: 0.1160 - val_loss: 37.4984 - val_accuracy: 0.1000
Epoch 68/100
4/4 [==============================] - 0s 10ms/step - loss: 28.9322 - accuracy: 0.1280 - val_loss: 36.6450 - val_accuracy: 0.1000
Epoch 69/100
4/4 [==============================] - 0s 14ms/step - loss: 28.5764 - accuracy: 0.1320 - val_loss: 34.3183 - val_accuracy: 0.1000
Epoch 70/100
4/4 [==============================] - 0s 16ms/step - loss: 23.6287 - accuracy: 0.1200 - val_loss: 40.6597 - val_accuracy: 0.1000
Epoch 71/100
4/4 [==============================] - 0s 10ms/step - loss: 30.6631 - accuracy: 0.1160 - val_loss: 43.1053 - val_accuracy: 0.1000
Epoch 72/100
4/4 [==============================] - 0s 10ms/step - loss: 31.3124 - accuracy: 0.1160 - val_loss: 31.0489 - val_accuracy: 0.1000
Epoch 73/100
4/4 [==============================] - 0s 10ms/step - loss: 24.3881 - accuracy: 0.1100 - val_loss: 36.0015 - val_accuracy: 0.1000
Epoch 74/100
4/4 [==============================] - 0s 12ms/step - loss: 32.8749 - accuracy: 0.1060 - val_loss: 31.0803 - val_accuracy: 0.1000
Epoch 75/100
4/4 [==============================] - 0s 11ms/step - loss: 23.9160 - accuracy: 0.1160 - val_loss: 32.9105 - val_accuracy: 0.1000
Epoch 76/100
4/4 [==============================] - 0s 11ms/step - loss: 31.2406 - accuracy: 0.1140 - val_loss: 34.7558 - val_accuracy: 0.1000
Epoch 77/100
4/4 [==============================] - 0s 10ms/step - loss: 26.3004 - accuracy: 0.1220 - val_loss: 40.3014 - val_accuracy: 0.1000
Epoch 78/100
4/4 [==============================] - 0s 9ms/step - loss: 37.0920 - accuracy: 0.1340 - val_loss: 27.9852 - val_accuracy: 0.1000
Epoch 79/100
4/4 [==============================] - 0s 10ms/step - loss: 20.3414 - accuracy: 0.1140 - val_loss: 27.2020 - val_accuracy: 0.1000
Epoch 80/100
4/4 [==============================] - 0s 9ms/step - loss: 29.3138 - accuracy: 0.1340 - val_loss: 47.7526 - val_accuracy: 0.1000
Epoch 81/100
4/4 [==============================] - 0s 9ms/step - loss: 34.6481 - accuracy: 0.1320 - val_loss: 32.0029 - val_accuracy: 0.1000
Epoch 82/100
4/4 [==============================] - 0s 10ms/step - loss: 19.7531 - accuracy: 0.1260 - val_loss: 23.1984 - val_accuracy: 0.1000
Epoch 83/100
4/4 [==============================] - 0s 10ms/step - loss: 27.6197 - accuracy: 0.1200 - val_loss: 44.1223 - val_accuracy: 0.1000
Epoch 84/100
4/4 [==============================] - 0s 14ms/step - loss: 42.5353 - accuracy: 0.1200 - val_loss: 33.2591 - val_accuracy: 0.1000
Epoch 85/100
4/4 [==============================] - 0s 11ms/step - loss: 19.8397 - accuracy: 0.1200 - val_loss: 18.8762 - val_accuracy: 0.1000
Epoch 86/100
4/4 [==============================] - 0s 15ms/step - loss: 19.0276 - accuracy: 0.1200 - val_loss: 39.6742 - val_accuracy: 0.1000
Epoch 87/100
4/4 [==============================] - 0s 11ms/step - loss: 45.4169 - accuracy: 0.1160 - val_loss: 33.8931 - val_accuracy: 0.1000
Epoch 88/100
4/4 [==============================] - 0s 12ms/step - loss: 26.4559 - accuracy: 0.1100 - val_loss: 16.6738 - val_accuracy: 0.1040
Epoch 89/100
4/4 [==============================] - 0s 10ms/step - loss: 12.4969 - accuracy: 0.1260 - val_loss: 33.8079 - val_accuracy: 0.1000
Epoch 90/100
4/4 [==============================] - 0s 16ms/step - loss: 38.4502 - accuracy: 0.1000 - val_loss: 49.4086 - val_accuracy: 0.1000
Epoch 91/100
4/4 [==============================] - 0s 14ms/step - loss: 29.9915 - accuracy: 0.1280 - val_loss: 36.8529 - val_accuracy: 0.1000
Epoch 92/100
4/4 [==============================] - 0s 14ms/step - loss: 25.7386 - accuracy: 0.1040 - val_loss: 31.6561 - val_accuracy: 0.1000
Epoch 93/100
4/4 [==============================] - 0s 10ms/step - loss: 27.4582 - accuracy: 0.1160 - val_loss: 50.1114 - val_accuracy: 0.1000
Epoch 94/100
4/4 [==============================] - 0s 9ms/step - loss: 36.5150 - accuracy: 0.0920 - val_loss: 28.7904 - val_accuracy: 0.1000
Epoch 95/100
4/4 [==============================] - 0s 9ms/step - loss: 19.6982 - accuracy: 0.1280 - val_loss: 35.2172 - val_accuracy: 0.1000
Epoch 96/100
4/4 [==============================] - 0s 10ms/step - loss: 31.5606 - accuracy: 0.1000 - val_loss: 39.6383 - val_accuracy: 0.1000
Epoch 97/100
4/4 [==============================] - 0s 9ms/step - loss: 32.0419 - accuracy: 0.1100 - val_loss: 37.4634 - val_accuracy: 0.1000
Epoch 98/100
4/4 [==============================] - 0s 10ms/step - loss: 25.6015 - accuracy: 0.1280 - val_loss: 23.4898 - val_accuracy: 0.1000
Epoch 99/100
4/4 [==============================] - 0s 10ms/step - loss: 22.4975 - accuracy: 0.1100 - val_loss: 41.4927 - val_accuracy: 0.1000
Epoch 100/100
4/4 [==============================] - 0s 10ms/step - loss: 38.1962 - accuracy: 0.1000 - val_loss: 33.3583 - val_accuracy: 0.1000