{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "provenance": [] }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "language_info": { "name": "python" } }, "cells": [ { "cell_type": "code", "execution_count": null, "metadata": { "id": "y9Z3qVyH_sZT" }, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from tensorflow import keras\n", "from keras.datasets import fashion_mnist\n", "import keras.backend as K\n", "from keras.layers import Input, Flatten, Dense, Reshape, Lambda, Dropout, BatchNormalization" ] }, { "cell_type": "code", "source": [ "(x_train, y_train), (x_test, y_test) = fashion_mnist.load_data()\n", "x_train = x_train / 255\n", "y_train = y_train / 255\n", "\n", "len(x_train)\n", "len(x_test)" ], "metadata": { "id": "epAnpmmLAzCY", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "fdecaafe-b032-4001-e538-207be9fd86ae" }, "execution_count": 47, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "10000" ] }, "metadata": {}, "execution_count": 47 } ] }, { "cell_type": "code", "source": [ "x_train.shape" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "VEJpcZ-wBKkg", "outputId": "ead4dc8c-575b-4210-cb9f-ffe57a5981eb" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(60000, 28, 28)" ] }, "metadata": {}, "execution_count": 16 } ] }, { "cell_type": "code", "source": [ "hidden_dim = 10\n", "batch_size = 32" ], "metadata": { "id": "gAO_-1kyBOCw" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "input_img = Input((28, 28))\n", "x = Flatten()(input_img)\n", "x = Dense(256, activation = 'relu')(x)\n", "x = Dense(128, activation = 'relu')(x)\n", "\n", "z_mean = Dense(hidden_dim)(x)\n", "z_log_var = Dense(hidden_dim)(x)" ], "metadata": { "id": "1upRqDErBdtS" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "loss_z_mean, loss_z_log_var = [(), ()]\n", "def foo(args):\n", " global loss_z_mean, loss_z_log_var\n", " loss_z_mean, loss_z_log_var = args\n", "\n", " z_mean, z_log_var = args\n", " N = K.random_normal(shape = (batch_size, hidden_dim))\n", " delta = K.exp(z_log_var / 2) * N\n", " return z_mean + delta" ], "metadata": { "id": "M0Nx30v1DBtq" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "h = Lambda(foo, output_shape = (hidden_dim,))([z_mean, z_log_var])" ], "metadata": { "id": "fUqgmlf1B-Cz" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "input_dec = Input(shape = (hidden_dim, ))\n", "d = Dense(128, activation = 'relu')(input_dec)\n", "d = Dense(256, activation = 'relu')(d)\n", "d = Dense(28*28, activation = 'sigmoid')(d)\n", "decoded = Reshape((28, 28))(d)" ], "metadata": { "id": "M8kD92EJCMoW" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "def loss(y, z):\n", " y = K.reshape(y, shape = (batch_size, 28*28))\n", " z = K.reshape(z, shape = (batch_size, 28*28))\n", " mse = K.sum(K.square(y - z), axis = 1)\n", " kl = -.5 * K.sum(1 + loss_z_log_var - K.square(loss_z_mean) - K.exp(loss_z_log_var), axis = 1)\n", "\n", " return mse# + kl" ], "metadata": { "id": "SEzuODKrDtUO" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "encoder = keras.Model(input_img, h, name = 'encoder')\n", "decoder = keras.Model(input_dec, decoded, name = 'decoder')\n", "vae = keras.Model(input_img, decoder(encoder(input_img)), name = 'vae')" ], "metadata": { "id": "vA_k2uOiCgyV" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "keras.utils.plot_model(\n", " vae,\n", " show_shapes=True,\n", " show_layer_names=True,\n", ")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 312 }, "id": "ISP666UJdGcN", "outputId": "795ba5f0-0462-467d-8ecf-08299df5edc6" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "execution_count": 38 } ] }, { "cell_type": "code", "source": [ "vae.compile(optimizer = 'adam', loss = loss)" ], "metadata": { "id": "z9foG6KEC7h9" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "training_history = vae.fit(x_train, x_train, epochs = 5, batch_size = batch_size, shuffle = True)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "NhpBXD8wEctG", "outputId": "fb3eb08c-edcb-4854-ac4e-a47256bc9653" }, "execution_count": 39, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Epoch 1/5\n", "1875/1875 [==============================] - 26s 14ms/step - loss: 10.1157\n", "Epoch 2/5\n", "1875/1875 [==============================] - 24s 13ms/step - loss: 9.9447\n", "Epoch 3/5\n", "1875/1875 [==============================] - 22s 12ms/step - loss: 9.8084\n", "Epoch 4/5\n", "1875/1875 [==============================] - 22s 12ms/step - loss: 9.6913\n", "Epoch 5/5\n", "1875/1875 [==============================] - 29s 15ms/step - loss: 9.5979\n" ] } ] }, { "cell_type": "code", "source": [ "plt.xlabel('Epoch Number')\n", "plt.ylabel('Loss')\n", "plt.plot(training_history.history['loss'], label='training set')\n", "plt.legend()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 466 }, "id": "W6HYzFX3nGqo", "outputId": "d4097678-2611-48c8-d704-8f68f819bf4e" }, "execution_count": 41, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "" ] }, "metadata": {}, "execution_count": 41 }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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SKmjAiQiIiKljgqQiIiIlDoqQCIiIlLqqAAVgWnTphEUFISrqytt2rQhPDz8lut///331K1bF1dXVxo1asSvv/5aTEnzJy/jmzt3LhaLJcfD1dW1GNPmzfr16+nduzf+/v5YLBaWLFly223++OMPmjdvjouLC7Vq1WLu3LlFnjO/8jq+P/7444b9Z7FYiI6OLp7AeTRx4kRatWqFp6cnlSpVom/fvhw5cuS229nT32B+xmhPf4fTp0+ncePG2V+QFxISwooVK265jT3tv7yOz572XW7ee+89LBYLoaGht1zPjH2oAlTIvv32W55//nneeOMNdu7cSZMmTejevTsXL17Mdf3NmzczYMAAhg8fzq5du+jbty99+/Zl//79xZz8zuR1fHD9mz6joqKyH6dPny7GxHmTmJhIkyZNmDZt2h2tHxERQa9evbj77rvZvXs3oaGhjBgxgrCwsCJOmj95Hd9fjhw5kmMfVqpUqYgSFsy6desYPXo0W7duZfXq1aSnp9OtWzcSExNvuo29/Q3mZ4xgP3+HVatW5b333mPHjh38+eef3HPPPfTp04cDBw7kur697b+8jg/sZ9/93fbt25kxYwaNGze+5Xqm7UNDClXr1q2N0aNHZ/+cmZlp+Pv7GxMnTsx1/UcffdTo1atXjmVt2rQxnnrqqSLNmV95Hd+XX35peHt7F1O6wgUYixcvvuU6L730ktGgQYMcy/r162d07969CJMVjjsZ39q1aw3AuHbtWrFkKmwXL140AGPdunU3Xcfe/gb/7k7GaM9/h4ZhGOXKlTNmz56d63P2vv8M49bjs9d9Fx8fb9SuXdtYvXq1cddddxnjxo276bpm7UMdASpEaWlp7Nixgy5dumQvs1qtdOnShS1btuS6zZYtW3KsD9C9e/ebrm+m/IwPICEhgcDAQAICAm77fzr2xp72X0E0bdoUPz8/unbtyqZNm8yOc8diY2MB8PHxuek69r4P72SMYJ9/h5mZmSxatIjExERCQkJyXcee99+djA/sc9+NHj2aXr163bBvcmPWPlQBKkSXL18mMzMTX1/fHMt9fX1ves1EdHR0ntY3U37GFxwczJw5c1i6dCkLFiwgKyuLdu3acfbs2eKIXORutv/i4uJITk42KVXh8fPz4/PPP+fHH3/kxx9/JCAggM6dO7Nz506zo91WVlYWoaGhtG/fnoYN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\n" }, "metadata": {} } ] }, { "cell_type": "code", "source": [ "plt.imshow(vae.predict([x_test[2].reshape(-1, 28, 28, 1)])[0], cmap = 'gray_r')" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 465 }, "id": "ROTQ8mkoE9i6", "outputId": "cec7fea7-b22c-436b-92cd-ac7059e251ff" }, "execution_count": 49, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "1/1 [==============================] - 0s 28ms/step\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "" ] }, "metadata": {}, "execution_count": 49 }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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Tq1YsUItLS36+c9/rvPnz6urq0vBYFCLFy/Wm2++ed/nc+73Z4cYPpL9PMZQ4RwQUkVCzgHda2cJBoOqq6sbyEMCAIYpPgsOAGCCAAEATBAgAIAJAgQAMEGAAAAmCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJgb1G1GBocSvIQDSE0dAAAATBAgAYIIAAQBMECAAgAkCBAAwQYAAACYIEADABAECAJggQAAAEwQIAGCCAAEATCTdZ8Hd/oyscDhsPAmQOOzfvdgO6en23+u9PvMw6QLU2dkpSQoGg8aTAInj8/msR0gKbIf01tnZ+a1/xx6XZB/L29PTo8uXLyszM/OuTzQOh8MKBoNqaWlRVlaW0YT22A692A692A692A69kmE7OOfU2dmpQCCgESP6P9OTdEdAI0aM0IQJE751naysrGG9g93GdujFdujFdujFduhlvR3u5+iWixAAACYIEADAREoFyOv1avPmzfJ6vdajmGI79GI79GI79GI79Eql7ZB0FyEAAIaHlDoCAgCkDwIEADBBgAAAJggQAMBEygRo+/bt+t73vqeHHnpIxcXF+sc//mE90pB7++235fF4YpZp06ZZj5Vwx48f14IFCxQIBOTxeHTgwIGY+51z2rRpkwoKCjRmzBiVlpbqwoULNsMm0L22w4oVK+7aP8rLy22GTZDq6mrNmjVLmZmZysvL06JFi9TQ0BCzTnd3tyorKzVu3Dg98sgjWrp0qdrb240mToz72Q7PPvvsXfvDmjVrjCbuW0oE6OOPP1ZVVZU2b96sL774QkVFRSorK9OVK1esRxtyTzzxhFpbW6PL559/bj1SwnV1damoqEjbt2/v8/6tW7fqvffe044dO3Ty5Ek9/PDDKisrU3d39xBPmlj32g6SVF5eHrN/7NmzZwgnTLy6ujpVVlbqxIkTOnLkiG7evKn58+erq6srus6GDRv06aefat++faqrq9Ply5e1ZMkSw6nj7362gyStWrUqZn/YunWr0cT9cClg9uzZrrKyMvr1rVu3XCAQcNXV1YZTDb3Nmze7oqIi6zFMSXL79++Pft3T0+P8fr975513ord1dHQ4r9fr9uzZYzDh0LhzOzjn3PLly93ChQtN5rFy5coVJ8nV1dU553r/7kePHu327dsXXedf//qXk+Tq6+utxky4O7eDc8795Cc/cb/85S/throPSX8EdOPGDZ0+fVqlpaXR20aMGKHS0lLV19cbTmbjwoULCgQCmjx5sl566SVdvHjReiRTzc3Namtri9k/fD6fiouLh+X+UVtbq7y8PE2dOlVr167V1atXrUdKqFAoJEnKycmRJJ0+fVo3b96M2R+mTZumiRMnpvX+cOd2uO2jjz5Sbm6upk+fro0bN+r69esW4/Ur6T6M9E5ff/21bt26pfz8/Jjb8/Pz9eWXXxpNZaO4uFi7du3S1KlT1draqi1btuiZZ57R+fPnlZmZaT2eiba2Nknqc/+4fd9wUV5eriVLlqiwsFBNTU369a9/rYqKCtXX12vkyJHW48VdT0+P1q9frzlz5mj69OmSeveHjIwMZWdnx6ybzvtDX9tBkl588UVNmjRJgUBA586d0xtvvKGGhgZ98sknhtPGSvoA4X8qKiqif54xY4aKi4s1adIk/eUvf9HKlSsNJ0MyeP7556N/fvLJJzVjxgxNmTJFtbW1mjdvnuFkiVFZWanz588Pi/Og36a/7bB69eron5988kkVFBRo3rx5ampq0pQpU4Z6zD4l/Y/gcnNzNXLkyLuuYmlvb5ff7zeaKjlkZ2fr8ccfV2Njo/UoZm7vA+wfd5s8ebJyc3PTcv9Yt26dDh06pM8++yzm17f4/X7duHFDHR0dMeun6/7Q33boS3FxsSQl1f6Q9AHKyMjQzJkzVVNTE72tp6dHNTU1KikpMZzM3rVr19TU1KSCggLrUcwUFhbK7/fH7B/hcFgnT54c9vvHpUuXdPXq1bTaP5xzWrdunfbv369jx46psLAw5v6ZM2dq9OjRMftDQ0ODLl68mFb7w722Q1/Onj0rScm1P1hfBXE/9u7d67xer9u1a5f75z//6VavXu2ys7NdW1ub9WhD6tVXX3W1tbWuubnZ/e1vf3OlpaUuNzfXXblyxXq0hOrs7HRnzpxxZ86ccZLctm3b3JkzZ9x///tf55xzv//97112drY7ePCgO3funFu4cKErLCx033zzjfHk8fVt26Gzs9O99tprrr6+3jU3N7ujR4+6H/3oR+6xxx5z3d3d1qPHzdq1a53P53O1tbWutbU1uly/fj26zpo1a9zEiRPdsWPH3KlTp1xJSYkrKSkxnDr+7rUdGhsb3W9+8xt36tQp19zc7A4ePOgmT57s5s6dazx5rJQIkHPOvf/++27ixIkuIyPDzZ492504ccJ6pCG3bNkyV1BQ4DIyMtx3v/tdt2zZMtfY2Gg9VsJ99tlnTtJdy/Lly51zvZdiv/XWWy4/P995vV43b94819DQYDt0Anzbdrh+/bqbP3++Gz9+vBs9erSbNGmSW7VqVdr9T1pf//2S3M6dO6PrfPPNN+4Xv/iF+853vuPGjh3rFi9e7FpbW+2GToB7bYeLFy+6uXPnupycHOf1et2jjz7qfvWrX7lQKGQ7+B34dQwAABNJfw4IAJCeCBAAwAQBAgCYIEAAABMECABgggABAEwQIACACQIEADBBgAAAJggQAMAEAQIAmCBAAAAT/wcRDoluXKeiagAAAABJRU5ErkJggg==\n" }, "metadata": {} } ] }, { "cell_type": "code", "source": [ "vae.save('/content/drive/MyDrive/model')" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 311 }, "id": "saFKU0u8WvaW", "outputId": "8f5df047-45be-4509-cd1f-94000ad67032" }, "execution_count": 50, "outputs": [ { "output_type": "error", "ename": "KeyboardInterrupt", "evalue": "ignored", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mvae\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msave\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'/content/drive/MyDrive/model'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/keras/utils/traceback_utils.py\u001b[0m in \u001b[0;36merror_handler\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 63\u001b[0m \u001b[0mfiltered_tb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 64\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 65\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\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 66\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 67\u001b[0m \u001b[0mfiltered_tb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_process_traceback_frames\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__traceback__\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/keras/engine/training.py\u001b[0m in \u001b[0;36msave\u001b[0;34m(self, filepath, overwrite, save_format, **kwargs)\u001b[0m\n\u001b[1;32m 2824\u001b[0m \u001b[0mNote\u001b[0m \u001b[0mthat\u001b[0m\u001b[0;31m \u001b[0m\u001b[0;31m`\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msave\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;31m`\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0man\u001b[0m \u001b[0malias\u001b[0m \u001b[0;32mfor\u001b[0m\u001b[0;31m \u001b[0m\u001b[0;31m`\u001b[0m\u001b[0mtf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mkeras\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmodels\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msave_model\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;31m`\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2825\u001b[0m \"\"\"\n\u001b[0;32m-> 2826\u001b[0;31m saving_api.save_model(\n\u001b[0m\u001b[1;32m 2827\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2828\u001b[0m \u001b[0mfilepath\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mfilepath\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/keras/saving/saving_api.py\u001b[0m in \u001b[0;36msave_model\u001b[0;34m(model, filepath, overwrite, save_format, **kwargs)\u001b[0m\n\u001b[1;32m 143\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 144\u001b[0m \u001b[0;31m# Legacy case\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 145\u001b[0;31m return legacy_sm_saving_lib.save_model(\n\u001b[0m\u001b[1;32m 146\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 147\u001b[0m \u001b[0mfilepath\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/keras/utils/traceback_utils.py\u001b[0m in \u001b[0;36merror_handler\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 63\u001b[0m \u001b[0mfiltered_tb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 64\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 65\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\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 66\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 67\u001b[0m \u001b[0mfiltered_tb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_process_traceback_frames\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__traceback__\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/keras/saving/legacy/save.py\u001b[0m in \u001b[0;36msave_model\u001b[0;34m(model, filepath, overwrite, include_optimizer, save_format, signatures, options, save_traces)\u001b[0m\n\u001b[1;32m 166\u001b[0m \u001b[0msave_traces\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msave_traces\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0min_tf_saved_model_scope\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 167\u001b[0m ):\n\u001b[0;32m--> 168\u001b[0;31m saved_model_save.save(\n\u001b[0m\u001b[1;32m 169\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 170\u001b[0m \u001b[0mfilepath\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/keras/saving/legacy/saved_model/save.py\u001b[0m in \u001b[0;36msave\u001b[0;34m(model, filepath, overwrite, include_optimizer, signatures, options, save_traces)\u001b[0m\n\u001b[1;32m 96\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mbackend\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdeprecated_internal_learning_phase_scope\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\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[1;32m 97\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mutils\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mkeras_option_scope\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msave_traces\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[0;32m---> 98\u001b[0;31m saved_nodes, node_paths = save_lib.save_and_return_nodes(\n\u001b[0m\u001b[1;32m 99\u001b[0m \u001b[0mmodel\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfilepath\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msignatures\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0moptions\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 100\u001b[0m )\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/saved_model/save.py\u001b[0m in \u001b[0;36msave_and_return_nodes\u001b[0;34m(obj, export_dir, signatures, options, experimental_skip_checkpoint)\u001b[0m\n\u001b[1;32m 1274\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1275\u001b[0m _, exported_graph, object_saver, asset_info, saved_nodes, node_paths = (\n\u001b[0;32m-> 1276\u001b[0;31m _build_meta_graph(obj, signatures, options, meta_graph_def))\n\u001b[0m\u001b[1;32m 1277\u001b[0m saved_model.saved_model_schema_version = (\n\u001b[1;32m 1278\u001b[0m constants.SAVED_MODEL_SCHEMA_VERSION)\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/saved_model/save.py\u001b[0m in \u001b[0;36m_build_meta_graph\u001b[0;34m(obj, signatures, options, meta_graph_def)\u001b[0m\n\u001b[1;32m 1453\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1454\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0msave_context\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msave_context\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0moptions\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[0;32m-> 1455\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0m_build_meta_graph_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobj\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msignatures\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0moptions\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeta_graph_def\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/saved_model/save.py\u001b[0m in \u001b[0;36m_build_meta_graph_impl\u001b[0;34m(obj, signatures, options, meta_graph_def)\u001b[0m\n\u001b[1;32m 1396\u001b[0m \u001b[0maugmented_graph_view\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_AugmentedGraphView\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobj\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1397\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0msignatures\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1398\u001b[0;31m signatures = signature_serialization.find_function_to_export(\n\u001b[0m\u001b[1;32m 1399\u001b[0m augmented_graph_view)\n\u001b[1;32m 1400\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/saved_model/signature_serialization.py\u001b[0m in \u001b[0;36mfind_function_to_export\u001b[0;34m(saveable_view)\u001b[0m\n\u001b[1;32m 101\u001b[0m \u001b[0;31m# serving that model way later in the process stops working.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 102\u001b[0m \u001b[0mpossible_signatures\u001b[0m \u001b[0;34m=\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[0;32m--> 103\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mchild\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mchildren\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 104\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mchild\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mdef_function\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mFunction\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdefun\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mConcreteFunction\u001b[0m\u001b[0;34m)\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[1;32m 105\u001b[0m \u001b[0;32mcontinue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/saved_model/save.py\u001b[0m in \u001b[0;36mlist_children\u001b[0;34m(self, obj)\u001b[0m\n\u001b[1;32m 178\u001b[0m \u001b[0mchildren\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_children_cache\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mobj\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\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[1;32m 179\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 180\u001b[0;31m for name, child in super(_AugmentedGraphView, self).list_children(\n\u001b[0m\u001b[1;32m 181\u001b[0m \u001b[0mobj\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 182\u001b[0m \u001b[0msave_type\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mbase\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSaveType\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSAVEDMODEL\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/checkpoint/graph_view.py\u001b[0m in \u001b[0;36mlist_children\u001b[0;34m(self, obj, save_type, **kwargs)\u001b[0m\n\u001b[1;32m 73\u001b[0m \"\"\"\n\u001b[1;32m 74\u001b[0m \u001b[0mchildren\u001b[0m \u001b[0;34m=\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[0;32m---> 75\u001b[0;31m for name, ref in super(ObjectGraphView,\n\u001b[0m\u001b[1;32m 76\u001b[0m self).children(obj, save_type, **kwargs).items():\n\u001b[1;32m 77\u001b[0m \u001b[0mchildren\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbase\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTrackableReference\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mref\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[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/checkpoint/trackable_view.py\u001b[0m in \u001b[0;36mchildren\u001b[0;34m(cls, obj, save_type, **kwargs)\u001b[0m\n\u001b[1;32m 82\u001b[0m \u001b[0mobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_maybe_initialize_trackable\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[1;32m 83\u001b[0m \u001b[0mchildren\u001b[0m \u001b[0;34m=\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[0;32m---> 84\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mref\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_trackable_children\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msave_type\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[0;34m(\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 85\u001b[0m \u001b[0mref\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mconverter\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconvert_to_trackable\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mref\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mparent\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mobj\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 86\u001b[0m \u001b[0mchildren\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mref\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/keras/engine/functional.py\u001b[0m in \u001b[0;36m_trackable_children\u001b[0;34m(self, save_type, **kwargs)\u001b[0m\n\u001b[1;32m 459\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_trackable_children\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msave_type\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"checkpoint\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\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[1;32m 460\u001b[0m \u001b[0mdependencies\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_layer_checkpoint_dependencies\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 461\u001b[0;31m \u001b[0mdependencies\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msuper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_trackable_children\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msave_type\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\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 462\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mdependencies\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 463\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/keras/engine/training.py\u001b[0m in \u001b[0;36m_trackable_children\u001b[0;34m(self, save_type, **kwargs)\u001b[0m\n\u001b[1;32m 3731\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtrain_tf_function\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3732\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3733\u001b[0;31m \u001b[0mchildren\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msuper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_trackable_children\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msave_type\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\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 3734\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3735\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0msave_type\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m\"savedmodel\"\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/keras/engine/base_layer.py\u001b[0m in \u001b[0;36m_trackable_children\u001b[0;34m(self, save_type, **kwargs)\u001b[0m\n\u001b[1;32m 3464\u001b[0m \u001b[0;31m# that any input shape changes are applied before getting the config\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3465\u001b[0m \u001b[0;31m# of the model.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3466\u001b[0;31m children = self._trackable_saved_model_saver.trackable_children(\n\u001b[0m\u001b[1;32m 3467\u001b[0m \u001b[0mcache\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3468\u001b[0m )\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/keras/saving/legacy/saved_model/base_serialization.py\u001b[0m in \u001b[0;36mtrackable_children\u001b[0;34m(self, serialization_cache)\u001b[0m\n\u001b[1;32m 59\u001b[0m \u001b[0;32mreturn\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[1;32m 60\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 61\u001b[0;31m \u001b[0mchildren\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mobjects_to_serialize\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mserialization_cache\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 62\u001b[0m \u001b[0mchildren\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfunctions_to_serialize\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mserialization_cache\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[1;32m 63\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mchildren\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/keras/saving/legacy/saved_model/layer_serialization.py\u001b[0m in \u001b[0;36mobjects_to_serialize\u001b[0;34m(self, serialization_cache)\u001b[0m\n\u001b[1;32m 77\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 78\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mobjects_to_serialize\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mserialization_cache\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[0;32m---> 79\u001b[0;31m return self._get_serialized_attributes(\n\u001b[0m\u001b[1;32m 80\u001b[0m \u001b[0mserialization_cache\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 81\u001b[0m ).objects_to_serialize\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/keras/saving/legacy/saved_model/layer_serialization.py\u001b[0m in \u001b[0;36m_get_serialized_attributes\u001b[0;34m(self, serialization_cache)\u001b[0m\n\u001b[1;32m 104\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mserialized_attr\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 105\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 106\u001b[0;31m object_dict, function_dict = self._get_serialized_attributes_internal(\n\u001b[0m\u001b[1;32m 107\u001b[0m \u001b[0mserialization_cache\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 108\u001b[0m )\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/keras/saving/legacy/saved_model/model_serialization.py\u001b[0m in \u001b[0;36m_get_serialized_attributes_internal\u001b[0;34m(self, serialization_cache)\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[0;31m# Other than the default signature function, all other attributes match\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 56\u001b[0m \u001b[0;31m# with the ones serialized by Layer.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 57\u001b[0;31m objects, functions = super()._get_serialized_attributes_internal(\n\u001b[0m\u001b[1;32m 58\u001b[0m \u001b[0mserialization_cache\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 59\u001b[0m )\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/keras/saving/legacy/saved_model/layer_serialization.py\u001b[0m in \u001b[0;36m_get_serialized_attributes_internal\u001b[0;34m(self, serialization_cache)\u001b[0m\n\u001b[1;32m 115\u001b[0m \u001b[0;34m\"\"\"Returns dictionary of serialized attributes.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 116\u001b[0m \u001b[0mobjects\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msave_impl\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwrap_layer_objects\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mobj\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mserialization_cache\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 117\u001b[0;31m functions = save_impl.wrap_layer_functions(\n\u001b[0m\u001b[1;32m 118\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mobj\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mserialization_cache\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 119\u001b[0m )\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/keras/saving/legacy/saved_model/save_impl.py\u001b[0m in \u001b[0;36mwrap_layer_functions\u001b[0;34m(layer, serialization_cache)\u001b[0m\n\u001b[1;32m 214\u001b[0m \u001b[0;31m# functions are traced within the layer call context to ensure that layer\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 215\u001b[0m \u001b[0;31m# functions (e.g. add_loss) behave as though running in graph mode.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 216\u001b[0;31m \u001b[0;32mwith\u001b[0m \u001b[0mtracing_scope\u001b[0m\u001b[0;34m(\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 217\u001b[0m \u001b[0mcall_collection\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtrace_with_input_signature\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[1;32m 218\u001b[0m with base_layer_utils.call_context().enter(\n", "\u001b[0;32m/usr/lib/python3.10/contextlib.py\u001b[0m in \u001b[0;36m__exit__\u001b[0;34m(self, typ, value, traceback)\u001b[0m\n\u001b[1;32m 140\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mtyp\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 141\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 142\u001b[0;31m \u001b[0mnext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgen\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 143\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mStopIteration\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 144\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/keras/saving/legacy/saved_model/save_impl.py\u001b[0m in \u001b[0;36mtracing_scope\u001b[0;34m()\u001b[0m\n\u001b[1;32m 388\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mtraining\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 389\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mbackend\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdeprecated_internal_learning_phase_scope\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtraining\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[0;32m--> 390\u001b[0;31m \u001b[0mfn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_concrete_function\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\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 391\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 392\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_concrete_function\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/eager/polymorphic_function/polymorphic_function.py\u001b[0m in \u001b[0;36mget_concrete_function\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1256\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mget_concrete_function\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\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[1;32m 1257\u001b[0m \u001b[0;31m# Implements GenericFunction.get_concrete_function.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1258\u001b[0;31m \u001b[0mconcrete\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get_concrete_function_garbage_collected\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\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 1259\u001b[0m \u001b[0mconcrete\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_garbage_collector\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrelease\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# pylint: disable=protected-access\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1260\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mconcrete\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/eager/polymorphic_function/polymorphic_function.py\u001b[0m in \u001b[0;36m_get_concrete_function_garbage_collected\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1236\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_variable_creation_fn\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1237\u001b[0m \u001b[0minitializers\u001b[0m \u001b[0;34m=\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[0;32m-> 1238\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_initialize\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0madd_initializers_to\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0minitializers\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 1239\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_initialize_uninitialized_variables\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minitializers\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1240\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/eager/polymorphic_function/polymorphic_function.py\u001b[0m in \u001b[0;36m_initialize\u001b[0;34m(self, args, kwds, add_initializers_to)\u001b[0m\n\u001b[1;32m 761\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_graph_deleter\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mFunctionDeleter\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_lifted_initializer_graph\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 762\u001b[0m self._concrete_variable_creation_fn = (\n\u001b[0;32m--> 763\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_variable_creation_fn\u001b[0m \u001b[0;31m# pylint: disable=protected-access\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 764\u001b[0m ._get_concrete_function_internal_garbage_collected(\n\u001b[1;32m 765\u001b[0m *args, **kwds))\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/eager/polymorphic_function/tracing_compiler.py\u001b[0m in \u001b[0;36m_get_concrete_function_internal_garbage_collected\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 169\u001b[0m \u001b[0;34m\"\"\"Returns a concrete function which cleans up its graph function.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 170\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_lock\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 171\u001b[0;31m \u001b[0mconcrete_function\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_maybe_define_concrete_function\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwargs\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 172\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mconcrete_function\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 173\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/eager/polymorphic_function/tracing_compiler.py\u001b[0m in \u001b[0;36m_maybe_define_concrete_function\u001b[0;34m(self, args, kwargs)\u001b[0m\n\u001b[1;32m 164\u001b[0m \u001b[0mkwargs\u001b[0m \u001b[0;34m=\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[1;32m 165\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 166\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_maybe_define_function\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwargs\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 167\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 168\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_get_concrete_function_internal_garbage_collected\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\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[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/eager/polymorphic_function/tracing_compiler.py\u001b[0m in \u001b[0;36m_maybe_define_function\u001b[0;34m(self, args, kwargs)\u001b[0m\n\u001b[1;32m 394\u001b[0m \u001b[0mkwargs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mplaceholder_bound_args\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 395\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 396\u001b[0;31m concrete_function = self._create_concrete_function(\n\u001b[0m\u001b[1;32m 397\u001b[0m args, kwargs, func_graph)\n\u001b[1;32m 398\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/eager/polymorphic_function/tracing_compiler.py\u001b[0m in \u001b[0;36m_create_concrete_function\u001b[0;34m(self, args, kwargs, func_graph)\u001b[0m\n\u001b[1;32m 298\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 299\u001b[0m concrete_function = monomorphic_function.ConcreteFunction(\n\u001b[0;32m--> 300\u001b[0;31m func_graph_module.func_graph_from_py_func(\n\u001b[0m\u001b[1;32m 301\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_name\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 302\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_python_function\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/framework/func_graph.py\u001b[0m in \u001b[0;36mfunc_graph_from_py_func\u001b[0;34m(name, python_func, args, kwargs, signature, func_graph, autograph, autograph_options, add_control_dependencies, arg_names, op_return_value, collections, capture_by_value, create_placeholders, acd_record_initial_resource_uses)\u001b[0m\n\u001b[1;32m 1212\u001b[0m \u001b[0m_\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0moriginal_func\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtf_decorator\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0munwrap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpython_func\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1213\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1214\u001b[0;31m \u001b[0mfunc_outputs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpython_func\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mfunc_args\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mfunc_kwargs\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 1215\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1216\u001b[0m \u001b[0;31m# invariant: `func_outputs` contains only Tensors, CompositeTensors,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/eager/polymorphic_function/polymorphic_function.py\u001b[0m in \u001b[0;36mwrapped_fn\u001b[0;34m(*args, **kwds)\u001b[0m\n\u001b[1;32m 665\u001b[0m \u001b[0;31m# the function a weak reference to itself to avoid a reference cycle.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 666\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mOptionalXlaContext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcompile_with_xla\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[0;32m--> 667\u001b[0;31m \u001b[0mout\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mweak_wrapped_fn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__wrapped__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\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 668\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mout\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 669\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/keras/saving/legacy/saved_model/save_impl.py\u001b[0m in \u001b[0;36mwrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 630\u001b[0m \u001b[0mlayer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_compute_dtype_object\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 631\u001b[0m ):\n\u001b[0;32m--> 632\u001b[0;31m \u001b[0mret\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmethod\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\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 633\u001b[0m \u001b[0m_restore_layer_losses\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0moriginal_losses\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 634\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mret\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/keras/saving/legacy/saved_model/utils.py\u001b[0m in \u001b[0;36mwrap_with_training_arg\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 188\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mwrapped_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mnew_args\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mnew_kwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 189\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 190\u001b[0;31m return control_flow_util.smart_cond(\n\u001b[0m\u001b[1;32m 191\u001b[0m \u001b[0mtraining\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 192\u001b[0m \u001b[0;32mlambda\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mreplace_training_and_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;32mTrue\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[0;32m/usr/local/lib/python3.10/dist-packages/keras/utils/control_flow_util.py\u001b[0m in \u001b[0;36msmart_cond\u001b[0;34m(pred, true_fn, false_fn, name)\u001b[0m\n\u001b[1;32m 106\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpred\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mVariable\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[1;32m 107\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mtf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcond\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpred\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtrue_fn\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtrue_fn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfalse_fn\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mfalse_fn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 108\u001b[0;31m return tf.__internal__.smart_cond.smart_cond(\n\u001b[0m\u001b[1;32m 109\u001b[0m \u001b[0mpred\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtrue_fn\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtrue_fn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfalse_fn\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mfalse_fn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 110\u001b[0m )\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/framework/smart_cond.py\u001b[0m in \u001b[0;36msmart_cond\u001b[0;34m(pred, true_fn, false_fn, name)\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mpred_value\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mpred_value\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 52\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mtrue_fn\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 53\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mfalse_fn\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[0;32m/usr/local/lib/python3.10/dist-packages/keras/saving/legacy/saved_model/utils.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 190\u001b[0m return control_flow_util.smart_cond(\n\u001b[1;32m 191\u001b[0m \u001b[0mtraining\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 192\u001b[0;31m \u001b[0;32mlambda\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mreplace_training_and_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;32mTrue\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 193\u001b[0m \u001b[0;32mlambda\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mreplace_training_and_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;32mFalse\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[1;32m 194\u001b[0m )\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/keras/saving/legacy/saved_model/utils.py\u001b[0m in \u001b[0;36mreplace_training_and_call\u001b[0;34m(training)\u001b[0m\n\u001b[1;32m 186\u001b[0m \u001b[0;34m\"training\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtraining\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minputs_in_args\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 187\u001b[0m )\n\u001b[0;32m--> 188\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mwrapped_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mnew_args\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mnew_kwargs\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 189\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 190\u001b[0m return control_flow_util.smart_cond(\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/keras/saving/legacy/saved_model/save_impl.py\u001b[0m in \u001b[0;36mcall\u001b[0;34m(inputs, *args, **kwargs)\u001b[0m\n\u001b[1;32m 716\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 717\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mcall\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minputs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\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[0;32m--> 718\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mcall_and_return_conditional_losses\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minputs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\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 719\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 720\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0m_create_call_fn_decorator\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlayer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcall\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/keras/saving/legacy/saved_model/save_impl.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 670\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__call__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\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[1;32m 671\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_maybe_trace\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 672\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwrapped_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\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 673\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 674\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mget_concrete_function\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\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[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/util/traceback_utils.py\u001b[0m in \u001b[0;36merror_handler\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 148\u001b[0m \u001b[0mfiltered_tb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 149\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 150\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\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 151\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 152\u001b[0m \u001b[0mfiltered_tb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_process_traceback_frames\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__traceback__\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/eager/polymorphic_function/polymorphic_function.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *args, **kwds)\u001b[0m\n\u001b[1;32m 892\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 893\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mOptionalXlaContext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_jit_compile\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[0;32m--> 894\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\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 895\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 896\u001b[0m \u001b[0mnew_tracing_count\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexperimental_get_tracing_count\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[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/eager/polymorphic_function/polymorphic_function.py\u001b[0m in \u001b[0;36m_call\u001b[0;34m(self, *args, **kwds)\u001b[0m\n\u001b[1;32m 931\u001b[0m \u001b[0;31m# In this case we have not created variables on the first call. So we can\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 932\u001b[0m \u001b[0;31m# run the first trace but we should fail if variables are created.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 933\u001b[0;31m \u001b[0mresults\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_variable_creation_fn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\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 934\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_created_variables\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mALLOW_DYNAMIC_VARIABLE_CREATION\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 935\u001b[0m raise ValueError(\"Creating variables on a non-first call to a function\"\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/eager/polymorphic_function/tracing_compiler.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 141\u001b[0m (concrete_function,\n\u001b[1;32m 142\u001b[0m filtered_flat_args) = self._maybe_define_function(args, kwargs)\n\u001b[0;32m--> 143\u001b[0;31m return concrete_function._call_flat(\n\u001b[0m\u001b[1;32m 144\u001b[0m filtered_flat_args, captured_inputs=concrete_function.captured_inputs) # pylint: disable=protected-access\n\u001b[1;32m 145\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/eager/polymorphic_function/monomorphic_function.py\u001b[0m in \u001b[0;36m_call_flat\u001b[0;34m(self, args, captured_inputs, cancellation_manager)\u001b[0m\n\u001b[1;32m 1769\u001b[0m {\"PartitionedCall\": self._get_gradient_function(),\n\u001b[1;32m 1770\u001b[0m \"StatefulPartitionedCall\": self._get_gradient_function()}):\n\u001b[0;32m-> 1771\u001b[0;31m \u001b[0mflat_outputs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mforward_function\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcall\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mctx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0margs_with_tangents\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 1772\u001b[0m \u001b[0mforward_backward\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecord\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mflat_outputs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1773\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_build_call_outputs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mflat_outputs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/eager/polymorphic_function/monomorphic_function.py\u001b[0m in \u001b[0;36mcall\u001b[0;34m(self, ctx, args, cancellation_manager)\u001b[0m\n\u001b[1;32m 407\u001b[0m \u001b[0;31m# forwardprop code (GradientTape manages to ignore it).\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 408\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mtape\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstop_recording\u001b[0m\u001b[0;34m(\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[0;32m--> 409\u001b[0;31m outputs = functional_ops.partitioned_call(\n\u001b[0m\u001b[1;32m 410\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 411\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/ops/functional_ops.py\u001b[0m in \u001b[0;36mpartitioned_call\u001b[0;34m(args, f, tout, executing_eagerly, config, executor_type)\u001b[0m\n\u001b[1;32m 1188\u001b[0m \u001b[0;31m# The generated binding returns an empty list for functions that don't\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1189\u001b[0m \u001b[0;31m# return any Tensors, hence the need to use `create_op` directly.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1190\u001b[0;31m \u001b[0margs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mops\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconvert_to_tensor\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mx\u001b[0m \u001b[0;32min\u001b[0m \u001b[0margs\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 1191\u001b[0m tin_attr = attr_value_pb2.AttrValue(\n\u001b[1;32m 1192\u001b[0m list=attr_value_pb2.AttrValue.ListValue(\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/ops/functional_ops.py\u001b[0m in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 1188\u001b[0m \u001b[0;31m# The generated binding returns an empty list for functions that don't\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1189\u001b[0m \u001b[0;31m# return any Tensors, hence the need to use `create_op` directly.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1190\u001b[0;31m \u001b[0margs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mops\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconvert_to_tensor\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mx\u001b[0m \u001b[0;32min\u001b[0m \u001b[0margs\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 1191\u001b[0m tin_attr = attr_value_pb2.AttrValue(\n\u001b[1;32m 1192\u001b[0m list=attr_value_pb2.AttrValue.ListValue(\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/profiler/trace.py\u001b[0m in \u001b[0;36mwrapped\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 181\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mTrace\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtrace_name\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mtrace_kwargs\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[1;32m 182\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 183\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\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 184\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 185\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mwrapped\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/framework/ops.py\u001b[0m in \u001b[0;36mconvert_to_tensor\u001b[0;34m(value, dtype, name, as_ref, preferred_dtype, dtype_hint, ctx, accepted_result_types)\u001b[0m\n\u001b[1;32m 1595\u001b[0m \u001b[0;34m\"building a function.\"\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1596\u001b[0m name=name))\n\u001b[0;32m-> 1597\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mgraph\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcapture\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mname\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 1598\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1599\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdtype\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/framework/func_graph.py\u001b[0m in \u001b[0;36mcapture\u001b[0;34m(self, tensor, name, shape)\u001b[0m\n\u001b[1;32m 741\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 742\u001b[0m \u001b[0;31m# Large EagerTensors and resources are captured with Placeholder ops\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 743\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_capture_helper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtensor\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mshape\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 744\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mtensor\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgraph\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 745\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mname\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/framework/func_graph.py\u001b[0m in \u001b[0;36m_capture_helper\u001b[0;34m(self, tensor, name, shape)\u001b[0m\n\u001b[1;32m 776\u001b[0m \u001b[0mcapture\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_captures\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mid\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtensor\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[1;32m 777\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mcapture\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 778\u001b[0;31m placeholder = _create_substitute_placeholder(\n\u001b[0m\u001b[1;32m 779\u001b[0m tensor, name=name, dtype=tensor.dtype, shape=shape)\n\u001b[1;32m 780\u001b[0m \u001b[0;31m# Record the composite device as an attribute to the placeholder.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/framework/func_graph.py\u001b[0m in \u001b[0;36m_create_substitute_placeholder\u001b[0;34m(value, name, dtype, shape)\u001b[0m\n\u001b[1;32m 1396\u001b[0m \u001b[0mshape\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1397\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mops\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcontrol_dependencies\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;32mNone\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[0;32m-> 1398\u001b[0;31m placeholder = graph_placeholder(\n\u001b[0m\u001b[1;32m 1399\u001b[0m dtype=dtype or value.dtype, shape=shape, name=name)\n\u001b[1;32m 1400\u001b[0m \u001b[0mhandle_data_util\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcopy_handle_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mplaceholder\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/eager/graph_only_ops.py\u001b[0m in \u001b[0;36mgraph_placeholder\u001b[0;34m(dtype, shape, name)\u001b[0m\n\u001b[1;32m 32\u001b[0m \u001b[0mg\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mops\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_default_graph\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[1;32m 33\u001b[0m \u001b[0mattrs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m\"dtype\"\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mdtype_value\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"shape\"\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mshape\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 34\u001b[0;31m op = g._create_op_internal( # pylint: disable=protected-access\n\u001b[0m\u001b[1;32m 35\u001b[0m \u001b[0;34m\"Placeholder\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minput_types\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\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[1;32m 36\u001b[0m attrs=attrs, name=name)\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/framework/func_graph.py\u001b[0m in \u001b[0;36m_create_op_internal\u001b[0;34m(self, op_type, inputs, dtypes, input_types, name, attrs, op_def, compute_device)\u001b[0m\n\u001b[1;32m 705\u001b[0m \u001b[0minp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcapture\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minp\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 706\u001b[0m \u001b[0mcaptured_inputs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minp\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 707\u001b[0;31m return super()._create_op_internal( # pylint: disable=protected-access\n\u001b[0m\u001b[1;32m 708\u001b[0m \u001b[0mop_type\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcaptured_inputs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtypes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minput_types\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mattrs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mop_def\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 709\u001b[0m compute_device)\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/framework/ops.py\u001b[0m in \u001b[0;36m_create_op_internal\u001b[0;34m(self, op_type, inputs, dtypes, input_types, name, attrs, op_def, compute_device)\u001b[0m\n\u001b[1;32m 3812\u001b[0m \u001b[0;31m# Session.run call cannot occur between creating and mutating the op.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3813\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_mutation_lock\u001b[0m\u001b[0;34m(\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[0;32m-> 3814\u001b[0;31m ret = Operation(\n\u001b[0m\u001b[1;32m 3815\u001b[0m \u001b[0mnode_def\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3816\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/framework/ops.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(***failed resolving arguments***)\u001b[0m\n\u001b[1;32m 2110\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2111\u001b[0m \u001b[0;31m# Initialize c_op from node_def and other inputs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2112\u001b[0;31m \u001b[0mc_op\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_create_c_op\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mg\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnode_def\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minputs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcontrol_input_ops\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mop_def\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mop_def\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 2113\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_init_from_c_op\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mc_op\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mc_op\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mg\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2114\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/util/traceback_utils.py\u001b[0m in \u001b[0;36merror_handler\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 148\u001b[0m \u001b[0mfiltered_tb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 149\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 150\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\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 151\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 152\u001b[0m \u001b[0mfiltered_tb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_process_traceback_frames\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__traceback__\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/framework/ops.py\u001b[0m in \u001b[0;36m_create_c_op\u001b[0;34m(graph, node_def, inputs, control_inputs, op_def, extract_traceback)\u001b[0m\n\u001b[1;32m 1976\u001b[0m \u001b[0;31m# TF_Operation.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1977\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mextract_traceback\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1978\u001b[0;31m \u001b[0mtf_stack\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mextract_stack_for_op\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mc_op\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstacklevel\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m3\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 1979\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1980\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mc_op\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/util/tf_stack.py\u001b[0m in \u001b[0;36mextract_stack_for_op\u001b[0;34m(c_op, stacklevel)\u001b[0m\n\u001b[1;32m 178\u001b[0m \u001b[0;31m# traversing the stack.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 179\u001b[0m \u001b[0mthread_key\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_get_thread_key\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[0;32m--> 180\u001b[0;31m _tf_stack.extract_stack_for_op(\n\u001b[0m\u001b[1;32m 181\u001b[0m \u001b[0m_source_mapper_stacks\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mthread_key\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minternal_map\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 182\u001b[0m _source_filter_stacks[thread_key][-1].internal_set, c_op, stacklevel)\n", "\u001b[0;31mKeyboardInterrupt\u001b[0m: " ] } ] } ] }