{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Quantum pipeline using TorchQuantum" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import os\n", "os.environ[\"TOKENIZERS_PARALLELISM\"] = \"false\"" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import torch\n", "\n", "BATCH_SIZE = 10\n", "EPOCHS = 5\n", "LEARNING_RATE = 0.01\n", "SEED = 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Input data" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def read_data(filename):\n", " labels, sentences = [], []\n", " with open(filename) as f:\n", " for line in f:\n", " t = float(line[0])\n", " labels.append([t, 1-t])\n", " sentences.append(line[1:].strip())\n", " return labels, sentences\n", "\n", "\n", "train_labels, train_data = read_data('datasets/mc_train_data.txt')\n", "dev_labels, dev_data = read_data('datasets/mc_dev_data.txt')\n", "test_labels, test_data = read_data('datasets/mc_test_data.txt')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "nbsphinx": "hidden" }, "outputs": [], "source": [ "TESTING = int(os.environ.get('TEST_NOTEBOOKS', '0'))\n", "\n", "if TESTING:\n", " train_labels, train_data = train_labels[:2], train_data[:2]\n", " dev_labels, dev_data = dev_labels[:2], dev_data[:2]\n", " test_labels, test_data = test_labels[:2], test_data[:2]\n", " EPOCHS = 1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Create diagrams" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/opt/miniconda3/envs/lmbq_tq/lib/python3.9/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", " from .autonotebook import tqdm as notebook_tqdm\n", "Tagging sentences.\n", "Parsing tagged sentences.\n", "Turning parse trees to diagrams.\n", "Tagging sentences.\n", "Parsing tagged sentences.\n", "Turning parse trees to diagrams.\n", "Tagging sentences.\n", "Parsing tagged sentences.\n", "Turning parse trees to diagrams.\n" ] } ], "source": [ "from lambeq import BobcatParser\n", "\n", "reader = BobcatParser(verbose='text')\n", "\n", "train_diagrams = reader.sentences2diagrams(train_data)\n", "dev_diagrams = reader.sentences2diagrams(dev_data)\n", "test_diagrams = reader.sentences2diagrams(test_data)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Create circuits" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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zMSIESOwfv167N+/HydPnsTZs2fx888/c/MXFRVhzpw5uHHjBiIjI6GmpobPPvsMlZWVQuuV12dSWFiINWvWYO/evbh48SIyMjLqfUg2JycnvHjxQmifZI25NG0Kj8fDhQsXUFhYiFWrVuGXX37BnTt3YGJigunTp+Pq1as4ePAgbt++jS+++AIDBw7E/fv3ueULCwsRFBSEX3/9FZcvX0Zubi6++uor7v38/HwMHjwYkZGRuHnzJgYOHAhPT09kZGQIlWPNmjWwt7fHzZs38d133yE1NRUDBw7E8OHDcfv2bRw6dAiXLl3C9OnTAQA3btzgjumjR48CABwcHGSIvKg9e/ZAR0cH169fx08//STSbogTGRmJlJQU7ioFACxYsAB+fn7w9/fH48ePMXToUJiYmMDDwwMrVqzAlClTsHz5cujo6CA8PBzA2/ay6izY/fv3cezYMXTp0oXbjizrrPL9999jxIgRuH37NgYPHozRo0fj1atXdY5XXFwcysrK4O7uzk3r1KkTLC0tcfXqVW4an89Ht27dFNZmNQb10a6+73tdT08PYWFhSEpKwoYNG7Bz506EhIRIVc6FCxdi5cqV3Lb2798PU1NTAG/74PTw8ICenh5iYmJw+fJl6OrqYuDAgfVy9SIqKgqpqamIiorCnj17EBYWJjKue105OTlJXS8bdXdKR44ckar/qf/++w/9+/cXmvb69WvcvHkTtra2mDVrFgDg9u3b0NTUFJq3atr8+fOFll+/fj2KiooAABMnTsSjR49QWVkJe3t7oS8RAFiyZAl+/vlnbv6AgADo6elxCbGXlxc0NTW5DmF/+OEHGBoaAgAePnyI7Oxsife1rrp27YqAgABs374dQ4cORUREBCIjI/Hpp5/i/v37SEtLw//+9z9UVFTgs88+g6urKzZs2ICYmBjMmTMHixcvBp/Px8iRI3HmzBm4ublx6w4MDMSQIUMAvG3QP/zwQzx48ACdOnWqU5mfPXsGExMToWkaGhowMjLCs2fPhKa3atUK6enpddreu0REREBXVxfl5eUoKSmBmpoaNm3aBOBtFytVw5Jdu3YN3377Lfbs2YPOnTsDANLT09GqVSux6/3hhx/Qu3dvAG/r28KFC5Gamop27doBAHx8fBAVFYVPP/0UANC/f3+hm9B37dqFli1bIikpidseIL/PpKysDNu2bUP7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wevp6aFFixbo3r27nEpFGiJZ6gohhBBCFIuuGxFCCCGEEIWgxFMCaWlp4PF4SEhIqHWe6Oho8Hg85ObmKqxchBDy/9q7nxCrygaO479rzk0HcyTUmWgjVMpoYpA6zGwyi2ojBEbtlCsKCS6kFHOjLhW0NBAFsXDZKpXaDAzoyj8w6WbCShFX45RiyRg4qdMiHJp39E1ffJ+5d/p8Vveeee4zz9l9ec7hHIBGIjyfkK6urvT396elpSXJX494mjFjxvguCgCgjtT1PZ6NpFqtpq2tbbyXAQBQt/4VO563bt3KqlWrMm3atDz33HPZs2dPli1blo0bNyZJKpVKjh49Ouo3M2bMGPNg+gsXLqSrqytTpkzJyy+/nJMnT4787e+X2k+cOJFarZbffvstlUollUolO3bs+P+eJABAnftXhOfmzZtz8uTJHDt2LN3d3Tlx4kS+++67/2mejz/+OOfOnUtnZ2dWrFiR69evjxnX1dWVvXv3Zvr06env709/f382bdr0JE4FAKBhTfjwHBwczOHDh7N79+688cYbWbhwYY4cOZI7d+489lwbNmzIypUr097engMHDqSlpSWHDx8eM65araalpSWVSiVtbW1pa2vLtGnTnsTpAAA0rAkfnpcuXcrQ0FA6OjpGjj377LOZN2/eY8/V2dk58nny5MlZvHixVygCADyiCR+ej6JSqWR4eHjUsT/++GOcVgMAMDFN+PB84YUX0tTUlDNnzowcu3HjRn788ceR77NmzUp/f//I959++im///77mLlOnz498vnOnTvp7e1Ne3v7A/9vtVrN3bt3n8QpAABMCHX7OKWbN2/m/fffz7179x7rd319fbl48WLeeuutkWOtra1ZtWpVdu3alWq1mosXL+b27dv5+uuv8/3336dSqeSTTz7J0qVLkyRbtmxJU1PTmLn379+fl156Ke3t7fnss89y48aNrFmz5oHrmDNnTgYHB9PT05NFixalubk5zc3Nj3UuAAATSd2GZ19fX7q7u9PU1JQVK1Zk0qRH25x9/fXXxxxbsmRJent7c/78+UyePHnk/s6nn346zc3NGRgYSKVSyWuvvZbnn38++/btS29v75h5du7cmZ07d+b8+fN58cUXc/z48cycOfOB6+jq6sqHH36YDz74INevX8/27ds9UgkA+FerDP/nzY115MiRI6nValm3bl0OHDjwyPH5KJYtW5aFCxfmypUr6e7uztGjR/POO+88sfkBJqrPP/88W7duza1bt8Z7KUCDqet7PFevXp0vv/wyhw4dyvr16//xsvv+/fszZ86cTJkyJR0dHTl79uxDxw4PD+fbb78VnQAAhdTtpfb7Vq9enSSp1WpJ8tCdz6+++iofffRRDh48mI6Ojuzduzdvv/12fvjhh8yePXvU2KGhofT19eXXX3/NN998IzoBAAqo6x3P+x5l5/PTTz/NunXrUqvVMn/+/Bw8eDDNzc354osvRo0bGhrKe++9l8HBQdEJAFBQ3e943vffdj6HhobS29ubrVu3joyfNGlS3nzzzZw6dWrk2P3odHkdAKC8hgnP5OHxee3atdy9ezetra2jxre2tubChQtJRCcAwHhrqPBMHhyf/0R0AgCMv4YLz2RsfO7bty9PPfVUBgYGRo0bGBjI7NmzRScAQB1oyPBMxsbnq6++mp6enrz77rtJknv37qWnpyfPPPNMLl++LDoBAMZZw4ZnMjo+ly9fnkOHDmXx4sVZunRp9uzZk59//jm//PJLjh07JjoBAMZZQ4dnMjo+Ozs7s23btly9enXkveiiEwCgPjR8eCaj43Pt2rW5evVquru7c/z4cdEJAFAnJkR4JqPjs1qtuqcTAKDOTJjwTP6Kz7lz52bq1Kl55ZVXxns5AAD8zYQKzyTp7Owc7yUAAPAADfGudgAAGp/wBACgCOEJAEARwhMAgCKEJwAARQhPAACKEJ4AABQhPAEAKEJ4AgBQhPAEAKAI4QkAQBHCEwCAIoQnAABFCE8AAIoQngAAFCE8AQAoQngCAFCE8AQAoAjhCcBjWbBgQWq12ngvA2hAleHh4eHxXgQAABOfHU8AAIoQngAAFCE8AQAoQngCAFCE8AQAoAjhCQBAEcITAIAihCcAAEUITwAAihCeAAAUITwBAChCeAIAUITwBACgCOEJAEARwhMAgCKEJwAARQhPAACKEJ4AABQhPAEAKEJ4AgBQhPAEAKAI4QkAQBHCEwCAIoQnAABFCE8AAIoQngAAFCE8AQAoQngCAFCE8AQAoAjhCQBAEcITAIAihCcAAEUITwAAihCeAAAUITwBAChCeAIAUITwBACgiD8BvB91dq5yc98AAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from lambeq.backend.tensor import Dim\n", "\n", "from lambeq import AtomicType, IQPAnsatz\n", "\n", "ansatz = IQPAnsatz({AtomicType.NOUN: 1,\n", " AtomicType.SENTENCE: 1}, n_layers=1)\n", "\n", "train_circuits = [ansatz(diagram) for diagram in train_diagrams]\n", "dev_circuits = [ansatz(diagram) for diagram in dev_diagrams]\n", "test_circuits = [ansatz(diagram) for diagram in test_diagrams]\n", "\n", "train_circuits = train_circuits[:1]\n", "dev_circuits = train_circuits[:1]\n", "test_circuits = train_circuits[:1]\n", "\n", "train_labels = train_labels[:1]\n", "dev_labels = train_labels[:1]\n", "test_labels = train_labels[:1]\n", "\n", "train_circuits[-1].draw()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Parameterise" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "from lambeq import TorchQuantumModel\n", "all_circuits = train_circuits + dev_circuits + test_circuits\n", "model = TorchQuantumModel.from_diagrams(all_circuits)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Define Evaluation Metric" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "sig = torch.sigmoid\n", "\n", "def accuracy(y_hat, y):\n", " return torch.sum(torch.eq(torch.round(sig(y_hat)), y))/len(y)/2 # half due to double-counting\n", "\n", "def accuracy(y_hat, y):\n", " return (torch.argmax(y_hat, dim=1) == \n", " torch.argmax(y, dim=1)).sum().item()/len(y)\n", "\n", "def loss(y_hat, y):\n", " return torch.nn.functional.mse_loss(y_hat, y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Initialize Trainer" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "from lambeq import PytorchTrainer\n", "\n", "trainer = PytorchTrainer(\n", " model=model,\n", " loss_function=loss,\n", " optimizer=torch.optim.Adam, # type: ignore\n", " learning_rate=LEARNING_RATE,\n", " device=-1,\n", " epochs=EPOCHS,\n", " evaluate_functions={\"acc\": accuracy},\n", " evaluate_on_train=True,\n", " verbose='text',\n", " seed=SEED)\n" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "from lambeq import Dataset\n", "\n", "train_dataset = Dataset(\n", " train_circuits,\n", " train_labels,\n", " batch_size=BATCH_SIZE)\n", "\n", "dev_dataset = Dataset(dev_circuits, dev_labels)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Train" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Epoch 1: train/loss: 0.1629 valid/loss: 0.0821 train/time: 0.10s valid/time: 0.01s train/time_per_epoch: 0.10s valid/time_per_eval: 0.01s train/acc: 1.0000 valid/acc: 1.0000\n", "Epoch 2: train/loss: 0.0821 valid/loss: 0.0400 train/time: 0.01s valid/time: 0.01s train/time_per_epoch: 0.01s valid/time_per_eval: 0.01s train/acc: 1.0000 valid/acc: 1.0000\n", "Epoch 3: train/loss: 0.0400 valid/loss: 0.0193 train/time: 0.01s valid/time: 0.01s train/time_per_epoch: 0.01s valid/time_per_eval: 0.01s train/acc: 1.0000 valid/acc: 1.0000\n", "Epoch 4: train/loss: 0.0193 valid/loss: 0.0102 train/time: 0.01s valid/time: 0.01s train/time_per_epoch: 0.01s valid/time_per_eval: 0.01s train/acc: 1.0000 valid/acc: 1.0000\n", "Epoch 5: train/loss: 0.0102 valid/loss: 0.0072 train/time: 0.01s valid/time: 0.01s train/time_per_epoch: 0.01s valid/time_per_eval: 0.01s train/acc: 1.0000 valid/acc: 1.0000\n", "\n", "Training completed!\n", "train/time: 0.17s train/time_per_epoch: 0.03s train/time_per_step: 0.03s valid/time: 0.03s valid/time_per_eval: 0.01s\n" ] } ], "source": [ "trainer.fit(train_dataset, dev_dataset, log_interval=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Show results" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Test accuracy: 1.0\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA18AAAIjCAYAAAD80aFnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAACC9UlEQVR4nOzdd3gU5drH8d+mF5JAKAmBQEJReughooAQDYgIigqIgsgBC6CY46vGAshRwc5RkKJHwYJgAxUVhNBEqQlBQEBQIAGS0NOAtN33D2R1TUJJsjvZ5Pu5rr1gn3lm5p5Hndt7Z+YZk8VisQgAAAAAYFcuRgcAAAAAAFUBxRcAAAAAOADFFwAAAAA4AMUXAAAAADgAxRcAAAAAOADFFwAAAAA4AMUXAAAAADgAxRcAAAAAOADFFwAAAAA4AMUXUMHde++9CgsLK9W6kyZNkslkKt+AAABVxoEDB2QymTR37lyjQwEqBYovoJRMJtNlfVavXm10qE5v/vz5mjZtmtFhAEC5mDt3rk2e8PLyUkhIiGJiYvTmm28qKyvL6BAh6cUXX9TixYsdvt8jR45o0qRJSkpKcvi+YX8mi8ViMToIwBl99NFHNt8/+OADLV++XB9++KFN+w033KCgoKBS7yc/P19ms1menp5XvG5BQYEKCgrk5eVV6v1XBDfffLN27NihAwcOGB0KAJTZ3LlzNWLECE2ePFnh4eHKz89XWlqaVq9ereXLl6tBgwb6+uuv1aZNG6ND1YEDBxQeHq73339f9957r9HhOFS1atV0++23O/yq35YtW9SpU6cqOeZVgZvRAQDO6u6777b5vmHDBi1fvrxI+z+dOXNGPj4+l70fd3f3UsUnSW5ubnJz4z9zAKiI+vTpo44dO1q/x8XFaeXKlbr55pt1yy23aNeuXfL29jYwQgDljdsOATvq0aOHWrVqpYSEBHXr1k0+Pj566qmnJElfffWV+vbtq5CQEHl6eqpx48b6z3/+o8LCQptt/POZrwv337/66quaM2eOGjduLE9PT3Xq1EmbN2+2Wbe4Z75MJpPGjh2rxYsXq1WrVvL09FTLli21dOnSIvGvXr1aHTt2lJeXlxo3bqzZs2df9nNke/fu1cCBAxUcHCwvLy/Vr19fgwcPVkZGhk2/jz76SB06dJC3t7cCAwM1ePBgpaSk2Izht99+q4MHD1pv0SntM3AAUNH17NlTzz77rA4ePFjkDovdu3fr9ttvV2BgoLy8vNSxY0d9/fXX1uVbtmyRyWTSvHnzimx32bJlMplMWrJkibXt8OHDuu+++xQUFGTNBe+9995lxbly5Updd9118vX1VfXq1dW/f3/t2rXLps+FfLF7927deeed8vf3V82aNfXII4/o3LlzNn0v5KbPPvtMLVq0kLe3t6KiorR9+3ZJ0uzZs9WkSRN5eXmpR48exd4JsXHjRvXu3VsBAQHy8fFR9+7d9dNPPxUb0759+3TvvfeqevXqCggI0IgRI3TmzBmbeHJycjRv3jxr7rnUVai33npLLVu2lI+Pj2rUqKGOHTtq/vz5Nn0uNearV69Wp06dJEkjRoyw7ptn7ioPfhIH7OzEiRPq06ePBg8erLvvvtt6C+LcuXNVrVo1xcbGqlq1alq5cqUmTJigzMxMvfLKK5fc7vz585WVlaX7779fJpNJL7/8sm677Tb98ccfl7xatm7dOn355Zd66KGH5OfnpzfffFMDBw5UcnKyatasKUnaunWrevfurbp16+q5555TYWGhJk+erNq1a18ytry8PMXExCg3N1fjxo1TcHCwDh8+rCVLluj06dMKCAiQJL3wwgt69tlndeedd+pf//qXjh07prfeekvdunXT1q1bVb16dT399NPKyMjQoUOH9MYbb0g6fysIAFRW99xzj5566in98MMPGjVqlCRp586d6tq1q+rVq6cnn3xSvr6++vTTTzVgwAB98cUXuvXWW9WxY0c1atRIn376qYYPH26zzYULF6pGjRqKiYmRJKWnp6tLly7Woqd27dr6/vvvNXLkSGVmZmr8+PElxrdixQr16dNHjRo10qRJk3T27Fm99dZb6tq1qxITE4v8QHbnnXcqLCxMU6ZM0YYNG/Tmm2/q1KlT+uCDD2z6/fjjj/r66681ZswYSdKUKVN088036/HHH9fbb7+thx56SKdOndLLL7+s++67TytXrrSuu3LlSvXp00cdOnTQxIkT5eLiovfff189e/bUjz/+qM6dOxeJKTw8XFOmTFFiYqLeffdd1alTRy+99JIk6cMPP9S//vUvde7cWaNHj5YkNW7cuMQxeeedd/Twww/r9ttvtxaXv/zyizZu3Ki77rrrsse8efPmmjx5siZMmKDRo0fruuuukyRdc801Je4bTsYCoFyMGTPG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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "fig1, ((ax_tl, ax_tr), (ax_bl, ax_br)) = plt.subplots(2, 2, sharey='row', figsize=(10, 6))\n", "\n", "ax_tl.set_title('Training set')\n", "ax_tr.set_title('Development set')\n", "ax_bl.set_xlabel('Epochs')\n", "ax_br.set_xlabel('Epochs')\n", "ax_bl.set_ylabel('Accuracy')\n", "ax_tl.set_ylabel('Loss')\n", "\n", "colours = iter(plt.rcParams['axes.prop_cycle'].by_key()['color'])\n", "range_ = np.arange(1, trainer.epochs + 1)\n", "ax_tl.plot(range_, trainer.train_epoch_costs, color=next(colours))\n", "ax_bl.plot(range_, trainer.train_eval_results['acc'], color=next(colours))\n", "ax_tr.plot(range_, trainer.val_costs, color=next(colours))\n", "ax_br.plot(range_, trainer.val_eval_results['acc'], color=next(colours))\n", "\n", "# print test accuracy\n", "test_acc = accuracy(model.forward(test_circuits), torch.tensor(test_labels))\n", "print('Test accuracy:', test_acc)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "language_info": { "name": "python" } }, "nbformat": 4, "nbformat_minor": 4 }