From 1dd5cb631a27e6c233b5c0ac074af8a4b1a6b081 Mon Sep 17 00:00:00 2001 From: Rune Harlyk Date: Mon, 22 Jul 2024 19:49:54 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=A6=BC=20Adds=20test=20for=20convert=20st?= =?UTF-8?q?atus?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- esp32/neural_network.ipynb | 182 ++++++++++++++++++++++++++++++------- 1 file changed, 148 insertions(+), 34 deletions(-) diff --git a/esp32/neural_network.ipynb b/esp32/neural_network.ipynb index 5b76b24..2f5797b 100644 --- a/esp32/neural_network.ipynb +++ b/esp32/neural_network.ipynb @@ -2,53 +2,49 @@ "cells": [ { "cell_type": "code", - "execution_count": 46, + "execution_count": 276, "metadata": {}, "outputs": [], "source": [ "import torch\n", "import torch.nn as nn\n", "import torch.onnx\n", - "import tensorflow as tf\n", "import onnx\n", + "import onnxruntime as ort\n", "from onnx_tf.backend import prepare\n", + "import tensorflow as tf\n", "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 277, "metadata": {}, "outputs": [], "source": [ - "# Generate data\n", - "x = np.linspace(-2 * np.pi, 2 * np.pi, 1000)\n", + "x = np.linspace(0, 2 * np.pi, 1000, dtype=np.float32)\n", "y = np.sin(x)\n", "\n", - "# Convert to tensors\n", "x_train = torch.tensor(x, dtype=torch.float32).view(-1, 1)\n", "y_train = torch.tensor(y, dtype=torch.float32).view(-1, 1)\n", "\n", - "# Define the model\n", "model = nn.Sequential(\n", " nn.Linear(1, 50),\n", " nn.ReLU(),\n", " nn.Linear(50, 1)\n", ")\n", "\n", - "# Loss and optimizer\n", "criterion = nn.MSELoss()\n", "optimizer = torch.optim.Adam(model.parameters(), lr=0.01)" ] }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 278, "metadata": {}, "outputs": [], "source": [ - "# Training loop\n", "for epoch in range(1000):\n", " optimizer.zero_grad()\n", " output = model(x_train)\n", @@ -59,12 +55,22 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 279, + "metadata": {}, + "outputs": [], + "source": [ + "with torch.no_grad():\n", + " y_pred = model(x_train).numpy()" + ] + }, + { + "cell_type": "code", + "execution_count": 280, "metadata": {}, "outputs": [ { "data": { - "image/png": "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cgr//d//rS5fvlzvGCMmV17saN++fVRWVmIwGEhLSyMyMpJLL72UQ4cO6R3NadTW1nLnnXfyz3/+E29vb73jOL3m5maCg4P1juFwPT09ZGdns3r16v7bDAYDq1evJisrS8dkzqm5uRlgUv6/cjb33nsvl1122aD/hwS89957LFy4kOuuu46wsDDS0tJ47rnn9I51TlK82FFxcTEAjz32GP/v//0/PvjgA4KCgli5ciUnT57UOZ3+VFXltttu4+6772bhwoV6x3F6hYWFPPnkk3z3u9/VO4rD1dfXY7FYCA8PH3R7eHg4NTU1OqVyTlarlfvvv59ly5YxZ84cveM4hddee419+/axbt06vaM4neLiYp5++mmmTZvGxx9/zD333MMPfvAD1q9fr3e0IUnxMgoPP/wwiqIM+dbXrwDwP//zP1xzzTWkp6fz4osvoigK//73v3X+W9jPcL8/Tz75JK2traxdu1bvyA413O/PQJWVlVxyySVcd9113HnnnTolF67g3nvv5dChQ7z22mt6R3EKFRUV/PCHP+SVV17B09NT7zhOx2q1smDBAh5//HHS0tK46667uPPOO3nmmWf0jjYkk94BXNGDDz7IbbfdNuRjkpKSqK6uBiAlJaX/dg8PD5KSkigvL7dnRF0N9/vz2WefkZWVddocjYULF3LTTTc5feU/WsP9/vSpqqpi1apVLF26lL/97W92TuecpkyZgtFopLa2dtDttbW1RERE6JTK+dx333188MEHbN26lZiYGL3jOIXs7GxOnDjBggUL+m+zWCxs3bqVv/zlL3R3d2M0GnVMqK/IyMhBv6MAZs2axZtvvqlTouGR4mUUQkNDCQ0NPefj0tPT8fDw4MiRIyxfvhwAs9lMaWkp8fHx9o6pm+F+f/785z/zq1/9qv/jqqoq1qxZw+uvv05GRoY9I+pquN8f0K64rFq1qv+qncEwOS+Wuru7k56ezubNm/uPGrBarWzevJn77rtP33BOQFVVvv/97/P222+zZcsWEhMT9Y7kNC688EJyc3MH3Xb77bczc+ZM/vu//3tSFy4Ay5YtO21b/dGjR53+d5QUL3bk7+/P3XffzaOPPkpsbCzx8fH87ne/A+C6667TOZ3+4uLiBn3s6+sLQHJysrxqRCtcVq5cSXx8PL///e+pq6vrv28yXm144IEH+Pa3v83ChQtZvHgxf/rTn2hvb+f222/XO5ru7r33Xl599VXeffdd/Pz8+vuAAgIC8PLy0jmdvvz8/E7r/fHx8SEkJER6goAf/ehHLF26lMcff5xvfvOb7N69m7/97W9Of5VXihc7+93vfofJZOKWW26hs7OTjIwMPvvsM+ffQy90t2nTJgoLCyksLDytmFMn4TD466+/nrq6Oh555BFqamqYP38+GzduPK2JdzJ6+umnAVi5cuWg21988cVzLlGKyW3RokW8/fbbrF27ll/84hckJibypz/9iZtuuknvaENS1Mn4U1AIIYQQLmtyLqALIYQQwmVJ8SKEEEIIlyLFixBCCCFcihQvQgghhHApUrwIIYQQwqVI8SKEEEIIlyLFixBCCCFcihQvQgghhHApUrwIIYQQwqVI8SKEEEIIlyLFixBCCCFcihQvQgghhHAp/x+XTbP0Qaxo/gAAAABJRU5ErkJggg==", + "image/png": "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", "text/plain": [ "
" ] @@ -74,15 +80,13 @@ } ], "source": [ - "# Predict\n", - "with torch.no_grad():\n", - " y_pred = model(x_train).numpy()\n", + "def plot_pred(x, y, y_pred):\n", + " plt.plot(x, y, label='True')\n", + " plt.plot(x, y_pred, label='Predicted')\n", + " plt.legend()\n", + " plt.show()\n", "\n", - "# Plot\n", - "plt.plot(x, y, label='True')\n", - "plt.plot(x, y_pred, label='Predicted')\n", - "plt.legend()\n", - "plt.show()" + "plot_pred(x, y, y_pred)" ] }, { @@ -94,14 +98,16 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 281, "metadata": {}, "outputs": [], "source": [ + "data_size = (1, 1)\n", + "batch_size = 1\n", + "channels = 1\n", + "\n", "def convert_torch_to_onnx(model, onnx_model_path = 'model.onnx'):\n", - " data_size = (1, 1)\n", - " batch_size = 1\n", - " sample_input = torch.rand((batch_size, 3, *data_size))\n", + " sample_input = torch.rand((batch_size, channels, *data_size))\n", " torch.onnx.export(\n", " model,\n", " sample_input, \n", @@ -112,7 +118,44 @@ " opset_version=12\n", " )\n", "\n", - "convert_torch_to_onnx(model)" + "onnx_model_path = 'model.onnx'\n", + "convert_torch_to_onnx(model, onnx_model_path)" + ] + }, + { + "cell_type": "code", + "execution_count": 282, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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P3766Sfefvtt/Pz8cLlcpiN6laioKOrXr8+OHTtMR/EKVapU+d0vAI0aNSo3p9ZUXs4iICCANm3aMH/+/JOvud1u5s+fr/Pycla2bfPggw8yadIkfvjhB2rVqmU6ktdzu90UFBSYjmFcjx49WL9+PcnJyScfbdu25dZbbyU5ORmn02k6olfJyclh586dVKlSxXQUr9C5c+ffDcuwbds2atSoYShRydJpo3MwfPhwhgwZQtu2bWnfvj1vvvkmubm5DB061HQ0r5CTk3PKbzu7d+8mOTmZ6OhoqlevbjCZeQ888ACff/45U6ZMITw8/OR1UpGRkQQHBxtOZ97IkSPp27cv1atXJzs7m88//5wFCxYwe/Zs09GMCw8P/921UaGhoVSuXFnXTAGPPvooV199NTVq1ODgwYM888wzOJ1Obr75ZtPRvMIjjzzCJZdcwosvvsigQYNYuXIlY8eOZezYsaajlQzTtzv5infeeceuXr26HRAQYLdv395evny56Uhe48cff7SB3z2GDBliOppxp9svgP3JJ5+YjuYV7rjjDrtGjRp2QECAHRsba/fo0cOeM2eO6VheS7dK/9eNN95oV6lSxQ4ICLCrVq1q33jjjfaOHTtMx/Iq06ZNs5s2bWoHBgbaDRs2tMeOHWs6UomxbNu2DfUmERERkfOma15ERETEp6i8iIiIiE9ReRERERGfovIiIiIiPkXlRURERHyKyouIiIj4FJUXERER8SkqLyIiIuJTVF5ERETEp6i8iIiIiE9ReRERERGfovIiIiIiPuX/AJxSPk4H7z6cAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def test_onnx(onnx_model_path = 'model.onnx'):\n", + " ort_session = ort.InferenceSession(onnx_model_path)\n", + "\n", + " onnx_y_pred = np.zeros(y.shape)\n", + " for idx, _x in enumerate(x):\n", + " x_train_np_reshaped = np.array([[[[_x]]]])\n", + "\n", + " ort_value = ort.OrtValue.ortvalue_from_numpy(x_train_np_reshaped)\n", + "\n", + " input_name = ort_session.get_inputs()[0].name\n", + " inputs = {input_name: ort_value.numpy()}\n", + " outputs = ort_session.run(None, inputs)[0][0][0][0][0]\n", + " onnx_y_pred[idx] = outputs\n", + "\n", + " plot_pred(x, y, onnx_y_pred)\n", + " \n", + "test_onnx(onnx_model_path)" ] }, { @@ -124,7 +167,7 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 283, "metadata": {}, "outputs": [ { @@ -148,7 +191,8 @@ " tf_rep = prepare(onnx_model)\n", " tf_rep.export_graph(tf_model_path)\n", "\n", - "convert_onnx_to_tensorflow()" + "tf_model_path = 'model_tf'\n", + "convert_onnx_to_tensorflow(onnx_model_path, tf_model_path)" ] }, { @@ -160,19 +204,89 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 287, "metadata": {}, - "outputs": [], + "outputs": [ + { + "ename": "ValueError", + "evalue": "Cannot set tensor: Got value of type INT8 but expected type FLOAT32 for input 0, name: serving_default_input:0 ", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[287], line 17\u001b[0m\n\u001b[0;32m 14\u001b[0m f\u001b[38;5;241m.\u001b[39mwrite(tflite_model)\n\u001b[0;32m 16\u001b[0m tflite_model_path \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mmodel.tflite\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[1;32m---> 17\u001b[0m \u001b[43mconvert_tensorflow_to_tensorflow_lite\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtf_model_path\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtflite_model_path\u001b[49m\u001b[43m)\u001b[49m\n", + "Cell \u001b[1;32mIn[287], line 11\u001b[0m, in \u001b[0;36mconvert_tensorflow_to_tensorflow_lite\u001b[1;34m(tf_model_path, tflite_model_path)\u001b[0m\n\u001b[0;32m 9\u001b[0m converter\u001b[38;5;241m.\u001b[39minference_input_type \u001b[38;5;241m=\u001b[39m tf\u001b[38;5;241m.\u001b[39mint8\n\u001b[0;32m 10\u001b[0m converter\u001b[38;5;241m.\u001b[39minference_output_type \u001b[38;5;241m=\u001b[39m tf\u001b[38;5;241m.\u001b[39mint8\n\u001b[1;32m---> 11\u001b[0m tflite_model \u001b[38;5;241m=\u001b[39m \u001b[43mconverter\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconvert\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 13\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mopen\u001b[39m(tflite_model_path, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mwb\u001b[39m\u001b[38;5;124m'\u001b[39m) \u001b[38;5;28;01mas\u001b[39;00m f:\n\u001b[0;32m 14\u001b[0m f\u001b[38;5;241m.\u001b[39mwrite(tflite_model)\n", + "File \u001b[1;32m~\\AppData\\Roaming\\Python\\Python311\\site-packages\\tensorflow\\lite\\python\\lite.py:1065\u001b[0m, in \u001b[0;36m_export_metrics..wrapper\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m 1062\u001b[0m \u001b[38;5;129m@functools\u001b[39m\u001b[38;5;241m.\u001b[39mwraps(convert_func)\n\u001b[0;32m 1063\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mwrapper\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[0;32m 1064\u001b[0m \u001b[38;5;66;03m# pylint: disable=protected-access\u001b[39;00m\n\u001b[1;32m-> 1065\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_convert_and_export_metrics\u001b[49m\u001b[43m(\u001b[49m\u001b[43mconvert_func\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32m~\\AppData\\Roaming\\Python\\Python311\\site-packages\\tensorflow\\lite\\python\\lite.py:1042\u001b[0m, in \u001b[0;36mTFLiteConverterBase._convert_and_export_metrics\u001b[1;34m(self, convert_func, *args, **kwargs)\u001b[0m\n\u001b[0;32m 1040\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_save_conversion_params_metric()\n\u001b[0;32m 1041\u001b[0m start_time \u001b[38;5;241m=\u001b[39m time\u001b[38;5;241m.\u001b[39mprocess_time()\n\u001b[1;32m-> 1042\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[43mconvert_func\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1043\u001b[0m elapsed_time_ms \u001b[38;5;241m=\u001b[39m (time\u001b[38;5;241m.\u001b[39mprocess_time() \u001b[38;5;241m-\u001b[39m start_time) \u001b[38;5;241m*\u001b[39m \u001b[38;5;241m1000\u001b[39m\n\u001b[0;32m 1044\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m result:\n", + "File \u001b[1;32m~\\AppData\\Roaming\\Python\\Python311\\site-packages\\tensorflow\\lite\\python\\lite.py:1390\u001b[0m, in \u001b[0;36mTFLiteSavedModelConverterV2.convert\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 1384\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 1385\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_debug_info \u001b[38;5;241m=\u001b[39m _get_debug_info(\n\u001b[0;32m 1386\u001b[0m _convert_debug_info_func(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_trackable_obj\u001b[38;5;241m.\u001b[39mgraph_debug_info),\n\u001b[0;32m 1387\u001b[0m graph_def,\n\u001b[0;32m 1388\u001b[0m )\n\u001b[1;32m-> 1390\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_convert_from_saved_model\u001b[49m\u001b[43m(\u001b[49m\u001b[43mgraph_def\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32m~\\AppData\\Roaming\\Python\\Python311\\site-packages\\tensorflow\\lite\\python\\lite.py:1257\u001b[0m, in \u001b[0;36mTFLiteConverterBaseV2._convert_from_saved_model\u001b[1;34m(self, graph_def)\u001b[0m\n\u001b[0;32m 1254\u001b[0m converter_kwargs\u001b[38;5;241m.\u001b[39mupdate(quant_mode\u001b[38;5;241m.\u001b[39mconverter_flags())\n\u001b[0;32m 1256\u001b[0m result \u001b[38;5;241m=\u001b[39m _convert_saved_model(\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mconverter_kwargs)\n\u001b[1;32m-> 1257\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_optimize_tflite_model\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 1258\u001b[0m \u001b[43m \u001b[49m\u001b[43mresult\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mquant_mode\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mquant_io\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mexperimental_new_quantizer\u001b[49m\n\u001b[0;32m 1259\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32m~\\AppData\\Roaming\\Python\\Python311\\site-packages\\tensorflow\\lite\\python\\convert_phase.py:215\u001b[0m, in \u001b[0;36mconvert_phase..actual_decorator..wrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 213\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m error:\n\u001b[0;32m 214\u001b[0m report_error_message(\u001b[38;5;28mstr\u001b[39m(error))\n\u001b[1;32m--> 215\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m error \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n", + "File \u001b[1;32m~\\AppData\\Roaming\\Python\\Python311\\site-packages\\tensorflow\\lite\\python\\convert_phase.py:205\u001b[0m, in \u001b[0;36mconvert_phase..actual_decorator..wrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 202\u001b[0m \u001b[38;5;129m@functools\u001b[39m\u001b[38;5;241m.\u001b[39mwraps(func)\n\u001b[0;32m 203\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mwrapper\u001b[39m(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[0;32m 204\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m--> 205\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 206\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m ConverterError \u001b[38;5;28;01mas\u001b[39;00m converter_error:\n\u001b[0;32m 207\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m converter_error\u001b[38;5;241m.\u001b[39merrors:\n", + "File \u001b[1;32m~\\AppData\\Roaming\\Python\\Python311\\site-packages\\tensorflow\\lite\\python\\lite.py:991\u001b[0m, in \u001b[0;36mTFLiteConverterBase._optimize_tflite_model\u001b[1;34m(self, model, quant_mode, quant_io)\u001b[0m\n\u001b[0;32m 989\u001b[0m q_allow_float \u001b[38;5;241m=\u001b[39m quant_mode\u001b[38;5;241m.\u001b[39mis_allow_float()\n\u001b[0;32m 990\u001b[0m q_variable_quantization \u001b[38;5;241m=\u001b[39m quant_mode\u001b[38;5;241m.\u001b[39menable_mlir_variable_quantization\n\u001b[1;32m--> 991\u001b[0m model \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_quantize\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 992\u001b[0m \u001b[43m \u001b[49m\u001b[43mmodel\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 993\u001b[0m \u001b[43m \u001b[49m\u001b[43mq_in_type\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 994\u001b[0m \u001b[43m \u001b[49m\u001b[43mq_out_type\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 995\u001b[0m \u001b[43m \u001b[49m\u001b[43mq_activations_type\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 996\u001b[0m \u001b[43m \u001b[49m\u001b[43mq_bias_type\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 997\u001b[0m \u001b[43m \u001b[49m\u001b[43mq_allow_float\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 998\u001b[0m \u001b[43m \u001b[49m\u001b[43mq_variable_quantization\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 999\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1001\u001b[0m m_in_type \u001b[38;5;241m=\u001b[39m in_type \u001b[38;5;28;01mif\u001b[39;00m in_type \u001b[38;5;28;01melse\u001b[39;00m _dtypes\u001b[38;5;241m.\u001b[39mfloat32\n\u001b[0;32m 1002\u001b[0m m_out_type \u001b[38;5;241m=\u001b[39m out_type \u001b[38;5;28;01mif\u001b[39;00m out_type \u001b[38;5;28;01melse\u001b[39;00m _dtypes\u001b[38;5;241m.\u001b[39mfloat32\n", + "File \u001b[1;32m~\\AppData\\Roaming\\Python\\Python311\\site-packages\\tensorflow\\lite\\python\\lite.py:710\u001b[0m, in \u001b[0;36mTFLiteConverterBase._quantize\u001b[1;34m(self, result, input_type, output_type, activations_type, bias_type, allow_float, enable_variable_quantization)\u001b[0m\n\u001b[0;32m 706\u001b[0m calibrate_quantize \u001b[38;5;241m=\u001b[39m _calibrator\u001b[38;5;241m.\u001b[39mCalibrator(\n\u001b[0;32m 707\u001b[0m result, custom_op_registerers_by_name, custom_op_registerers_by_func\n\u001b[0;32m 708\u001b[0m )\n\u001b[0;32m 709\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_experimental_calibrate_only \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mexperimental_new_quantizer:\n\u001b[1;32m--> 710\u001b[0m calibrated \u001b[38;5;241m=\u001b[39m \u001b[43mcalibrate_quantize\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcalibrate\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 711\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrepresentative_dataset\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minput_gen\u001b[49m\n\u001b[0;32m 712\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 714\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_experimental_calibrate_only:\n\u001b[0;32m 715\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m calibrated\n", + "File \u001b[1;32m~\\AppData\\Roaming\\Python\\Python311\\site-packages\\tensorflow\\lite\\python\\convert_phase.py:215\u001b[0m, in \u001b[0;36mconvert_phase..actual_decorator..wrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 213\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m error:\n\u001b[0;32m 214\u001b[0m report_error_message(\u001b[38;5;28mstr\u001b[39m(error))\n\u001b[1;32m--> 215\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m error \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n", + "File \u001b[1;32m~\\AppData\\Roaming\\Python\\Python311\\site-packages\\tensorflow\\lite\\python\\convert_phase.py:205\u001b[0m, in \u001b[0;36mconvert_phase..actual_decorator..wrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 202\u001b[0m \u001b[38;5;129m@functools\u001b[39m\u001b[38;5;241m.\u001b[39mwraps(func)\n\u001b[0;32m 203\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mwrapper\u001b[39m(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[0;32m 204\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m--> 205\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 206\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m ConverterError \u001b[38;5;28;01mas\u001b[39;00m converter_error:\n\u001b[0;32m 207\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m converter_error\u001b[38;5;241m.\u001b[39merrors:\n", + "File \u001b[1;32m~\\AppData\\Roaming\\Python\\Python311\\site-packages\\tensorflow\\lite\\python\\optimize\\calibrator.py:254\u001b[0m, in \u001b[0;36mCalibrator.calibrate\u001b[1;34m(self, dataset_gen)\u001b[0m\n\u001b[0;32m 244\u001b[0m \u001b[38;5;129m@convert_phase\u001b[39m(Component\u001b[38;5;241m.\u001b[39mOPTIMIZE_TFLITE_MODEL, SubComponent\u001b[38;5;241m.\u001b[39mCALIBRATE)\n\u001b[0;32m 245\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mcalibrate\u001b[39m(\u001b[38;5;28mself\u001b[39m, dataset_gen):\n\u001b[0;32m 246\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Calibrates the model with specified generator.\u001b[39;00m\n\u001b[0;32m 247\u001b[0m \n\u001b[0;32m 248\u001b[0m \u001b[38;5;124;03m Returns:\u001b[39;00m\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 252\u001b[0m \u001b[38;5;124;03m dataset_gen: A generator that generates calibration samples.\u001b[39;00m\n\u001b[0;32m 253\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[1;32m--> 254\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_feed_tensors\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdataset_gen\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mresize_input\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m)\u001b[49m\n\u001b[0;32m 255\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_calibrator\u001b[38;5;241m.\u001b[39mCalibrate()\n", + "File \u001b[1;32m~\\AppData\\Roaming\\Python\\Python311\\site-packages\\tensorflow\\lite\\python\\optimize\\calibrator.py:152\u001b[0m, in \u001b[0;36mCalibrator._feed_tensors\u001b[1;34m(self, dataset_gen, resize_input)\u001b[0m\n\u001b[0;32m 150\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_calibrator\u001b[38;5;241m.\u001b[39mFeedTensor(input_array, signature_key)\n\u001b[0;32m 151\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m--> 152\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_calibrator\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mFeedTensor\u001b[49m\u001b[43m(\u001b[49m\u001b[43minput_array\u001b[49m\u001b[43m)\u001b[49m\n", + "\u001b[1;31mValueError\u001b[0m: Cannot set tensor: Got value of type INT8 but expected type FLOAT32 for input 0, name: serving_default_input:0 " + ] + } + ], "source": [ "def convert_tensorflow_to_tensorflow_lite(tf_model_path = 'model_tf', tflite_model_path = 'model.tflite'):\n", + " def representative_dataset_gen():\n", + " for i in range(1000): # Generate 100 samples\n", + " yield [np.array([x[i]], dtype=np.float32)] \n", " converter = tf.lite.TFLiteConverter.from_saved_model(tf_model_path)\n", + " converter.optimizations = [tf.lite.Optimize.DEFAULT]\n", + " converter.representative_dataset = representative_dataset_gen\n", + " converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS_INT8]\n", + " converter.inference_input_type = tf.int8\n", + " converter.inference_output_type = tf.int8\n", " tflite_model = converter.convert()\n", "\n", - " # Save the model\n", " with open(tflite_model_path, 'wb') as f:\n", " f.write(tflite_model)\n", "\n", - "convert_tensorflow_to_tensorflow_lite()" + "tflite_model_path = 'model.tflite'\n", + "convert_tensorflow_to_tensorflow_lite(tf_model_path, tflite_model_path)" + ] + }, + { + "cell_type": "code", + "execution_count": 285, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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te/nbFS8yOXLzzN2gs7PheQDxrn6fci99XMe+t9fLN11DB8PG9OGtad5zUBzs5os2NeDz4d3oE6oL4eSMhk4ZRWJKVkwZG5xAZOZZGpGESldnp6ehIeHU6tWLR544AF69+7NnDlzim71vPzyy0RERNCwYUMADhw4wG233UZQUBDBwcHccMMN7Nu3r+j75efnM2bMGIKCgqhatSpPPPEE/9ym8J+3jbKzs3nyySeJjIzE09OTevXq8cknn7Bv376iDZSrVKmCxWJhyJAhANjtdsaPH090dDTe3t60bNmSWbNmnfY+P/30Ew0aNMDb25uePXuelrMsqXiRy5OVDO+1gFej4M36cGA1APYOD/L4z/Es2JqIh5uVKYPa0SaqislhnUOovyczRnQkMtib/cczuOeTVSR7hEGbQcYF2anmBhRxBQ4H5KSX/6MU9jL29vYu6mVZuHAhO3bsYMGCBcydO5fc3Fz69u2Lv78/S5cu5c8//8TPz49+/foVveatt95i2rRpTJ06lWXLlnHixAm+//77c77noEGD+N///sf777/Ptm3bmDhxIn5+fkRGRvLtt98CsGPHDuLj43nvvfcAGD9+PJ999hkTJkxgy5YtPProo9x9990sXrwYMIqsm2++meuuu44NGzYwYsQInnrqqcv++VwIrfMilydxS/EsmcyTRacnbshi9obDuFktfDywDZ3qVa4xLucTHujFjBEdGTBhOTsT0/jX52v5vIUf7gCph2H2g5CWWPyCZgOg1Z1mxRVxPrkZ8EpE+b/v04eNW72XwOFwsHDhQn755Rceeughjh49iq+vL1OmTMHDw9gO5YsvvsButzNlypSilcY//fRTgoKCWLRoEX369OHdd99l3Lhx3HzzzQBMmDCBX3755azvu3PnTmbOnMmCBQvo3bs3AHXq1ClqDw42buVXq1aNoKAgwOipeeWVV/jtt9+IiYkpes2yZcuYOHEi3bt35+OPP6Zu3bq89dZbADRs2JBNmzbx2mtlv+msihe5POnHzjiVY/Pl3bVZgAdv3day0swquliRwT58OqQ9t01cwcq9J/ifI4lBUPKmjYfWqXgRcVFz587Fz8+P3Nxc7HY7d911Fy+88AIjR46kefPmRYULwMaNG9m9e/cZ41WysrLYs2cPycnJxMfH06FDh6I2Nzc32rVrd8ato0IbNmzAZrPRvXv3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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def test_tf_lite_model(tflite_model_path = 'model.tflite'):\n", + " interpreter = tf.lite.Interpreter(model_path=tflite_model_path)\n", + " interpreter.allocate_tensors()\n", + " input_details = interpreter.get_input_details()\n", + " output_details = interpreter.get_output_details()\n", + " \n", + " tf_lite_y_pred = np.zeros(y.shape)\n", + " for idx, _x in enumerate(x):\n", + " input_data = np.array([[[[_x]]]])\n", + "\n", + " interpreter.set_tensor(input_details[0]['index'], input_data)\n", + " interpreter.invoke()\n", + " output_data = interpreter.get_tensor(output_details[0]['index'])[0][0][0][0]\n", + " tf_lite_y_pred[idx] = output_data\n", + "\n", + " plot_pred(x, y, tf_lite_y_pred)\n", + "\n", + "test_tf_lite_model()" ] }, { @@ -184,11 +298,11 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 286, "metadata": {}, "outputs": [], "source": [ - "def save_tflite_model_as_c_header(tflite_model_path = 'model.tflite'):\n", + "def save_tflite_model_as_c_header(tflite_model_path = 'model.tflite', output_file_path = \"./src/model.h\"):\n", " with open(tflite_model_path, \"rb\") as f:\n", " tflite_model_content = f.read()\n", "\n", @@ -200,7 +314,7 @@ " header_content = header_content.rstrip(\", \")\n", " header_content += \"\\n};\"\n", "\n", - " with open(\"model.h\", \"w\") as f:\n", + " with open(output_file_path, \"w\") as f:\n", " f.write(header_content)\n", "\n", "save_tflite_model_as_c_header()"