From 6a01b87273a4d0318a37b2422196a9b973af983a Mon Sep 17 00:00:00 2001 From: ktsitsi Date: Thu, 22 Aug 2024 13:25:15 +0300 Subject: [PATCH] Minor changes for supporting latest TF versions --- ...nsorflow_keras_tiledb_models_example.ipynb | 379 ++++-------------- setup.py | 2 +- tiledb/ml/__init__.py | 3 - tiledb/ml/models/tensorflow_keras.py | 22 +- 4 files changed, 88 insertions(+), 318 deletions(-) diff --git a/examples/models/tensorflow_keras_tiledb_models_example.ipynb b/examples/models/tensorflow_keras_tiledb_models_example.ipynb index 8eadee30..958372d7 100644 --- a/examples/models/tensorflow_keras_tiledb_models_example.ipynb +++ b/examples/models/tensorflow_keras_tiledb_models_example.ipynb @@ -10,7 +10,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 3, "metadata": { "pycharm": { "name": "#%%\n" @@ -104,19 +104,59 @@ } }, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-08-22 12:59:10.788587: I tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX2 FMA\n", + "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", + "2024-08-22 12:59:10.833063: I tensorflow/core/profiler/lib/profiler_session.cc:131] Profiler session initializing.\n", + "2024-08-22 12:59:10.833094: I tensorflow/core/profiler/lib/profiler_session.cc:146] Profiler session started.\n", + "2024-08-22 12:59:10.833256: I tensorflow/core/profiler/lib/profiler_session.cc:164] Profiler session tear down.\n", + "2024-08-22 12:59:11.107514: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:185] None of the MLIR Optimization Passes are enabled (registered 2)\n" + ] + }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/5\n", - "938/938 [==============================] - 1s 957us/step - loss: 0.3906 - accuracy: 0.8872\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", - "Epoch 2/5\n", - "938/938 [==============================] - 1s 947us/step - loss: 0.1907 - accuracy: 0.9429\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n" + " 77/938 [=>............................] - ETA: 2s - loss: 1.0641 - accuracy: 0.6981" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-08-22 12:59:11.703057: I tensorflow/core/profiler/lib/profiler_session.cc:131] Profiler session initializing.\n", + "2024-08-22 12:59:11.703101: I tensorflow/core/profiler/lib/profiler_session.cc:146] Profiler session started.\n", + "2024-08-22 12:59:11.710090: I tensorflow/core/profiler/lib/profiler_session.cc:66] Profiler session collecting data.\n", + "2024-08-22 12:59:11.712768: I tensorflow/core/profiler/lib/profiler_session.cc:164] Profiler session tear down.\n", + "2024-08-22 12:59:11.729544: I tensorflow/core/profiler/rpc/client/save_profile.cc:136] Creating directory: ../data/logs/train/plugins/profile/2024_08_22_12_59_11\n", + "\n", + "2024-08-22 12:59:11.731462: I tensorflow/core/profiler/rpc/client/save_profile.cc:142] Dumped gzipped tool data for trace.json.gz to ../data/logs/train/plugins/profile/2024_08_22_12_59_11/ktsitsi.trace.json.gz\n", + "2024-08-22 12:59:11.742256: I tensorflow/core/profiler/rpc/client/save_profile.cc:136] Creating directory: ../data/logs/train/plugins/profile/2024_08_22_12_59_11\n", + "\n", + "2024-08-22 12:59:11.742923: I tensorflow/core/profiler/rpc/client/save_profile.cc:142] Dumped gzipped tool data for memory_profile.json.gz to ../data/logs/train/plugins/profile/2024_08_22_12_59_11/ktsitsi.memory_profile.json.gz\n", + "2024-08-22 12:59:11.744557: I tensorflow/core/profiler/rpc/client/capture_profile.cc:251] Creating directory: ../data/logs/train/plugins/profile/2024_08_22_12_59_11\n", + "Dumped tool data for xplane.pb to ../data/logs/train/plugins/profile/2024_08_22_12_59_11/ktsitsi.xplane.pb\n", + "Dumped tool data for overview_page.pb to ../data/logs/train/plugins/profile/2024_08_22_12_59_11/ktsitsi.overview_page.pb\n", + "Dumped tool data for input_pipeline.pb to ../data/logs/train/plugins/profile/2024_08_22_12_59_11/ktsitsi.input_pipeline.pb\n", + "Dumped tool data for tensorflow_stats.pb to ../data/logs/train/plugins/profile/2024_08_22_12_59_11/ktsitsi.tensorflow_stats.pb\n", + "Dumped tool data for kernel_stats.pb to ../data/logs/train/plugins/profile/2024_08_22_12_59_11/ktsitsi.kernel_stats.pb\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "938/938 [==============================] - 3s 2ms/step - loss: 0.3811 - accuracy: 0.8888\n" ] }, { "data": { - "text/plain": "" + "text/plain": "" }, "execution_count": 4, "metadata": {}, @@ -144,7 +184,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": { "pycharm": { "name": "#%%\n" @@ -152,18 +192,14 @@ }, "outputs": [ { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/george/PycharmProjects/TileDB-ML/.venv/lib/python3.9/site-packages/tiledb/ctx.py:410: UserWarning: tiledb.default_ctx and scope_ctx will not function correctly due to bug in IPython contextvar support. You must supply a Ctx object to each function for custom configuration options. Please consider upgrading to ipykernel >= 6!Please see https://github.com/TileDB-Inc/TileDB-Py/issues/667 for more information.\n", - " warnings.warn(\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "number of fragments: 1\n" + "ename": "TypeError", + "evalue": "save() got an unexpected keyword argument 'callbacks'", + "output_type": "error", + "traceback": [ + "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[0;31mTypeError\u001B[0m Traceback (most recent call last)", + "\u001B[0;32m/var/folders/m9/58b7bc3128xfv4mmg8k45xgw0000gn/T/ipykernel_56886/772079740.py\u001B[0m in \u001B[0;36m\u001B[0;34m\u001B[0m\n\u001B[1;32m 2\u001B[0m \u001B[0mtiledb_model_1\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mTensorflowKerasTileDBModel\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0muri\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0muri\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mmodel\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0mmodel\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 3\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m----> 4\u001B[0;31m \u001B[0mtiledb_model_1\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0msave\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0minclude_optimizer\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0;32mTrue\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mcallbacks\u001B[0m\u001B[0;34m=\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0mcb_tb\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 5\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 6\u001B[0m \u001B[0mfragments_info\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mtiledb\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0marray_fragments\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0muri\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", + "\u001B[0;31mTypeError\u001B[0m: save() got an unexpected keyword argument 'callbacks'" ] } ], @@ -171,8 +207,7 @@ "uri = os.path.join(data_home, 'keras-mnist-sequential-1')\n", "tiledb_model_1 = TensorflowKerasTileDBModel(uri=uri, model=model)\n", "\n", - "tiledb_model_1.save(include_optimizer=True,\n", - " callbacks=[cb_tb])\n", + "tiledb_model_1.save(include_optimizer=True, callbacks=[cb_tb])\n", "\n", "fragments_info = tiledb.array_fragments(uri)\n", "print(\"number of fragments: {}\".format(len(fragments_info)))" @@ -190,55 +225,13 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": { "pycharm": { "name": "#%%\n" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['../data/keras-mnist-sequential-1/__meta',\n", - " '../data/keras-mnist-sequential-1/__fragment_meta',\n", - " '../data/keras-mnist-sequential-1/__commits',\n", - " '../data/keras-mnist-sequential-1/__schema',\n", - " '../data/keras-mnist-sequential-1/__fragments']\n", - "Key: TILEDB_ML_MODEL_ML_FRAMEWORK, Value: TENSORFLOW KERAS\n", - "Key: TILEDB_ML_MODEL_ML_FRAMEWORK_VERSION, Value: 2.10.0\n", - "Key: TILEDB_ML_MODEL_PREVIEW, Value: Model: \"sequential\"\n", - "_________________________________________________________________\n", - " Layer (type) Output Shape Param # \n", - "=================================================================\n", - " flatten (Flatten) (None, 784) 0 \n", - " \n", - " dense (Dense) (None, 128) 100480 \n", - " \n", - " dropout (Dropout) (None, 128) 0 \n", - " \n", - " dense_1 (Dense) (None, 10) 1290 \n", - " \n", - "=================================================================\n", - "Total params: 101,770\n", - "Trainable params: 101,770\n", - "Non-trainable params: 0\n", - "_________________________________________________________________\n", - "\n", - "Key: TILEDB_ML_MODEL_PYTHON_VERSION, Value: 3.9.9\n", - "Key: TILEDB_ML_MODEL_STAGE, Value: STAGING\n", - "Key: TILEDB_ML_MODEL_VERSION, Value: \n", - "Key: backend, Value: b'\"tensorflow\"'\n", - "Key: keras_version, Value: b'\"2.10.0\"'\n", - "Key: model_config, Value: b'{\"class_name\": \"Sequential\", \"config\": {\"name\": \"sequential\", \"layers\": [{\"class_name\": \"InputLayer\", \"config\": {\"batch_input_shape\": [null, 28, 28], \"dtype\": \"float32\", \"sparse\": false, \"ragged\": false, \"name\": \"flatten_input\"}}, {\"class_name\": \"Flatten\", \"config\": {\"name\": \"flatten\", \"trainable\": true, \"batch_input_shape\": [null, 28, 28], \"dtype\": \"float32\", \"data_format\": \"channels_last\"}}, {\"class_name\": \"Dense\", \"config\": {\"name\": \"dense\", \"trainable\": true, \"dtype\": \"float32\", \"units\": 128, \"activation\": \"relu\", \"use_bias\": true, \"kernel_initializer\": {\"class_name\": \"GlorotUniform\", \"config\": {\"seed\": null}}, \"bias_initializer\": {\"class_name\": \"Zeros\", \"config\": {}}, \"kernel_regularizer\": null, \"bias_regularizer\": null, \"activity_regularizer\": null, \"kernel_constraint\": null, \"bias_constraint\": null}}, {\"class_name\": \"Dropout\", \"config\": {\"name\": \"dropout\", \"trainable\": true, \"dtype\": \"float32\", \"rate\": 0.2, \"noise_shape\": null, \"seed\": null}}, {\"class_name\": \"Dense\", \"config\": {\"name\": \"dense_1\", \"trainable\": true, \"dtype\": \"float32\", \"units\": 10, \"activation\": \"linear\", \"use_bias\": true, \"kernel_initializer\": {\"class_name\": \"GlorotUniform\", \"config\": {\"seed\": null}}, \"bias_initializer\": {\"class_name\": \"Zeros\", \"config\": {}}, \"kernel_regularizer\": null, \"bias_regularizer\": null, \"activity_regularizer\": null, \"kernel_constraint\": null, \"bias_constraint\": null}}]}}'\n", - "Key: model_size, Value: 407344\n", - "Key: optimizer_size, Value: 814631\n", - "Key: tensorboard_size, Value: 34400\n", - "Key: training_config, Value: b'{\"loss\": {\"class_name\": \"SparseCategoricalCrossentropy\", \"config\": {\"reduction\": \"auto\", \"name\": \"sparse_categorical_crossentropy\", \"from_logits\": true, \"ignore_class\": null}}, \"metrics\": [[{\"class_name\": \"MeanMetricWrapper\", \"config\": {\"name\": \"accuracy\", \"dtype\": \"float32\", \"fn\": \"sparse_categorical_accuracy\"}}]], \"weighted_metrics\": null, \"loss_weights\": null, \"optimizer_config\": {\"class_name\": \"Adam\", \"config\": {\"name\": \"Adam\", \"learning_rate\": 0.0010000000474974513, \"decay\": 0.0, \"beta_1\": 0.8999999761581421, \"beta_2\": 0.9990000128746033, \"epsilon\": 1e-07, \"amsgrad\": false}}}'\n" - ] - } - ], + "outputs": [], "source": [ "# Check array directory\n", "pprint(glob.glob(f'{uri}/*'))\n", @@ -262,54 +255,13 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": { "pycharm": { "name": "#%%\n" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Key: TILEDB_ML_MODEL_ML_FRAMEWORK, Value: TENSORFLOW KERAS\n", - "Key: TILEDB_ML_MODEL_ML_FRAMEWORK_VERSION, Value: 2.10.0\n", - "Key: TILEDB_ML_MODEL_PREVIEW, Value: Model: \"sequential\"\n", - "_________________________________________________________________\n", - " Layer (type) Output Shape Param # \n", - "=================================================================\n", - " flatten (Flatten) (None, 784) 0 \n", - " \n", - " dense (Dense) (None, 128) 100480 \n", - " \n", - " dropout (Dropout) (None, 128) 0 \n", - " \n", - " dense_1 (Dense) (None, 10) 1290 \n", - " \n", - "=================================================================\n", - "Total params: 101,770\n", - "Trainable params: 101,770\n", - "Non-trainable params: 0\n", - "_________________________________________________________________\n", - "\n", - "Key: TILEDB_ML_MODEL_PYTHON_VERSION, Value: 3.9.9\n", - "Key: TILEDB_ML_MODEL_STAGE, Value: STAGING\n", - "Key: TILEDB_ML_MODEL_VERSION, Value: \n", - "Key: accuracy, Value: [0.8871999979019165, 0.9429000020027161]\n", - "Key: backend, Value: tensorflow\n", - "Key: keras_version, Value: 2.10.0\n", - "Key: last_epoch_accuracy, Value: 0.9429000020027161\n", - "Key: last_epoch_loss, Value: 0.19065023958683014\n", - "Key: loss, Value: [0.39059707522392273, 0.19065023958683014]\n", - "Key: model_config, Value: {'class_name': 'Sequential', 'config': {'name': 'sequential', 'layers': [{'class_name': 'InputLayer', 'config': {'batch_input_shape': [None, 28, 28], 'dtype': 'float32', 'sparse': False, 'ragged': False, 'name': 'flatten_input'}}, {'class_name': 'Flatten', 'config': {'name': 'flatten', 'trainable': True, 'batch_input_shape': [None, 28, 28], 'dtype': 'float32', 'data_format': 'channels_last'}}, {'class_name': 'Dense', 'config': {'name': 'dense', 'trainable': True, 'dtype': 'float32', 'units': 128, 'activation': 'relu', 'use_bias': True, 'kernel_initializer': {'class_name': 'GlorotUniform', 'config': {'seed': None}}, 'bias_initializer': {'class_name': 'Zeros', 'config': {}}, 'kernel_regularizer': None, 'bias_regularizer': None, 'activity_regularizer': None, 'kernel_constraint': None, 'bias_constraint': None}}, {'class_name': 'Dropout', 'config': {'name': 'dropout', 'trainable': True, 'dtype': 'float32', 'rate': 0.2, 'noise_shape': None, 'seed': None}}, {'class_name': 'Dense', 'config': {'name': 'dense_1', 'trainable': True, 'dtype': 'float32', 'units': 10, 'activation': 'linear', 'use_bias': True, 'kernel_initializer': {'class_name': 'GlorotUniform', 'config': {'seed': None}}, 'bias_initializer': {'class_name': 'Zeros', 'config': {}}, 'kernel_regularizer': None, 'bias_regularizer': None, 'activity_regularizer': None, 'kernel_constraint': None, 'bias_constraint': None}}]}}\n", - "Key: model_size, Value: 407344\n", - "Key: optimizer_size, Value: 814631\n", - "Key: tensorboard_size, Value: 34400\n", - "Key: training_config, Value: {'loss': {'class_name': 'SparseCategoricalCrossentropy', 'config': {'reduction': 'auto', 'name': 'sparse_categorical_crossentropy', 'from_logits': True, 'ignore_class': None}}, 'metrics': [[{'class_name': 'MeanMetricWrapper', 'config': {'name': 'accuracy', 'dtype': 'float32', 'fn': 'sparse_categorical_accuracy'}}]], 'weighted_metrics': None, 'loss_weights': None, 'optimizer_config': {'class_name': 'Adam', 'config': {'name': 'Adam', 'learning_rate': 0.0010000000474974513, 'decay': 0.0, 'beta_1': 0.8999999761581421, 'beta_2': 0.9990000128746033, 'epsilon': 1e-07, 'amsgrad': False}}}\n" - ] - } - ], + "outputs": [], "source": [ "# Open the array in write mode\n", "with tiledb.Array(uri, \"w\") as A:\n", @@ -338,69 +290,13 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": { "pycharm": { "name": "#%%\n" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Epoch 1/5\n", - "938/938 [==============================] - 1s 990us/step - loss: 0.3820 - accuracy: 0.8879\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", - "Epoch 2/5\n", - "938/938 [==============================] - 1s 941us/step - loss: 0.1892 - accuracy: 0.9440\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", - "Epoch 3/5\n", - "938/938 [==============================] - 1s 950us/step - loss: 0.1400 - accuracy: 0.9584\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", - "Epoch 4/5\n", - "938/938 [==============================] - 1s 953us/step - loss: 0.1104 - accuracy: 0.9660\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", - "Epoch 5/5\n", - "938/938 [==============================] - 1s 946us/step - loss: 0.0924 - accuracy: 0.9720\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", - "\n", - "['../data/keras-mnist-sequential-2/__meta',\n", - " '../data/keras-mnist-sequential-2/__fragment_meta',\n", - " '../data/keras-mnist-sequential-2/__commits',\n", - " '../data/keras-mnist-sequential-2/__schema',\n", - " '../data/keras-mnist-sequential-2/__fragments']\n", - "\n", - "Key: TILEDB_ML_MODEL_ML_FRAMEWORK, Value: TENSORFLOW KERAS\n", - "Key: TILEDB_ML_MODEL_ML_FRAMEWORK_VERSION, Value: 2.10.0\n", - "Key: TILEDB_ML_MODEL_PREVIEW, Value: Model: \"sequential_1\"\n", - "_________________________________________________________________\n", - " Layer (type) Output Shape Param # \n", - "=================================================================\n", - " flatten_1 (Flatten) (None, 784) 0 \n", - " \n", - " dense_2 (Dense) (None, 128) 100480 \n", - " \n", - " dropout_1 (Dropout) (None, 128) 0 \n", - " \n", - " dense_3 (Dense) (None, 10) 1290 \n", - " \n", - "=================================================================\n", - "Total params: 101,770\n", - "Trainable params: 101,770\n", - "Non-trainable params: 0\n", - "_________________________________________________________________\n", - "\n", - "Key: TILEDB_ML_MODEL_PYTHON_VERSION, Value: 3.9.9\n", - "Key: TILEDB_ML_MODEL_STAGE, Value: STAGING\n", - "Key: TILEDB_ML_MODEL_VERSION, Value: \n", - "Key: accuracy, Value: (0.8879333138465881, 0.9440333247184753, 0.9583666920661926, 0.9659666419029236, 0.9720333218574524)\n", - "Key: backend, Value: tensorflow\n", - "Key: keras_version, Value: 2.10.0\n", - "Key: loss, Value: (0.3820304572582245, 0.18920083343982697, 0.14002007246017456, 0.11041342467069626, 0.09244680404663086)\n", - "Key: model_config, Value: {'class_name': 'Sequential', 'config': {'name': 'sequential_1', 'layers': [{'class_name': 'InputLayer', 'config': {'batch_input_shape': [None, 28, 28], 'dtype': 'float32', 'sparse': False, 'ragged': False, 'name': 'flatten_1_input'}}, {'class_name': 'Flatten', 'config': {'name': 'flatten_1', 'trainable': True, 'batch_input_shape': [None, 28, 28], 'dtype': 'float32', 'data_format': 'channels_last'}}, {'class_name': 'Dense', 'config': {'name': 'dense_2', 'trainable': True, 'dtype': 'float32', 'units': 128, 'activation': 'relu', 'use_bias': True, 'kernel_initializer': {'class_name': 'GlorotUniform', 'config': {'seed': None}}, 'bias_initializer': {'class_name': 'Zeros', 'config': {}}, 'kernel_regularizer': None, 'bias_regularizer': None, 'activity_regularizer': None, 'kernel_constraint': None, 'bias_constraint': None}}, {'class_name': 'Dropout', 'config': {'name': 'dropout_1', 'trainable': True, 'dtype': 'float32', 'rate': 0.2, 'noise_shape': None, 'seed': None}}, {'class_name': 'Dense', 'config': {'name': 'dense_3', 'trainable': True, 'dtype': 'float32', 'units': 10, 'activation': 'linear', 'use_bias': True, 'kernel_initializer': {'class_name': 'GlorotUniform', 'config': {'seed': None}}, 'bias_initializer': {'class_name': 'Zeros', 'config': {}}, 'kernel_regularizer': None, 'bias_regularizer': None, 'activity_regularizer': None, 'kernel_constraint': None, 'bias_constraint': None}}]}}\n", - "Key: model_size, Value: 407344\n", - "Key: optimizer_size, Value: 814631\n", - "Key: status, Value: experimental\n", - "Key: training_config, Value: {'loss': {'class_name': 'SparseCategoricalCrossentropy', 'config': {'reduction': 'auto', 'name': 'sparse_categorical_crossentropy', 'from_logits': True, 'ignore_class': None}}, 'metrics': [[{'class_name': 'MeanMetricWrapper', 'config': {'name': 'accuracy', 'dtype': 'float32', 'fn': 'sparse_categorical_accuracy'}}]], 'weighted_metrics': None, 'loss_weights': None, 'optimizer_config': {'class_name': 'Adam', 'config': {'name': 'Adam', 'learning_rate': 0.0010000000474974513, 'decay': 0.0, 'beta_1': 0.8999999761581421, 'beta_2': 0.9990000128746033, 'epsilon': 1e-07, 'amsgrad': False}}}\n" - ] - } - ], + "outputs": [], "source": [ "model = create_model()\n", "model.fit(x_train[:30000], y_train[:30000], epochs=5)\n", @@ -443,34 +339,13 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": { "pycharm": { "name": "#%%\n" } }, - "outputs": [ - { - "data": { - "text/plain": "
", - "image/png": "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\n" - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "data": { - "text/plain": "
", - "image/png": "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\n" - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# Load model weights\n", "model_1_weights = tiledb_model_1.get_weights()\n", @@ -494,8 +369,8 @@ "# Maybe plot a part of optimizer weights for both NNs\n", "fig, (ax1, ax2) = plt.subplots(1, 2)\n", "fig.suptitle('1st 50x50 optimizer weights for NN1 and NN2', size=16, y=0.72)\n", - "ax1.matshow(optimizer_1_weights[1][:50, :50])\n", - "ax2.matshow(optimizer_2_weights[1][:50, :50])\n", + "ax1.matshow(optimizer_1_weights[2][:50, :50])\n", + "ax2.matshow(optimizer_2_weights[2][:50, :50])\n", "fig.tight_layout()\n", "fig.subplots_adjust(top=0.95)\n", "plt.show()" @@ -511,34 +386,13 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": { "pycharm": { "name": "#%%\n" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "313/313 [==============================] - 0s 584us/step\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", - "313/313 [==============================] - 0s 595us/step\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", - " (10000, 10)\n", - " (10000, 10)\n", - "313/313 [==============================] - 0s 715us/step - loss: 0.1523 - accuracy: 0.9521\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", - "313/313 [==============================] - 0s 717us/step - loss: 0.0955 - accuracy: 0.9712\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n" - ] - }, - { - "data": { - "text/plain": "[0.09549605846405029, 0.9711999893188477]" - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "loaded_model_1 = tiledb_model_1.load()\n", "loaded_model_2 = tiledb_model_2.load()\n", @@ -572,52 +426,13 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "metadata": { "pycharm": { "name": "#%%\n" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Epoch 1/5\n", - "938/938 [==============================] - 1s 958us/step - loss: 0.1692 - accuracy: 0.9505\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", - "Epoch 2/5\n", - "938/938 [==============================] - 1s 961us/step - loss: 0.1288 - accuracy: 0.9614\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", - "Epoch 3/5\n", - "938/938 [==============================] - 1s 966us/step - loss: 0.1063 - accuracy: 0.9677\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", - "Epoch 4/5\n", - "938/938 [==============================] - 1s 967us/step - loss: 0.0902 - accuracy: 0.9710\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", - "Epoch 5/5\n", - "938/938 [==============================] - 1s 969us/step - loss: 0.0749 - accuracy: 0.9764\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", - "\n", - "['../data/keras-mnist-sequential-1/__meta',\n", - " '../data/keras-mnist-sequential-1/__fragment_meta',\n", - " '../data/keras-mnist-sequential-1/__commits',\n", - " '../data/keras-mnist-sequential-1/__schema',\n", - " '../data/keras-mnist-sequential-1/__fragments']\n", - "\n", - "====== FRAGMENTS INFO ======\n", - "array uri: ../data/keras-mnist-sequential-1\n", - "number of fragments: 2\n", - "\n", - "===== FRAGMENT NUMBER 0 =====\n", - "fragment uri: file:///Users/george/PycharmProjects/TileDB-ML/examples/data/keras-mnist-sequential-1/__fragments/__1675170097183_1675170097183_3a331c48211e47739b827f88b853ede3_16\n", - "timestamp range: (1675170097183, 1675170097183)\n", - "number of unconsolidated metadata: 2\n", - "version: 16\n", - "\n", - "===== FRAGMENT NUMBER 1 =====\n", - "fragment uri: file:///Users/george/PycharmProjects/TileDB-ML/examples/data/keras-mnist-sequential-1/__fragments/__1675170109825_1675170109825_69a0a0b5fcda474b938d620b2d5b2c85_16\n", - "timestamp range: (1675170109825, 1675170109825)\n", - "number of unconsolidated metadata: 2\n", - "version: 16\n" - ] - } - ], + "outputs": [], "source": [ "loaded_model_1 = tiledb_model_1.load(compile_model=True)\n", "loaded_model_1.fit(x_train[30000:], y_train[30000:], epochs=5)\n", @@ -668,7 +483,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "metadata": { "pycharm": { "name": "#%%\n" @@ -708,36 +523,13 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": { "pycharm": { "name": "#%%\n" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Epoch 1/5\n", - "1875/1875 [==============================] - 2s 1ms/step - loss: 0.2305 - accuracy: 0.9309\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", - "Epoch 2/5\n", - "1875/1875 [==============================] - 2s 1ms/step - loss: 0.0964 - accuracy: 0.9708\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", - "Epoch 3/5\n", - "1875/1875 [==============================] - 2s 1ms/step - loss: 0.0675 - accuracy: 0.9788\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", - "Epoch 4/5\n", - "1875/1875 [==============================] - 2s 1ms/step - loss: 0.0521 - accuracy: 0.9837\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", - "Epoch 5/5\n", - "1875/1875 [==============================] - 2s 1ms/step - loss: 0.0422 - accuracy: 0.9863\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", - "\n", - "['../data/keras-mnist-sequential-deeper/__meta',\n", - " '../data/keras-mnist-sequential-deeper/__fragment_meta',\n", - " '../data/keras-mnist-sequential-deeper/__commits',\n", - " '../data/keras-mnist-sequential-deeper/__schema',\n", - " '../data/keras-mnist-sequential-deeper/__fragments']\n" - ] - } - ], + "outputs": [], "source": [ "model = create_deeper_model()\n", "model.fit(x_train, y_train, epochs=5)\n", @@ -769,22 +561,13 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": { "pycharm": { "name": "#%%\n" } }, - "outputs": [ - { - "data": { - "text/plain": "'../data/tiledb-keras-mnist/keras-mnist-sequential-deeper'" - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "group = os.path.join(data_home, 'tiledb-keras-mnist')\n", "tiledb.group_create(group)\n", @@ -806,23 +589,13 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": { "pycharm": { "name": "#%%\n" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "file:///Users/george/PycharmProjects/TileDB-ML/examples/data/tiledb-keras-mnist/keras-mnist-sequential-1 array\n", - "file:///Users/george/PycharmProjects/TileDB-ML/examples/data/tiledb-keras-mnist/keras-mnist-sequential-2 array\n", - "file:///Users/george/PycharmProjects/TileDB-ML/examples/data/tiledb-keras-mnist/keras-mnist-sequential-deeper array\n" - ] - } - ], + "outputs": [], "source": [ "tiledb.ls(group, lambda obj_path, obj_type: print(obj_path, obj_type))" ] diff --git a/setup.py b/setup.py index 7d9dda6e..f5db4639 100644 --- a/setup.py +++ b/setup.py @@ -1,6 +1,6 @@ import setuptools -tensorflow = ["tensorflow>=2.6", "tf-keras>=2.16"] +tensorflow = ["tensorflow>=2.6"] pytorch = ["torch>=1.11", "torchdata"] sklearn = ["scikit-learn>=1.0"] cloud = ["tiledb-cloud"] diff --git a/tiledb/ml/__init__.py b/tiledb/ml/__init__.py index de3fb7e6..55009933 100644 --- a/tiledb/ml/__init__.py +++ b/tiledb/ml/__init__.py @@ -1,4 +1,3 @@ -import os from pkg_resources import DistributionNotFound, get_distribution # type: ignore @@ -6,8 +5,6 @@ # https://pypi.org/project/setuptools-scm/#:~:text=Retrieving%20package%20version%20at%20runtime, when we stop # supporting Python 3.7. We the aforementioned change, we can avoid the 100ms overhead during import of the package. -os.environ["TF_USE_LEGACY_KERAS"] = "1" - try: __version__ = get_distribution("tiledb-ml").version except DistributionNotFound: diff --git a/tiledb/ml/models/tensorflow_keras.py b/tiledb/ml/models/tensorflow_keras.py index f67000d8..f02a52ea 100644 --- a/tiledb/ml/models/tensorflow_keras.py +++ b/tiledb/ml/models/tensorflow_keras.py @@ -23,20 +23,15 @@ FunctionalOrSequential = (keras.models.Functional, keras.models.Sequential) TFOptimizer = keras.optimizers.TFOptimizer get_json_type = keras.saving.saved_model.json_utils.get_json_type - preprocess_weights_for_loading = ( - keras.saving.hdf5_format.preprocess_weights_for_loading - ) saving_utils = keras.saving.saving_utils # Handle keras >=v2.11 elif int(keras_major) <= 2 and int(keras_minor) <= 12: FunctionalOrSequential = (keras.models.Functional, keras.models.Sequential) TFOptimizer = tf.keras.optimizers.legacy.Optimizer get_json_type = keras.saving.legacy.saved_model.json_utils.get_json_type - preprocess_weights_for_loading = ( - keras.saving.legacy.hdf5_format.preprocess_weights_for_loading - ) saving_utils = keras.saving.legacy.saving_utils -else: + +elif int(keras_major) <= 2 and int(keras_minor) <= 14: from keras.src.saving.serialization_lib import SafeModeScope FunctionalOrSequential = ( @@ -45,11 +40,15 @@ ) TFOptimizer = tf.keras.optimizers.legacy.Optimizer get_json_type = keras.src.saving.legacy.saved_model.json_utils.get_json_type - preprocess_weights_for_loading = ( - keras.src.saving.legacy.hdf5_format.preprocess_weights_for_loading - ) saving_utils = keras.src.saving.legacy.saving_utils +else: + FunctionalOrSequential = (keras.src.models.Functional, + keras.src.models.Sequential) + TFOptimizer = tf.keras.optimizers.legacy.Optimizer + get_json_type = keras.src.legacy.saving.json_utils.get_json_type + saving_utils = keras.src.legacy.saving.saving_utils + class TensorflowKerasTileDBModel(TileDBArtifact[tf.keras.Model]): """ @@ -315,6 +314,7 @@ def _serialize_optimizer_weights( if hasattr(optimizer, "weights"): optimizer_weights = tf.keras.backend.batch_get_value(optimizer.weights) else: - optimizer_weights = [var.numpy() for var in optimizer.variables()] + #print(optimizer) + optimizer_weights = [var.numpy() for var in optimizer.variables] return pickle.dumps(optimizer_weights, protocol=4) return b""