diff --git a/context33.ipynb b/context33.ipynb index 616482d..8c1e6cd 100644 --- a/context33.ipynb +++ b/context33.ipynb @@ -2,21 +2,19 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, "id": "c33-0001", "metadata": { - "ExecuteTime": { - "end_time": "2026-05-31T13:22:40.037058385Z", - "start_time": "2026-05-31T13:22:39.555320188Z" - }, "execution": { - "iopub.execute_input": "2026-05-31T13:29:00.778448Z", - "iopub.status.busy": "2026-05-31T13:29:00.778275Z", - "iopub.status.idle": "2026-05-31T13:29:01.662542Z", - "shell.execute_reply": "2026-05-31T13:29:01.661652Z" + "iopub.execute_input": "2026-05-31T13:42:50.031812Z", + "iopub.status.busy": "2026-05-31T13:42:50.031636Z", + "iopub.status.idle": "2026-05-31T13:42:50.946668Z", + "shell.execute_reply": "2026-05-31T13:42:50.945911Z" + }, + "ExecuteTime": { + "end_time": "2026-05-31T13:57:38.398527610Z", + "start_time": "2026-05-31T13:57:37.908008067Z" } }, - "outputs": [], "source": [ "# context33.prj → pyRBM\n", "#\n", @@ -32,25 +30,25 @@ "from rbm.matrix import np, convert\n", "from rbm.entity import EntityParams, TrainingParams\n", "from rbm.status import CheckpointStatus" - ] + ], + "outputs": [], + "execution_count": 1 }, { "cell_type": "code", - "execution_count": 2, "id": "c33-0002", "metadata": { - "ExecuteTime": { - "end_time": "2026-05-31T13:22:40.085346225Z", - "start_time": "2026-05-31T13:22:40.037788851Z" - }, "execution": { - "iopub.execute_input": "2026-05-31T13:29:01.664498Z", - "iopub.status.busy": "2026-05-31T13:29:01.664260Z", - "iopub.status.idle": "2026-05-31T13:29:01.669057Z", - "shell.execute_reply": "2026-05-31T13:29:01.668207Z" + "iopub.execute_input": "2026-05-31T13:42:50.949289Z", + "iopub.status.busy": "2026-05-31T13:42:50.948998Z", + "iopub.status.idle": "2026-05-31T13:42:50.953268Z", + "shell.execute_reply": "2026-05-31T13:42:50.952461Z" + }, + "ExecuteTime": { + "end_time": "2026-05-31T13:57:38.447434185Z", + "start_time": "2026-05-31T13:57:38.399226980Z" } }, - "outputs": [], "source": [ "# ── Config from context33.prj ──────────────────────────────────────────────\n", "SENSORY_SIZE = 40 # numVisibleX * numVisibleY = 1 * 40\n", @@ -71,148 +69,117 @@ "chars = sorted(ALLOWED)\n", "idx_to_char = {i: c for i, c in enumerate(chars)}\n", "char_to_idx = {c: i for i, c in enumerate(chars)}" - ] + ], + "outputs": [], + "execution_count": 2 }, { "cell_type": "code", - "execution_count": 3, "id": "c33-0003", "metadata": { - "ExecuteTime": { - "end_time": "2026-05-31T13:22:40.144967589Z", - "start_time": "2026-05-31T13:22:40.086400874Z" - }, "execution": { - "iopub.execute_input": "2026-05-31T13:29:01.670536Z", - "iopub.status.busy": "2026-05-31T13:29:01.670381Z", - "iopub.status.idle": "2026-05-31T13:29:01.674395Z", - "shell.execute_reply": "2026-05-31T13:29:01.673713Z" + "iopub.execute_input": "2026-05-31T13:42:50.955004Z", + "iopub.status.busy": "2026-05-31T13:42:50.954814Z", + "iopub.status.idle": "2026-05-31T13:42:50.959397Z", + "shell.execute_reply": "2026-05-31T13:42:50.958632Z" + }, + "ExecuteTime": { + "end_time": "2026-05-31T13:57:38.505581964Z", + "start_time": "2026-05-31T13:57:38.448366492Z" } }, + "source": "# ── Training sentence ──────────────────────────────────────────────────────\nSENTENCE = (\n \"Call me Ishmael. Some years ago, never mind how long precisely, \"\n \"having little money in my pocket and nothing particular to interest \"\n \"me on shore, I thought I would sail about a little.\"\n)\n\n# Convert to uppercase, keep only in-vocab characters\nSENTENCE = ''.join(c for c in SENTENCE.upper() if c in ALLOWED)\nN_SAMPLES = len(SENTENCE)\n\nsensory_np = np_cpu.zeros((N_SAMPLES, SENSORY_SIZE), dtype=np_cpu.float64)\nfor i, c in enumerate(SENTENCE):\n sensory_np[i, char_to_idx[c]] = 1.0\n\ndecoded = SENTENCE\nprint(f\"Sentence : '{decoded}'\")\nprint(f\"Length : {N_SAMPLES} chars\")", "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Sentence : 'MOBY DICK IS A WHALE' (20 chars)\n", - "Vocab : ' !.0123456789?ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n" + "Sentence : 'CALL ME ISHMAEL. SOME YEARS AGO NEVER MIND HOW LONG PRECISELY HAVING LITTLE MONEY IN MY POCKET AND NOTHING PARTICULAR TO INTEREST ME ON SHORE I THOUGHT I WOULD SAIL ABOUT A LITTLE.'\n", + "Length : 180 chars\n" ] } ], - "source": [ - "# ── Training sentence ──────────────────────────────────────────────────────\n", - "SENTENCE = \"MOBY DICK IS A WHALE\" # exactly 20 chars, all in vocab\n", - "N_SAMPLES = len(SENTENCE)\n", - "\n", - "sensory_np = np_cpu.zeros((N_SAMPLES, SENSORY_SIZE), dtype=np_cpu.float64)\n", - "for i, c in enumerate(SENTENCE):\n", - " sensory_np[i, char_to_idx[c]] = 1.0\n", - "\n", - "decoded = SENTENCE\n", - "print(f\"Sentence : '{decoded}' ({N_SAMPLES} chars)\")\n", - "print(f\"Vocab : {repr(''.join(chars))}\")" - ] + "execution_count": 3 }, { "cell_type": "code", - "execution_count": 4, "id": "c33-0004", "metadata": { - "ExecuteTime": { - "end_time": "2026-05-31T13:22:40.520281036Z", - "start_time": "2026-05-31T13:22:40.145738296Z" - }, "execution": { - "iopub.execute_input": "2026-05-31T13:29:01.675959Z", - "iopub.status.busy": "2026-05-31T13:29:01.675735Z", - "iopub.status.idle": "2026-05-31T13:29:01.924860Z", - "shell.execute_reply": "2026-05-31T13:29:01.923856Z" + "iopub.execute_input": "2026-05-31T13:42:50.961020Z", + "iopub.status.busy": "2026-05-31T13:42:50.960862Z", + "iopub.status.idle": "2026-05-31T13:42:51.208274Z", + "shell.execute_reply": "2026-05-31T13:42:51.207444Z" + }, + "ExecuteTime": { + "end_time": "2026-05-31T13:57:38.858778350Z", + "start_time": "2026-05-31T13:57:38.506823556Z" } }, + "source": "# ── Visualise one-hot encoding ─────────────────────────────────────────────\nstep = max(1, N_SAMPLES // 40) # show at most 40 tick labels\ntick_pos = range(0, N_SAMPLES, step)\n\nplt.figure(figsize=(16, 3))\nplt.imshow(sensory_np.T, aspect='auto', cmap='Blues', vmin=0, vmax=1)\nplt.colorbar(label='activation')\nplt.xlabel('Position')\nplt.ylabel('Vocab index')\nplt.title(f'One-hot encoding ({N_SAMPLES} chars)')\nplt.xticks(tick_pos, [decoded[i] for i in tick_pos], fontsize=8)\nplt.tight_layout()\nplt.show()", "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABOUAAAEiCAYAAAC2imYsAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAXGhJREFUeJzt3XdcleX/x/H3OSCgMl3gQMCRoxylaWgOFEMzR1m5cqDl18JJfUtb2NS0/FFqmuWqXJVlfkvtayiapuZOc5TbUnALooLC/fvDOF9PHA8cBI7A6+njfuS5ruu+7s99VvDxGibDMAwBAAAAAAAAKDBmZwcAAAAAAAAAFDck5QAAAAAAAIACRlIOAAAAAAAAKGAk5QAAAAAAAIACRlIOAAAAAAAAKGAk5QAAAAAAAIACRlIOAAAAAAAAKGAk5QAAAAAAAIACRlIOAAAAAAAAKGAk5QAARVpwcLAeeughZ4dR6IwZM0Ymk8mqLDg4WP3793dOQAAAAEARQ1IOAJAnfvvtNz3xxBOqXLmy3N3dValSJfXu3Vu//fabs0PLU8ePH9eYMWO0fft2Z4dS7MXHx8tkMunw4cM6fPiwTCaT4uPjLfWZiUWz2axjx45lOT8pKUklS5aUyWTSkCFDstSfOXNG//73v1WrVi15eHioTJkyioiI0HfffZelbeb1bzy8vb3VsGFDTZ48Wenp6Tp//rwqVqyo5s2byzCMLH1s2LBBZrNZ//73v7O958zD3d1d/v7+at26td5++22dOnUqyzmzZ8+WyWTS5s2bs9Rt375dTzzxhAIDA+Xu7q4yZcooPDxcs2bNUnp6uqXdzZ6jt99+WyaTSQMGDFBGRsZN47aVHL948aJiYmJ01113qXTp0ipbtqwaNmyo4cOH6/jx4zft65+WLl0qk8mkSpUq2Y3hRs8884zMZrPOnj1rVX727FmZzWa5u7vrypUrVnUHDx6UyWTSiy++KOl/r/m7775r8xqZ77/Tp0/brH/88cdlMpn0wgsv2KzPfK2/+uoru/fyz/fdjcfgwYMt7fr376/WrVtbYgsODrbbLwAAyH+uzg4AAFD4ff311+rZs6fKlCmjgQMHKiQkRIcPH9aMGTP01VdfacGCBXr44YedHWaeOH78uF577TUFBwerYcOGzg6nQO3bt09mc+H79zx3d3fNnz9fzz//vFX5119/fdNz9u3bp7Zt2+rUqVOKjIxU48aNdf78ec2dO1edOnXSc889pwkTJmQ5r2fPnnrwwQclSRcuXNDSpUs1dOhQHTlyRBMmTFBsbKx69Oihjz/+WIMGDbKcd+3aNQ0ePFhBQUF67bXXsr2nYcOG6d5771V6erpOnTqln3/+WTExMZo4caK++OILtWnTJts+PvnkEw0ePFj+/v7q06ePatasqeTkZMXFxWngwIE6ceKEJQFly7hx4/TSSy+pX79++uSTTxx6b1y9elUtW7bU3r171a9fPw0dOlQXL17Ub7/9pnnz5unhhx9WpUqVctTX3LlzFRwcrMOHD2vlypUKDw/P9pz7779fU6dO1bp169SpUydL+c8//yyz2ayrV69q8+bNuv/++y1169ats5x7q5KSkvSf//xHwcHBmj9/vsaNG5dlZKoj2rVrp759+2Ypv+OOO24lTAAAkM9IygEAbsmBAwfUp08fVatWTWvWrFH58uUtdcOHD1eLFi3Up08f/frrr6pWrZoTI8Wtcnd3d3YIufLggw/aTMrNmzdPHTt21KJFi6zKr169qkcffVTnzp3TmjVr1LRpU0vdyJEj1bt3b7377rtq3LixunfvbnXuPffcoyeeeMLy+JlnnlHTpk01b948TZgwQd27d9ecOXM0atQodenSRf7+/pKk999/Xzt27NDSpUtVqlSpbO+pRYsWevTRR63KduzYoQceeEDdunXT7t27VbFixZuev2HDBg0ePFihoaFaunSpvLy8LHUjRozQ5s2btWvXrpueP2HCBI0ePVp9+/bVzJkzHU7WLl68WNu2bdPcuXPVq1cvq7orV64oLS0tR/2kpKTo22+/1dixYzVr1izNnTs3x0k5SVq7dq1VUm7dunWqX7++Ll++rLVr11ol4NauXSuz2axmzZrlKDZ7Fi1apPT0dM2cOVNt2rTRmjVr1KpVq1z3d8cdd1i97wAAQOFQ+P65GwBwW5kwYYIuXbqk6dOnWyXkJKlcuXL66KOPlJKSovHjx1vKM6d17d+/X/3795evr698fHwUGRmpS5cuZbnG559/rkaNGqlkyZIqU6aMevToYXM6oj1r165VkyZN5OHhoWrVqunTTz/N0ubgwYN67LHHVKZMGZUqVUr33Xefvv/+e0t9fHy87r33XklSZGSkZYrY7Nmz7V77r7/+0oABA+Tv7y93d3fdeeedmjlzplWbzKlqX3zxhd566y1VqVJFHh4eatu2rfbv35+lz40bN+rBBx+Un5+fSpcurfr16+v999+3arNy5Uq1aNFCpUuXlq+vr7p06aI9e/bYfG7uvfdeeXh4qHr16vroo49s3sc/15TLnBa5bt06RUdHq3z58ipdurQefvjhLNMoMzIyNGbMGFWqVEmlSpVSWFiYdu/ebXOdugMHDujAgQP2nlKH9OrVS9u3b9fevXstZQkJCVq5cmWWhJB0PWGya9cujRo1yiohJ0kuLi766KOP5OvrqzFjxmR7bZPJJH9/f7m6/u/fQT/88EOlpqYqOjpaknTs2DGNGTNG3bt3V4cOHXJ5l1KDBg0UGxur8+fPa/LkyXbbvvbaazKZTJo7d65VQi5T48aNb7p+4MSJE/X888/riSee0KxZs3I1ejLz9W3evHmWOg8PD3l7e+eon2+++UaXL1/WY489ph49eujrr7/OMu3UlqpVqyowMNAy+i3TunXr1Lx5czVr1sxm3Z133ilfX98cxWbP3Llz1a5dO4WFhalOnTqaO3fuLfcJAAAKH5JyAIBbkjkFq0WLFjbrW7ZsqeDgYKvkVqbHH39cycnJGjt2rB5//HHNnj07y9S9t956S3379lXNmjU1ceJEjRgxQnFxcWrZsqXOnz+foxj379+vRx99VO3atdN7770nPz8/9e/f32q9u8TERDVr1kw//PCDnnnmGb311lu6cuWKOnfurG+++UaSVKdOHb3++uuSpEGDBumzzz7TZ599ppYtW9702omJibrvvvv0448/asiQIXr//fdVo0YNDRw4ULGxsVnajxs3Tt98842ee+45jR49Whs2bFDv3r2t2qxYsUItW7bU7t27NXz4cL333nsKCwuzWuvsxx9/VEREhE6ePKkxY8YoOjpaP//8s5o3b67Dhw9b2u3cuVMPPPCApV1kZKRiYmIs95wTQ4cO1Y4dOxQTE6Onn35a//nPf7KsPzZ69Gi99tpraty4sSZMmKCaNWsqIiJCKSkpWfpr27at2rZtm+PrZ6dly5aqUqWK5s2bZylbuHChPD091bFjxyzt//Of/0iSzemAkuTj46MuXbpo7969WRKmly5d0unTp3X69GkdPHhQU6ZM0fLly9WvXz9Lm+DgYL322muaN2+eVqxYoWHDhsnV1dXm+8FRjz76qEqWLKn//ve/N21z6dIly2eoatWqDvX//vvv69lnn1WvXr00e/bsXE9nDgoKkiR9+umnNtfXy6m5c+cqLCxMAQEB6tGjh5KTky2vX3buv/9+bd68WampqZKktLQ0bdq0Sc2aNVOzZs30888/W2I7d+6cdu/ebXPq6o2v+Y2HrX9gkK5PgV+1apV69uwp6fqU56+++irHowNtuXLlis0YbqVPAABQAAwAAHLp/PnzhiSjS5cudtt17tzZkGQkJSUZhmEYMTExhiRjwIABVu0efvhho2zZspbHhw8fNlxcXIy33nrLqt3OnTsNV1fXLOW2BAUFGZKMNWvWWMpOnjxpuLu7G88++6ylbMSIEYYk46effrKUJScnGyEhIUZwcLCRnp5uGIZhbNq0yZBkzJo1K9trG4ZhDBw40KhYsaJx+vRpq/IePXoYPj4+xqVLlwzDMIxVq1YZkow6deoYqamplnbvv/++IcnYuXOnYRiGce3aNSMkJMQICgoyzp07Z9VnRkaG5e8NGzY0KlSoYJw5c8ZStmPHDsNsNht9+/a1lHXt2tXw8PAwjhw5YinbvXu34eLiYvzzx4SgoCCjX79+lsezZs0yJBnh4eFW1x45cqTh4uJinD9/3jAMw0hISDBcXV2Nrl27WvU3ZswYQ5JVn5nXCQoKMm5V5vvs1KlTxnPPPWfUqFHDUnfvvfcakZGRhmEYhiQjKirKUtewYUPDx8fHbt8TJ040JBlLliwxDMMwDh06ZEiyeTz99NNWz49hGMbVq1eNhg0bGmXKlDEkGR999FGO7inzffLll1/etE2DBg0MPz8/y+PM12nTpk2GYVx/H0gyhg8fnqNrGsb15yjzs9SzZ0/j2rVrOT7XMK6/ph07drQ8vnTpklGrVi1Lv/379zdmzJhhJCYm5rjPxMREw9XV1fj4448tZc2aNcv2+yjTlClTrD7z69evNyQZR44cMXbv3m1IMn777TfDMAzju+++MyQZc+fOtZxv7zW/8Th16pTVdd99912jZMmSlu/D33//3ZBkfPPNN1btcvJaG4Zh99rz58/P0XMBAACcg5FyAIBcS05OliSb099ulFmflJRkVX7jzoDS9XWyzpw5Y2n39ddfKyMjQ48//rjV6I+AgADVrFlTq1atylGcdevWtRrJV758edWqVUsHDx60lC1dulRNmjSxGgnj6empQYMG6fDhw9q9e3eOrnUjwzC0aNEiderUSYZhWN1DRESELly4oK1bt1qdExkZKTc3N6vnRJIl1m3btunQoUMaMWJElml0mQvFnzhxQtu3b1f//v1VpkwZS339+vXVrl07LV26VJKUnp6uH374QV27drUaMVWnTh1FRETk+D4HDRpktUh9ixYtlJ6eriNHjkiS4uLidO3aNT3zzDNW5w0dOtRmf5m7qealXr16af/+/dq0aZPlv7amrkrX39e5fU8PGjRIK1as0IoVK7Ro0SJFRUXpo48+skxVzeTq6qrp06fr7Nmzuu+++/TUU0/dwt1Z8/T0tHw2bcmMObt7/KfExERJUkhIiFxcXHIfoKSSJUtq48aNlp1mZ8+erYEDB6pixYoaOnSoZfSaPQsWLJDZbFa3bt0sZT179tSyZct07ty5bM+/cV056fr01MqVK6tq1aqqXbu2ypQpY5nCam+Thxtf8xuPPn362Lzu3Llz1bFjR8vzX7NmTTVq1OiWprB26dLFZgxhYWG57hMAAOQ/NnoAAORa5i+V9hIAN9b/Mwnwz6lzfn5+kq5PFfP29tYff/whwzBUs2ZNm/2WKFFCknTx4kVdvHjRUu7i4mK1vp2tKXp+fn5Wv7gfOXIky/ph0vUEVWb9XXfddfObtOHUqVM6f/68pk+frunTp9tsc/LkSavH9p4T6X9rcdmLJTMZVqtWrSx1derU0Q8//KCUlBQlJyfr8uXLNp/fWrVqWZJ32cku5sx4atSoYdWuTJkylrb57e6771bt2rU1b948+fr6KiAg4KY7lHp5een06dN2+7vZe7pmzZpWGw088sgjMplMio2N1YABA1SvXj1LXeb6hI0aNbqlnTf/6eLFi3YTbpnrtWX3uf2nfv366fjx43r77bdVrlw5jRw58pbi9PHx0fjx4zV+/HgdOXJEcXFxevfddzV58mT5+PjozTfftHv+559/riZNmujMmTM6c+aMpOuvc1pamr788kur3W1tueuuu+Tr62uVeMtc485kMik0NFTr1q3TU089pXXr1ikwMNDmd8k/X/NMmcm+G+3Zs0fbtm1T3759raY+t27dWlOmTFFSUlKO19O7UZUqVXK0wQUAALi9kJQDAOSaj4+PKlasqF9//dVuu19//VWVK1fO8svmzUbbGH+v45SRkSGTyaRly5bZbOvp6SlJevfdd63WogsKCrIaaZXddfJLRkaGJOmJJ56wWlPsRvXr17d67KxYb0VhiblXr16aOnWqvLy81L1795uuh1anTh1t375dR48evemaa5nv+bp162Z73bZt22ry5Mlas2aNVVIuP1y9elW///673aRtjRo15Orqqp07dzrUt6urq7744gu1b99ezz77rHx9fRUZGXmrIUu6/pkdMGCAHn74YVWrVk1z5861m5T7448/tGnTJkmymVSeO3dutkk5s9ms0NBQy9px69at04svvmipb9asmWbOnGlZa65r1665u7kbfP7555Ku7+JrK6m5aNGiPHtOAQDA7Y+kHADgljz00EP6+OOPtXbtWptTu3766ScdPnxY//rXvxzuu3r16jIMQyEhIbrjjjtu2q5v375W1y5ZsqTD1woKCtK+ffuylGfu2Jm5ML0jI5rKly8vLy8vpaen59kolurVq0uSdu3addM+M2O92f2UK1dOpUuXloeHh0qWLKk//vgjSztb5+ZWZjz79+9XSEiIpfzMmTM5mmaYV3r16qVXX31VJ06c0GeffXbTdg899JDmz5+vTz/9VC+//HKW+qSkJH377beqXbt2ltF/tly7dk2SrEZz5pevvvpKly9ftjv9uFSpUmrTpo1WrlypY8eOKTAwMMf9e3h4aMmSJQoLC9NTTz0lX19fPfzww3kRuqTroyyrV6+uXbt22W03d+5clShRQp999lmWpPDatWv1wQcf2E2qZrr//vu1bNkyLVmyRCdPnrTaDbZZs2Z66aWXtHTpUl2+fNnm95sjDMPQvHnzFBYWlmUqtyS98cYbmjt3Lkk5AACKEdaUAwDckn//+98qWbKk/vWvf1mmkGU6e/asBg8erFKlSlnWjnLEI488IhcXF7322mtZRl0ZhmG5XrVq1RQeHm45bvzFOqcefPBB/fLLL1q/fr2lLCUlRdOnT1dwcLBlRFTp0qUlKUc7v7q4uKhbt25atGiRzSTDqVOnHI7znnvuUUhIiGJjY7PEkPkcVaxYUQ0bNtScOXOs2uzatUv//e9/9eCDD1rii4iI0OLFi3X06FFLuz179uiHH35wOLabadu2rVxdXTV16lSr8smTJ9tsf+DAAcs03bxUvXp1xcbGauzYsWrSpMlN2z366KOqW7euxo0bp82bN1vVZWRk6Omnn9a5c+cUExOTo+tm7gbaoEGD3AefAzt27NCIESPk5+enqKgou21j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3S6CgoIkSZcuXdLRo0eVlpZmVV+/fn2H+8xRUu7//u//5OXlJUmKjY11+CIAAAAAAAAonkwm+xs9FIKcnE6dOqXIyEgtW7bMZn16errDfeYoKdevXz+bfwcAAAAAAADsMZtNMttZN85e3e1ixIgROn/+vDZu3KjWrVvrm2++UWJiot5880299957ueqTNeUAAAAAAACQb4rC9NWVK1fq22+/VePGjWU2mxUUFKR27drJ29tbY8eOVceOHR3uM+9Wp8uFsWPH6t5775WXl5cqVKigrl27at++fVZtrly5oqioKJUtW1aenp7q1q2bEhMTnRQxAAAAAAAAHJE5fdXecbtLSUlRhQoVJEl+fn46deqUJKlevXraunVrrvp0alJu9erVioqK0oYNG7RixQpdvXpVDzzwgFJSUixtRo4cqf/85z/68ssvtXr1ah0/flyPPPKIE6MGAAAAAABATplMpmyP212tWrUsA8kaNGigjz76SH/99ZemTZumihUr5qpPp05fXb58udXj2bNnq0KFCtqyZYtatmypCxcuaMaMGZo3b57atGkjSZo1a5bq1KmjDRs26L777nNG2AAAAAAAAMghF5NJLnYSb/bqbhfDhw/XiRMnJEkxMTFq37695s6dKzc3N82ePTtXfd5SUu7YsWOSpMDAwFvpxuLChQuSpDJlykiStmzZoqtXryo8PNzSpnbt2qpatarWr19vMymXmpqq1NRUy+OkpKQ8iQ0AAAAAAACOM5kke3s5FIKcnJ544gnL3xs1aqQjR45o7969qlq1qsqVK5erPh2evnrt2jW98sor8vHxUXBwsIKDg+Xj46OXX35ZV69ezVUQkpSRkaERI0aoefPmuuuuuyRJCQkJcnNzk6+vr1Vbf39/JSQk2Oxn7Nix8vHxsRx5lTAEAAAAAACA48ym7I/b3dq1a60elypVSvfcc0+uE3JSLpJyQ4cO1fTp0zV+/Hht27ZN27Zt0/jx4zVjxgwNGzYs14FERUVp165dWrBgQa77kKTRo0frwoULliNzNB8AAAAAAAAKXlFYU65NmzYKCQnRiy++qN27d+dJnw5PX503b54WLFigDh06WMrq16+vwMBA9ezZU1OnTnU4iCFDhui7777TmjVrVKVKFUt5QECA0tLSdP78eavRcomJiQoICLDZl7u7u9zd3R2OAQAAAAAAAHnPxXz9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Qc8884wlIZcpICBAvXv31sKFC2UYhpMizBsXL17U559/rho1aqhs2bLODifX+vXrp7Zt22rAgAGaPHmydu3aZTVyDrenNm3aqEGDBvr666+dHQp0/Xtv+fLlioqKskrIZfL19S34oPLQCy+8oDfeeEPfffcdCTnkO09PT3l6emrx4sVKTU11djiw44svvlDt2rVVq1YtPfHEE5o5c2ah//muqAgLC9OqVassj1etWqXWrVurVatWlvLLly9r48aNJOVuA3yWANwKknJ54IknntDatWt15MgRHTlyROvWrdMTTzzh7LBy5Y8//pBhGKpTp47N+jp16ujcuXM6depUAUd267777jvLLwteXl5asmSJFi5cKLO5cH8Mpk+frl27dmnEiBGaPn16oRz1VxzVrl1bhw8fdnYYkLR//34ZhqHatWs7O5Q8t2zZMo0fP17ffvut2rZt6+xwUAy4urpq9uzZmjNnjnx9fdW8eXO9+OKLhXYN16JsxowZlp9X27dvrwsXLmj16tVOjgrS9aTcunXrdO3aNSUnJ2vbtm1q1aqVWrZsqfj4eEnX1zBLTU0tdEm5G38ezzw6dOjg7LBuCZ+lwsPW++/tt992dlgo5gp3NuI2Ub58eXXs2FGzZ8/WrFmz1LFjR5UrV87ZYd2SovivO2FhYdq+fbu2b9+uX375RREREerQoYOOHDni7NBuSYUKFfSvf/1LderUKXILshZlhmHIZDI5OwyoaH7fZapfv76Cg4MVExOjixcvOjscFBPdunXT8ePHtWTJErVv317x8fG65557NHv2bGeHhr/t27dPv/zyi3r27CnpejK1e/fumjFjhpMjgyS1bt1aKSkp2rRpk3766SfdcccdKl++vFq1amVZVy4+Pl7VqlUrdGtY3/jzeObxySefODusXOOzVLjYev/Z2rQRKEisKZdHBgwYoCFDhkiSpkyZ4uRocq9GjRoymUzas2ePzWlOe/bskZ+fX6EcjVW6dGnVqFHD8viTTz6Rj4+PPv74Y7355ptOjOzWubq6ytWVj3NhsmfPnkK77mRRU7NmTZlMJu3du9fZoeS5ypUr66uvvlJYWJjat2+vZcuWycvLy9lhoRjw8PBQu3bt1K5dO73yyit68sknFRMTU2h3pS9qZsyYoWvXrqlSpUqWMsMw5O7ursmTJ8vHx8eJ0aFGjRqqUqWKVq1a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", "text/plain": [ - "
" - ] + "
" + ], + "image/png": "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6tSpY5uNLklNmza1Hc9JTEyMpKvPWX545JFHVKJECT366KN2y2DkdRmXTMYY/fTTT/rpp5/08ssva+jQoRo7dqxat25t99oKCwvT5cuX9Z///Cdf4gcAAEDBwLIVAADA7d555x1dvHhRn3zySZZE4PXXX6+PP/5YFy5c0DvvvOP0tRcuXKiMjAyNGDEi2+OZ/cXGxmrVqlW2sm7dOqf7+uGHH9S0aVPdddddtrpSpUqpT58+io2N1a5duyRdXQdZksqUKZPrNa9cuaIFCxaoU6dOuvXWW7Mcd2UN2S1btigmJkaDBg3KsjxBphMnTmjr1q3q3r27XZtbb71VDzzwgH744QdbfMuXL1eHDh1044032trVrl1bDz74oNOx5WTVqlVKT0/XP//5T7v6/v37X9N1o6OjVa9ePQUEBLh0/v79+3X58mU9+eSTdvVVqlRRy5YttXXrVlvd4sWLlZaWpsjISLu2ffv21dGjRx2+5hITE/XLL7+oV69eduPsqsyZyX+d2R0cHKyePXvm+RrZzdjOTID/fXmOxo0ba+fOnUpKSnIhWgAAABRUzDwGAABut3//fnXv3l2zZ8/Wjh07NH36dMXGxuqmm25S7969Vb58eXXt2tU2+9IZMTExGj58uMaPH6+bbrpJixYtUnJyssLCwtSxY0dNmzZN7777br7cx/jx49W1a1ctXbpU77//vk6fPq3u3bsrLCxMnTp1ss04PnDggM6cOaO+ffsqOTlZFy5c0Pr16+1m1P7VkCFD1Lp1a61fv16ffvqpdu3apbJly6pRo0a67777VK5cOafiNMbon//8p5YsWaJt27YpKipKx48fV+3atXXrrbeqTZs2kqTBgwdr6dKlio6O1vTp01WyZEkNGDBA586ds1viY8SIEWrTpo3Wrl2rDz/8UP7+/howYIB27typ+vXruzSWf5eQkKD33ntPr7zyihYvXqxly5apfv36euihh3Ty5EmX19JdvHix3nzzTYWHh2vFihV2x/r166cyZcqocuXKkq7O1r3hhhskXd2oLykpSYmJifr888/13HPPadWqVVq4cKGCgoIUGRmpkiVL2tYQlqS4uDhNnjxZr776qooVK6aNGzeqQ4cOuueee9StWze7ZR6y88ILL+jXX3/Vli1bNG3aNNt7pF27dmrYsKFT9/3jjz8qNTVVS5Ys0SeffKLrrrtO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fHguAd/GdwEABQGfRQAKGovFIouDDLGjYwXF3r17VatWLR06dEjbt2/X888/r4MHD6pv3746fvy4S9f0avL474s39+jRQydPnlTjxo21du1aBQcHq3fv3urWrZt+/vlnSVLPnj21Z88eNW3aVOvXr/dG2AAAAAAAAACKED+LRX4OEsSOjhUU7733nipVqiRJGjlypJYtW6annnpKaWlp6tGjh0vXvKbk8Q033CBJOnr06LVcxqZ06dKSpNOnT0uSGjdurICAAK1cudLWZu/evTp06JCaNWuWbfI4ICBAxYsXtz0OCgrKl9gAAAAAAAAAFE0Wi2Qt5BvmzZ492/bzli1bVK1aNdWuXVuHDx/WqVOnXLqm02se+/n5adSoUTp79qwOHjyogwcP6uzZsxo9erT8/V3PRVssFk2ePFm//vqrdu7cKUkKDQ1Vamqqzp07Z9c2Pj5eoaGh2V5n6NChSkpKspW4uDiXYwIAAAAAAABQ9FktuZeCrkWLFnaPL126pK1bt7qcOJZcSB5/8MEH6tOnj1599VU1bNhQDRs21KuvvqrevXvr/fffdzmQqVOnql69eurSpYvL15CkcePGKTg42FaqVKlyTdcDAAAAAAAAULRlrnnsqBR0P/30k2JiYvT222+rTp06+XJNp6cKd+vWTV26dNGyZctsdTt27NCRI0c0Z84cRUZGOh3EBx98oIcfflj33HOP3UzhEydOqHjx4ipdurTd7OOQkBCdOHEi22ulpaUpLS3N6RgAAAAAAAAA+CY/69Xi6HhBV7lyZXXp0kVdu3bVkCFD9Mcff2j27NmaM2eOy6szWCQZZ06Ij49XeHi49uzZY1dfu3ZtrVmzRhUrVnQqgA8++EAdO3ZUq1attH//frtjwcHBOnnypLp27aqFCxdKkm655Rbt3btXd911V542zAsKClJSUpJSMpwKq0jLaVdbdrQF3IsdpcFrAIAr+OwACpei+p715H0V1TEEPKWE/9WcWnJysrdDKRQyc4cjftyv1IwrObYr7m/VyAdqFpqxvemmm9StWzd17drVlreNiIhw+jpO58ynTJmiN954QwEBAba6gIAAvf7665oyxbkP8alTp+rpp59Wt27dlJycrJCQEIWEhKhEiRKSpKSkJE2fPl0TJ05Uq1at1KhRI0VFRWndunV5ShwDAAAAAAAAQG6seSiFycGDBzV+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uHFjBQQEaOXKlbY2e/fu1aFDh9SsWbMcrxMQEKCgoCC7AgAAAAAAAAA5seThP1/k9eRxvXr1lJycrNTUVH388cfq2LGjdu/erdDQUKWmpurcuXN27ePj4xUaGprj9YYOHaqkpCRbiYuLc/ctAAAAAAAAACjMLP/bNC+74qO5Y+8nj/fu3asGDRqoadOm+uijjzRz5kzVqVPH5euNGzdOwcHBtlKlSpV8jBYAAAAAAABAUcOGednz93YA6enpOnDggCRpy5YtatKkiQYOHKh58+apePHiKl26tN3s45CQEJ04cSLH66WlpSktLc3tcQMAAAAAAAAoInLLDvto9tjryeO/s1qtKl68uDZv3qy0tDRFRERo4cKFkqRbbrlF1apVU3R0tJejBPLX9U3653jszMYpHoyk4GOsig6eSwAo+gr7Z31O8ReG2F3li/dcEBT29woAFAVWi+PssNVHk8deXbZi7NixatmypapVq6Z69epp7NixatWqlWbPnq2kpCRNnz5dEydOVKtWrdSoUSNFRUVp3bp1Wr9+vTfDBgAAAAAAAFCEuGvZisjISMXGxurSpUv6/fff1aRJkxzb/uMf/9CaNWt0+vRpnT59WitWrHDY3hO8mjyuWLGivvjiC+3du1erVq1SkyZN9OCDD2rlypWSpBdffFHfffedFixYoDVr1ujEiRN67LHHvBkyAAAAAAAAgKLGDdnjzp07a+LEiRo5cqQaNWqk7du3a/ny5apQoUK27Vu1aqU5c+aodevWatasmY4cOaIff/xRlStXdvGmrp1Xl634xz/+4fB4amqq+vfvr/79c/4nPAAAAAAAAABwLSyyOMwPuzLz+KWXXtKnn36qGTNmSJL69u2rdu3aqVevXpowYUKW9k8//bTd43/84x/q1KmTIiIiNGvWLBciuHZenXkMAAAAAAAAAN5mteReJCkoKMiuBAQEZHu9YsWKqXHjxrYVFiTJGKOVK1eqWbNmeYqpVKlSKlasmE6fPn3N9+eqArdhHvJHUd1woajel6PYi+o9u8oX77mo8uRzyfsIALyjsH/GFvb4XeHKPfvi79n8vueiOk5wPza5BPJRblOL/3s8Li7Orvqtt97SyJEjszQvX768/P39FR8fb1cfHx+v2rVr5ymkCRMm6NixY3YJaE8jeQwAAAAAAADAp+V12YoqVaooOTnZVp+amuqW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mUWLFrkt0VRUx84bY+ipvmJjY82zzz5rjhw5YkqWLGkkzySPJZnff//dPP7444X6vmrWrGkuXLhgypYta1f/0EMPmUOHDhXavnJ6ztavX286derklr5y6tMd5cEHHzR//vmnqVmzpjl69Kjb/jLS39/fxMfH2yXopk6dat555x233p+niqeSx5GRkea7774zkkxwcLDZt2+fGTVqVL4njz352vBG8eT72ZPJ46L2We/J+/pr8cT3Dk9/r/fk9w5PlqKYiPR0qV+/vjlx4oS57rrreM5cKDVr1jTnz583119/vcefu6KWPPb0a9ETheQxhVKwik8sW9GoUSPt27dPp06d8nYohVqdOnV04403avny5Zo+fbp69+7t7ZDyzbx58+z+CViJEiXc0o8nx9DTz9f27dv1888/68UXX3RrP39Vq1YtlStXTqtXr3ZbH564r4YNG2rfvn06ffq0XX10dLSqVq2q8uXLF8q+slOvXj3Vrl1b27dvd2s/nrB8+XKtXbtWGzdu1KhRoxQbG+uWfjIyMjRr1iz16tVLklS8eHF17dpV06dPd0t/RdVvv/2mm266SZUqVVLXrl311Vdf6fLly27py1OvDW/zxPvZU7+fi9pnfSZP/m721PcOb36v98T3Dk/y1PurqPrjjz/066+/6tChQ1q4cKFeeeUVVa5c2a19FqXnrGHDhtq/f7/OnDnj7VAKPW+8FgH4Fp9IHiN/9O7dW1988YWuXLmiH374QWFhYapdu7a3w8oXTz75pBo2bGgrKSkpbunHk2PojefrjTfe0MCBA1W2bFm39jNv3jzt2rVLu3bt0gcffKDExES39uep+yrKMv+w88knn6hXr17av3+/t0PKF++8846sVqumTZvm1n6mT5+up556SsWKFdNjjz2m3bt3a8+ePW7tsyiaNWuWevTooV69eunzzz93a1+eem14gyffz576/SwV3c96T91XUf6e6OnvHZ7iyfdXUWSM0eOPP67mzZtr2bJlatGihXbu3KkaNWq4rc+i/JxVr17dtra4u39He4sxxm3X9fRr0VvcNYYAHPOJ5PGWLVt08803F7k/DHiSv7+/nnnmGXXv3l2xsbHav3+/SpUqVaRmH7ubJ8fQW8/XoUOH9OWXX2r48OFu7efJJ59U3bp19cADD2j8+PFu3eBQcv99bd26NdvPqGbNmunw4cP5+odUT/b1V5l/2GnRooUWLFjglj684fLly7py5Yrb+9m9e7f279+vRx55RL169WLWsYu++OILvfDCC0pJSXH7X2B46rXhDUX1/VyUPuv/yhO/mz35vcMb3+s9/b0DhcvevXs1bdo0dezYUb///rseffRRb4dUKGzdulU1a9ZUmTJlJEkxMTFq2LChxo0bp+uvv967wV2jhIQElStXzq6ufPnySkhIcGu/Rem16K0xBJA9n0geHzhwQAsWLND06dPtdux87LHHFBYW5sXICo9HH31UMTExuuGGGxQWFqawsDDdddddeuaZZ+x2r0fOPDmG3ny+xowZo6efftoj/1Rq1apV+uijjzRmzBi39+XO+9q/f7+WLFmiadOmqWTJkpKkatWq6d1339Xo0aMLbV/IX9OnT9ewYcN05513at68ed4Op1A6fvy4hg4dqtdee83boaCAKiqf9X/n7t/Nnvze4c3v9Z783oGCr3LlymrevLntcZkyZRQWFqYDBw54MarCY//+/Vq8eHGW93JgYKAXo8ofy5cv1/PPP297/MwzzygmJkYnTpxwS39F8bXo6TEE4JhPJI8lqVevXtq+fbvWr1+vP//8U7t27dIDDzyQZd05ZK93796aPXu2Xd2ePXsUFxenRx55xEtR5Z+/rx/WqlWrfO/Dk2Pozefr1KlTev/99z22ztbo0aN19913q1GjRm7tx9339eyzzyomJkY7duzQrl279N133+mdd97RZ599Vqj7Qv6ZN2+eatWqpa+++koXLlzwdjiF1owZM/T77797OwzkkSd+P/9VUfqs/yt335env3d483u9p753eIKn319Fjb+/v958803t3btXW7du1dq1azVz5kx9++23buuzqD1nPXr00I4dO2zv5bVr1+q+++7ThAkTvB3aNRk0aJAqVaqk7du3a+vWrerWrZueeOIJt/Xnjdeiu3l6DAE4ZtHVnfMAAAAAAAAAALDxmZnHAAAAAAAAAIC8I3kMAAAAAAAAAMiC5DEAAAAAAAAAIAuSxwAAAAAAAACALEgeAwAAAAAAAACyIHkMAAAAAAAAAMiC5DEAAAAAAAAAIAuSxwAAAMg34eHhMsaodOnSDtvFxsZq4MCBHooKAAAAgCtIHgMAAPigqKgoGWNkjFFqaqr27dunN954Q35+ftd03XXr1ik0NFTnzp2TJHXv3l1nzpzJ0q5JkyaaNm3aNfUFAAAAwL38vR0AAAAAvGPp0qXq2bOnihcvrrZt22rq1KlKT0/X+PHjXb5menq64uPjc22XmJjoch8AAAAAPIOZxwAAAD4qNTVV8fHxOnz4sD7++GOtXLlSjz76qMqUKaOZM2fq9OnTunDhgn744QfVrFnTdl7VqlX17bff6vTp0zp//rz+/PNPPfTQQ5Lsl60IDw/XjBkzVKZMGdss5xEjRkjKumzFjTfeqEWLFik5OVnnzp3TvHnzVLFiRdvxESNGaOvWrXr66acVGxurs2fPas6cObruuus8NFoAAACA7yF5DAAAAEnSpUuXFBAQoBkzZuiOO+7Qo48+qmbNmsliseiHH36Qv//Vf7Q2depUFS9eXPfcc49uu+02vfbaazp//nyW661bt04DBw7UuXPnFBoaqtDQUP3rX//K0s5isWjx4sUqW7aswsPDdf/996t69eqaN2+eXbsaNWqoQ4cOevjhh/Xwww8rPDxcQ4YMcc9gAAAAAGDZCgAAAEgRERF68MEHtXTpUnXs2FHNmzdXdHS0JOmpp57SkSNH1KFDB3399deqWrWqFixYoD///FPS1VnE2UlPT9e5c+dkjHG4lEVERIRuu+02hYWF6ejRo5KkZ599Vrt27dIdd9yhTZs2SZKsVqt69OhhS1TPmjVLERERGj58eL6NAwAAAID/YeYxAACAj3r44YeVnJyslJQULV26VPPmzdOMGTOUnp6u9evX29qdPn1ae/fuVZ06dSRJ77//voYPH65ff/1Vb731lm677bZriqNOnTo6cuSILXEsSbt379aZM2dsfUrSwYMH7WY4Hz9+3G5pCwAAAAD5i+QxAACAj/r555/VoEED3XzzzSpZsqR69OghY0yu502fPl3Vq1fXrFmzdNttt2nTpk3q37+/2+NNT0+3e2yMkdXK11kAAADAXfi2DQAA4KMuXLigAwcO6MiRI7p8+bKkqzN+ixUrpqZNm9ralS1bVrVq1dKuXbtsdUePHtUnn3yiTp066d1339Vzzz2XbR9paWny8/NzGMfu3bt144036oYbbrDV1alTR9dff71dnwAAAAA8i+QxAAAAbPbv369Fixbp008/VYsWLXT77bfr3//+t+Li4rR48WJJ0qRJk/TAAw/opptuUsOGDdW6dWvt3r072+sdPHhQQUFBuvfee1WuXDmVLFkyS5uVK1dqx44dmj17tho2bKgmTZroiy++0OrVq7V582a33i8AAACAnJE8BgAAgJ2ePXtq8+bN+u677xQdHS2LxaK2bdsqIyNDkuTn56epU6dq9+7dWrZsmf7zn/8oMjIy22tFR0fro48+0rx585SYmKhXX30123bt27fXmTNntGbNGq1cuVIxMTF68skn3XaPAAAAAHJnkZT7wnYAAAAAAAAAAJ/CzGMAAAAAAAAAQBYkjwEAAAAAAAAAWZA8BgAAAAAAAABkQfIYAAAAAAAAAJAFyWMAAAAAAAAAQBYkjwEAAAAAAAAAWZA8BgAAAAAAAABkQfIYAAAAAAAAAJAFyWMAAAAAAAAAQBYkjwEAAAAAAAAAWZA8BgAAAAAAAABkQfIYAAAAAAAAAJDF/wPj7l1jjhTaQgAAAABJRU5ErkJggg==" }, "metadata": {}, - "output_type": "display_data" + "output_type": "display_data", + "jetTransient": { + "display_id": null + } } ], - "source": [ - "# ── Visualise one-hot encoding ─────────────────────────────────────────────\n", - "plt.figure(figsize=(14, 3))\n", - "plt.imshow(sensory_np.T, aspect='auto', cmap='Blues', vmin=0, vmax=1)\n", - "plt.colorbar(label='activation')\n", - "plt.xlabel('Position')\n", - "plt.ylabel('Vocab index')\n", - "plt.title(f'One-hot encoding: \"{decoded}\"')\n", - "plt.xticks(range(N_SAMPLES), list(decoded))\n", - "plt.tight_layout()\n", - "plt.show()" - ] + "execution_count": 4 }, { "cell_type": "code", - "execution_count": 5, "id": "c33-0005", "metadata": { - "ExecuteTime": { - "end_time": "2026-05-31T13:22:40.574951208Z", - "start_time": "2026-05-31T13:22:40.522104813Z" - }, "execution": { - "iopub.execute_input": "2026-05-31T13:29:01.926569Z", - "iopub.status.busy": "2026-05-31T13:29:01.926367Z", - "iopub.status.idle": "2026-05-31T13:29:01.929974Z", - "shell.execute_reply": "2026-05-31T13:29:01.929256Z" + "iopub.execute_input": "2026-05-31T13:42:51.209939Z", + "iopub.status.busy": "2026-05-31T13:42:51.209737Z", + "iopub.status.idle": "2026-05-31T13:42:51.213230Z", + "shell.execute_reply": "2026-05-31T13:42:51.212592Z" + }, + "ExecuteTime": { + "end_time": "2026-05-31T13:57:38.915386126Z", + "start_time": "2026-05-31T13:57:38.861262921Z" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "sequences shape : (1, 20, 40) → 1 sequence of 20 chars\n" - ] - } - ], "source": [ "# ── Prepare sequences for StackRnn ─────────────────────────────────────────\n", "sequences = sensory_np[np_cpu.newaxis, :, :] # (1, 20, 40)\n", "print(f\"sequences shape : {sequences.shape} → 1 sequence of {N_SAMPLES} chars\")" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "c33-0006", - "metadata": { - "ExecuteTime": { - "end_time": "2026-05-31T13:22:40.693389541Z", - "start_time": "2026-05-31T13:22:40.581860790Z" - }, - "execution": { - "iopub.execute_input": "2026-05-31T13:29:01.931570Z", - "iopub.status.busy": "2026-05-31T13:29:01.931406Z", - "iopub.status.idle": "2026-05-31T13:29:02.037412Z", - "shell.execute_reply": "2026-05-31T13:29:02.036520Z" - } - }, + ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Mode : shared\n", - "Visible : 128 (context) + 40 (sensory) = 168\n", - "Hidden : 128\n", - "Parameters : 21,504\n" + "sequences shape : (1, 180, 40) → 1 sequence of 180 chars\n" ] } ], + "execution_count": 5 + }, + { + "cell_type": "code", + "id": "c33-0006", + "metadata": { + "execution": { + "iopub.execute_input": "2026-05-31T13:42:51.215346Z", + "iopub.status.busy": "2026-05-31T13:42:51.215163Z", + "iopub.status.idle": "2026-05-31T13:42:51.319714Z", + "shell.execute_reply": "2026-05-31T13:42:51.319006Z" + }, + "ExecuteTime": { + "end_time": "2026-05-31T13:57:39.033277512Z", + "start_time": "2026-05-31T13:57:38.916167712Z" + } + }, "source": [ "# ── Build model ────────────────────────────────────────────────────────────\n", "rnn = StackRnn(PRJ_NAME, WORK_DIR)\n", @@ -244,136 +211,36 @@ "print(f\"Visible : {rnn.h_size()} (context) + {rnn.sensory_size()} (sensory) = {e.shape[0]}\")\n", "print(f\"Hidden : {rnn.h_size()}\")\n", "print(f\"Parameters : {e.shape[0] * e.shape[1]:,}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "c33-0007", - "metadata": { - "ExecuteTime": { - "end_time": "2026-05-31T13:23:41.130302008Z", - "start_time": "2026-05-31T13:22:40.695146047Z" - }, - "execution": { - "iopub.execute_input": "2026-05-31T13:29:02.039109Z", - "iopub.status.busy": "2026-05-31T13:29:02.038931Z", - "iopub.status.idle": "2026-05-31T13:30:46.898008Z", - "shell.execute_reply": "2026-05-31T13:30:46.897173Z" - } - }, + ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "-------------------------------------------\n", - "Entity-168x128: progress : 0%\n", - "Entity-168x128: err_rms : 0.006513810748197312\n", - "Entity-168x128: l2_norm : 0.16668707179363768\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "-------------------------------------------\n", - "Entity-168x128: progress : 10%\n", - "Entity-168x128: err_rms : 0.005327613080843449\n", - "Entity-168x128: l2_norm : 2.1248952398421848\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "-------------------------------------------\n", - "Entity-168x128: progress : 20%\n", - "Entity-168x128: err_rms : 0.0022508816936137495\n", - "Entity-168x128: l2_norm : 7.285520227496324\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "-------------------------------------------\n", - "Entity-168x128: progress : 30%\n", - "Entity-168x128: err_rms : 0.00023891875964096135\n", - "Entity-168x128: l2_norm : 11.942612143538451\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "-------------------------------------------\n", - "Entity-168x128: progress : 40%\n", - "Entity-168x128: err_rms : 0.0003654588775567404\n", - "Entity-168x128: l2_norm : 14.038897529481288\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "-------------------------------------------\n", - "Entity-168x128: progress : 50%\n", - "Entity-168x128: err_rms : 0.0005439847855184065\n", - "Entity-168x128: l2_norm : 15.413432769275325\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "-------------------------------------------\n", - "Entity-168x128: progress : 60%\n", - "Entity-168x128: err_rms : 4.005501369432108e-05\n", - "Entity-168x128: l2_norm : 16.458922493692164\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "-------------------------------------------\n", - "Entity-168x128: progress : 70%\n", - "Entity-168x128: err_rms : 1.826141900561072e-05\n", - "Entity-168x128: l2_norm : 17.16704910391379\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "-------------------------------------------\n", - "Entity-168x128: progress : 80%\n", - "Entity-168x128: err_rms : 1.072283482720063e-05\n", - "Entity-168x128: l2_norm : 17.9025294873916\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "-------------------------------------------\n", - "Entity-168x128: progress : 90%\n", - "Entity-168x128: err_rms : 1.808959411651762e-05\n", - "Entity-168x128: l2_norm : 18.510211685821016\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "-------------------------------------------\n", - "Entity-168x128: progress : 100%\n", - "Entity-168x128: err_rms : 1.8806019913429117e-05\n", - "Entity-168x128: l2_norm : 19.03956209476975\n" + "Mode : shared\n", + "Visible : 128 (context) + 40 (sensory) = 168\n", + "Hidden : 128\n", + "Parameters : 21,504\n" ] } ], + "execution_count": 6 + }, + { + "cell_type": "code", + "id": "c33-0007", + "metadata": { + "execution": { + "iopub.execute_input": "2026-05-31T13:42:51.321630Z", + "iopub.status.busy": "2026-05-31T13:42:51.321423Z", + "iopub.status.idle": "2026-05-31T13:44:35.697232Z", + "shell.execute_reply": "2026-05-31T13:44:35.696410Z" + }, + "ExecuteTime": { + "end_time": "2026-05-31T14:13:33.465818984Z", + "start_time": "2026-05-31T13:57:39.034495646Z" + } + }, "source": [ "# ── Train: predict next character from current context ─────────────────────\n", "# Pairs used: (h_t, x_{t+1})\n", @@ -421,35 +288,76 @@ " break\n", "\n", "rnn.state_save()" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "c33-0008", - "metadata": { - "ExecuteTime": { - "end_time": "2026-05-31T13:23:41.188793248Z", - "start_time": "2026-05-31T13:23:41.131570611Z" - }, - "execution": { - "iopub.execute_input": "2026-05-31T13:30:46.899659Z", - "iopub.status.busy": "2026-05-31T13:30:46.899504Z", - "iopub.status.idle": "2026-05-31T13:30:46.946219Z", - "shell.execute_reply": "2026-05-31T13:30:46.945561Z" - } - }, + ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Input : 'MOBY DICK IS A WHALE'\n", - "Reconstruction: 'KOBY DICK IS A WHALE'\n", - "Char accuracy : 19/20 = 95%\n" + "-------------------------------------------\n", + "Entity-168x128: progress : 0%\n", + "Entity-168x128: err_rms : 0.005378640847885016\n", + "Entity-168x128: l2_norm : 0.3832858163328573\n", + "-------------------------------------------\n", + "Entity-168x128: progress : 10%\n", + "Entity-168x128: err_rms : 0.004888029606164829\n", + "Entity-168x128: l2_norm : 37.943563674580545\n", + "-------------------------------------------\n", + "Entity-168x128: progress : 20%\n", + "Entity-168x128: err_rms : 0.004586658254152343\n", + "Entity-168x128: l2_norm : 62.68289402335654\n", + "-------------------------------------------\n", + "Entity-168x128: progress : 30%\n", + "Entity-168x128: err_rms : 0.0029227696643319935\n", + "Entity-168x128: l2_norm : 77.592210060179\n", + "-------------------------------------------\n", + "Entity-168x128: progress : 40%\n", + "Entity-168x128: err_rms : 0.0033848746808303183\n", + "Entity-168x128: l2_norm : 87.52545196132891\n", + "-------------------------------------------\n", + "Entity-168x128: progress : 50%\n", + "Entity-168x128: err_rms : 0.0031435271125311573\n", + "Entity-168x128: l2_norm : 94.6793236343037\n", + "-------------------------------------------\n", + "Entity-168x128: progress : 60%\n", + "Entity-168x128: err_rms : 0.002912863154656583\n", + "Entity-168x128: l2_norm : 101.0458096406675\n", + "-------------------------------------------\n", + "Entity-168x128: progress : 70%\n", + "Entity-168x128: err_rms : 0.0026133215611993344\n", + "Entity-168x128: l2_norm : 108.17102558067306\n", + "-------------------------------------------\n", + "Entity-168x128: progress : 80%\n", + "Entity-168x128: err_rms : 0.0023368766544820717\n", + "Entity-168x128: l2_norm : 114.27352128254557\n", + "-------------------------------------------\n", + "Entity-168x128: progress : 90%\n", + "Entity-168x128: err_rms : 0.0033621059271795742\n", + "Entity-168x128: l2_norm : 118.8790801434613\n", + "-------------------------------------------\n", + "Entity-168x128: progress : 100%\n", + "Entity-168x128: err_rms : 0.0028362015980278044\n", + "Entity-168x128: l2_norm : 123.1840443378905\n" ] } ], + "execution_count": 7 + }, + { + "cell_type": "code", + "id": "c33-0008", + "metadata": { + "execution": { + "iopub.execute_input": "2026-05-31T13:44:35.698954Z", + "iopub.status.busy": "2026-05-31T13:44:35.698747Z", + "iopub.status.idle": "2026-05-31T13:44:35.743964Z", + "shell.execute_reply": "2026-05-31T13:44:35.743294Z" + }, + "ExecuteTime": { + "end_time": "2026-05-31T14:13:33.829642525Z", + "start_time": "2026-05-31T14:13:33.467124588Z" + } + }, "source": [ "# ── Reconstruction: teacher-forced ─────────────────────────────────────────\n", "# Step through each sample, reconstruct, compare to input.\n", @@ -469,82 +377,68 @@ "\n", "correct = sum(decoded[i] == decoded_recon[i] for i in range(N_SAMPLES))\n", "print(f\"Char accuracy : {correct}/{N_SAMPLES} = {100*correct/N_SAMPLES:.0f}%\")" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "c33-0009", - "metadata": { - "ExecuteTime": { - "end_time": "2026-05-31T13:23:41.447170202Z", - "start_time": "2026-05-31T13:23:41.189542593Z" - }, - "execution": { - "iopub.execute_input": "2026-05-31T13:30:46.948165Z", - "iopub.status.busy": "2026-05-31T13:30:46.947978Z", - "iopub.status.idle": "2026-05-31T13:30:47.251185Z", - "shell.execute_reply": "2026-05-31T13:30:47.250343Z" - } - }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABW0AAAEiCAYAAACC1vAZAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAVzNJREFUeJzt3Xl8TPf+x/H3RCRiyZAQSUiEoHa3VdQuloaitdXaWttLG6raqmqLVhdtXS1t0WoRt2IppXSxFVFStdfSW4pL0UrsGUmJ7fz+6G/mZmTCJDKZqXk9H4/zeHTO9v3MnNF55zNnzjEZhmEIAAAAAAAAAOARfNxdAAAAAAAAAADgf2jaAgAAAAAAAIAHoWkLAAAAAAAAAB6Epi0AAAAAAAAAeBCatgAAAAAAAADgQWjaAgAAAAAAAIAHoWkLAAAAAAAAAB6Epi0AAAAAAAAAeBCatgAAAAAAAADgQWjaAgAAAADgIomJiTKZTEpMTHR3KQCAvxGatsAdJj4+XiaTSdu2bXN3KZKkP//8U6+88spth9RXXnlFUVFRkv73HDNr3ry5TCaTKlWq5HD71atXy2QyyWQyadGiRVmW//zzz3rkkUdUpkwZ+fv7Kzw8XL1799bPP/+cZV3r+JmnkJAQxcTEaPny5ZKkTZs2ycfHR6NGjXJYz9tvvy2TyaRvvvnmps858xiFCxdWZGSkOnTooFmzZikjIyPLNv369VPRokUd7m/JkiVq27atSpYsKT8/P4WHh6tbt25au3atbR3rHxU3vkaXL19W+/bt5ePjo5kzZ2Zb85EjR2QymfSvf/0ry/z+/fsrOjpahQoVUmhoqJo2baqxY8dmuy9Hnn/+eZlMJnXv3t3pbapVq6batWtnmb9kyRKZTCY1a9Ysy7KZM2fKZDJp1apVkm7976p58+aqUaOGw2XXrl1TeHi4TCaT7f1xI+uxPn36dLbPw3psspvmz59vWzcqKkqvvPKKrbZ+/fplu18AwJ3pxrzi6+urMmXKqF+/fvr999/dXV6emzp1quLj472+BmeZTCZbrZlzg5TzPHj06FENHjxYUVFR8vf3V0hIiDp27KikpKQs4zrKM0FBQbrvvvuUkJAgSTp8+LAKFy6snj17Oqx9wYIFMplMmjJlSrbP78b3f6FChRQeHq7Y2Fi9//77unDhQpZtbpbHEhMT1blzZ4WGhsrPz08hISHq0KGDFi9ebFsnuxxsGIYGDRokk8lk9zo7YjKZNGTIELt5p06d0rBhw1SlShUFBAQoJCRE9erV08iRI5WWlnbT/WU2depUmUwm1a9f3+ltHnjgAZUoUUKGYdjN37lzp0wmk8qVK5dlm7Vr18pkMmn69OmSsn8/Wd3s7xdJqlevnkwmk6ZNm+ZwuTN//1qPTXbTW2+9ZVs3c3bu16+fmjdvnu1+AVfzdXcBAO5sf/75p1599VVJcvkHXqFChXTw4EFt2bJF9erVs1uWkJCgQoUK6dKlS1m2W7x4sXr27KmgoCANHDhQ5cuX15EjRzRjxgwtWrRI8+fPV6dOnbJsN27cOJUvX16GYSglJUXx8fF64IEH9NVXX6l9+/YaNGiQJk6cqEceeUTVq1e3bffbb79p3Lhxevjhh9WuXbtbPq9p06apaNGiysjI0O+//66VK1dqwIABmjRpkr7++mtFRETcdHvDMDRgwADFx8fr7rvv1jPPPKPQ0FCdOHFCS5YsUcuWLZWUlKSGDRs63P7KlSvq2rWrvv32W33yyScaMGDALWvO7ODBg6pbt64CAgI0YMAARUVF6cSJE9qxY4fefvtt2/vjVgzD0Lx58xQVFaWvvvpKFy5cULFixW65XePGjTVjxgylpqbKbDbb5iclJcnX11dbt27VlStXVLBgQbtlBQoUUIMGDXL0XB1Zu3atTpw4oaioKCUkJKht27a3tb+nnnpKdevWzTI/L2oFANx5rHnl0qVL+vHHHxUfH6+NGzdq7969KlSokLvLyzNTp05VyZIl3fpFZXY1NG3aVBcvXpSfn597CssD2eXBpKQkPfDAA5Kkxx57TNWqVVNycrLi4+PVpEkTTZ48WUOHDs2yv8x55syZM1qwYIEeeeQRnT9/XnFxcRo7dqxeeOEF9e/fX/fff79tO4vFouHDh6t+/fp64oknblm39f1/5coVJScnKzExUU8//bTeffddLVu2TLVq1brlPsaOHatx48apUqVKGjRokMqVK6czZ87o22+/VZcuXZSQkKBevXo53NYwDD355JOaPn26Ro8efcum7Y3Onj2re++9VxaLRQMGDFCVKlV05swZ7d69W9OmTdMTTzxx04ZnZgkJCYqKitKWLVt08OBBVaxY8ZbbNG7cWMuXL9fevXtVs2ZN23xrjj569KiOHz+usmXL2i2zbnu7Dhw4oK1bt9pytDPH/GZ69uxpe79mdvfdd9/WfgFXoWkL4I4RHR2tq1evat68eXZN20uXLmnJkiVq166dvvjiC7ttDh06pEcffVQVKlTQ999/r1KlStmWDRs2TE2aNNGjjz6q3bt3q0KFCnbbtm3bVvfee6/t8cCBA1W6dGnNmzdP7du311tvvaWlS5dq0KBB2rBhg+3s4KFDh6pgwYKaPHmyU8+ra9euKlmypO3xmDFjlJCQoD59+ujhhx/Wjz/+eNPtJ06cqPj4eFtAzXyW8ksvvaTPPvtMvr6OPw6uXLmibt266euvv9bHH3+sgQMHOlVzZu+9957S0tL0008/Zfk2/uTJk07vJzExUcePH9fatWsVGxurxYsXq2/fvrfcrnHjxvrkk0/0ww8/2DVMk5KS1K1bN82dO1fbt2/XfffdZ1u2ceNG1apVy6mm8K3MmTNH99xzj/r27asXX3xR6enpKlKkSK7316RJE3Xt2vW26wIAeIfMeeWxxx5TyZIl9fbbb2vZsmXq1q2bm6tzj9v9LM4pHx+fv3WDPLs8eO7cOXXt2lUBAQFKSkpSdHS0bZtnnnlGsbGxevrpp1WnTp0sJwfcmGeeeOIJVahQQXPnzlVcXJyeffZZJSQk6Mknn9SePXsUEBAg6a/seurUKa1YsUI+Prf+4fCNeX3UqFFau3at2rdvrwcffFC//PKLbd+OLFq0SOPGjVPXrl01d+5cuy/5R4wYoZUrV+rKlSvZbj906FB99NFHeumllzRu3Lhb1nujGTNm6OjRow5PsLBYLE5/EXD48GH98MMPWrx4sQYNGqSEhASnfvFmbbxu3LgxS9P2gQce0Nq1a7Vx40b16NHDtmzjxo0KDg5W1apVnartZubMmaOQkBBNnDhRXbt21ZEjR2y/vsyNe+65R4888sht1wXkFy6PAHgB609Ofv/9d3Xs2FFFixZVqVKl9Nxzz+natWu29TL/pOe9995TuXLlFBAQoGbNmmnv3r12+2zevLnDM2f79etn+yA9cuSIrQn66quv2n5+Yv2G+cqVK9q3b59OnDiRZ8+1Z8+eWrBgga5fv26b99VXX+nPP/90+IfJhAkT9Oeff2r69Ol2DVtJKlmypD7++GOlp6frnXfeueXYxYsXV0BAgK0BajabNXnyZCUlJenTTz+V9NdP8r/66iu99dZbCgsLy/Xz7N27tx577DFt3rxZq1evzna9ixcvavz48apSpYr+9a9/ZbmshCQ9+uijWc5MlqSrV6+qR48eWrp0qaZNm6bHH388V7UeOnRIZcuWdfjzqZCQEKf3k5CQoGrVqikmJkatWrWy/YTuVqxhM/NP9C5duqQdO3aoc+fOqlChgt2yU6dO6ddff82TswMuXryoJUuWqEePHurWrZsuXryopUuX3vZ+AQDIrSZNmkj66/M5s3379qlr164KCgpSoUKFdO+992rZsmVZtj9//ryGDx9u+yl82bJl1adPH7uflJ88edL2ZXahQoVUu3ZtzZ49224/mXPn9OnTFR0dLX9/f9WtW1dbt261Wzc5OVn9+/dX2bJl5e/vr7CwMD300EM6cuSIpL9+3v/zzz9r/fr1trxpzanWn06vX79eTz75pEJCQmxnBWbOrZlZfyZ/ozlz5qhevXoqXLiwSpQooaZNm9oupXSzGrK7pu3ChQtVp04dBQQEqGTJknrkkUeyXLrC2RwvSSdOnNC+fftu2kTMqZvlwY8//ljJycmaMGGCXcNWkgICAjR79myZTCanmpV+fn4qUaKELUf7+vpq+vTpOnz4sF5//XVJ0vbt2zV16lQ9++yzTp0hm50WLVpo9OjR+u233zRnzpybrjt69GgFBQVp5syZdg1bq9jYWLVv397htsOGDdOUKVM0atQo23PIqUOHDqlAgQJ2JxdYBQYGOv1lQEJCgkqUKKF27dqpa9euTufoevXqyc/PL8ulLpKSktS0aVPVq1fPbtn169f1448/qmHDhg7/DeXU3Llz1bVrV7Vv315ms1lz58697X0Cfyc0bQEvce3aNcXGxio4OFj/+te/1KxZM02cONF2raHM/v3vf+v9999XXFycRo0apb1796pFixZKSUnJ0ZilSpWyXXuoU6dO+uyzz/TZZ5+pc+fOkqTff/9dVatWzfa6r7nRq1cvnThxwi4Uz507Vy1btnTYIPzqq68UFRVl+wPmRk2bNlVUVJTDa8+mpqbq9OnTOnXqlH7++Wc98cQTSktLs/v21noJhJEjR+q///2vhg0bpoYNG2rQoEG3/VwfffRRSbL9seDIxo0bdfbsWfXq1UsFChRwet9Xr15Vz549tWTJEk2ZMuW26i1XrpyOHTtmd+3cnMrIyNAXX3xhu7ZZz549tXbtWiUnJ99y2woVKig8PFwbN260zdu6dasuX76shg0bqmHDhnZh84cffpDk+Cdd1mN+45TdH0fLli1TWlqaevToodDQUDVv3tzpkJydCxcuOKzhxmuNAQDgiLXRWaJECdu8n3/+Wffdd59++eUXvfDCC5o4caKKFCmijh07asmSJbb10tLS1KRJE33wwQe6//77NXnyZA0ePFj79u3T8ePHJf31hWXz5s312WefqXfv3powYYLMZrP69evn8FdGc+fO1YQJEzRo0CC9/vrrOnLkiDp37mz32dqlSxctWbJE/fv319SpU/XUU0/pwoULOnr0qCRp0qRJKlu2rKpUqWLLmy+99JLdOE8++aT+85//aMyYMXrhhRdy/Lq9+uqrevTRR1WwYEGNGzdOr776qiIiImz5xpkaMouPj1e3bt1UoEABjR8/Xo8//rgWL16sxo0b6/z583brOpvjR40apapVq+bZNYtvlQe/+uorFSpUKNsztsuXL6/GjRtr7dq1unjxot2yzHnm119/1SuvvKK9e/fa/Yrqvvvu0xNPPKEJEyZoz549GjRokKKionJ8TwRHnMnRBw4c0L59+9SxY8cc//pq+PDhev/99zVy5Ei9+eabua6zXLlyunbtmj777LNc70P6q2nbuXNn+fn5qWfPnrbLDtxKoUKFVKdOHbscfezYMR07dsxhjt6zZ48sFovDHJ1dhnV0nw5J2rx5sw4ePKiePXvKz89PnTt3vu0c/eeffzqs4erVq7e1X8BlDAB3lFmzZhmSjK1bt9rm9e3b15BkjBs3zm7du+++26hTp47t8eHDhw1JRkBAgHH8+HHb/M2bNxuSjOHDh9vmNWvWzGjWrFmW8fv27WuUK1fO9vjUqVOGJGPs2LFZ1rWO17dv35w/0Rs0a9bMqF69umEYhnHvvfcaAwcONAzDMM6dO2f4+fkZs2fPNtatW2dIMhYuXGgYhmGcP3/ekGQ89NBDN933gw8+aEgyLBaLYRj/e41vnPz9/Y34+Pgs2x85csQoUqSIERQUZBQsWNDYs2ePU89p7NixhiTj1KlTDpefO3fOkGR06tTJNq9v375GkSJFbI8nT55sSDKWLFni1JjW16hcuXKGJGPKlClObWdlPaYTJkywzdu7d68REBBgSDL+8Y9/GMOGDTO+/PJLIz093en9Llq0yJBkHDhwwDAMw7BYLEahQoWM9957z6ntH374YSMgIMC4fPmyYRiGMX78eKN8+fKGYRjG1KlTjZCQENu6zz33nCHJ+P33323zsjvmmSfr+y+z9u3bG40aNbI9nj59uuHr62ucPHnSbr1bHWvD+N+xyW46ceKEU68FAMA7WD+7vvvuO+PUqVPGsWPHjEWLFhmlSpUy/P39jWPHjtnWbdmypVGzZk3j0qVLtnnXr183GjZsaFSqVMk2b8yYMYYkY/HixVnGu379umEYhjFp0iRDkjFnzhzbssuXLxsNGjQwihYtastT1swQHBxsnD171rbu0qVLDUnGV199ZRjG//JO5mzhSPXq1R1mU+vr0LhxY+Pq1at2y27MrVbWz2WrAwcOGD4+PkanTp2Ma9euOXzeN6vB+hm+bt062+sREhJi1KhRw7h48aJtva+//tqQZIwZM8auRmdyfOZ1Dx8+nKWGnHA2DxYvXtyoXbv2Tff11FNPGZKM3bt32+37xsnHx8d44403smyfmppqhIeHG0FBQYYkY8WKFU49B0d/E93IbDYbd999t+3xjXnM+l50Nm9a39PW123EiBFObZeZJCMuLs72ODk52ShVqpQhyahSpYoxePBgY+7cucb58+ed3ue2bdsMScbq1asNw/jrPVu2bFlj2LBhTm0/YsQIQ5Lt78N58+YZhQoVMjIyMoxvv/3WKFCggO3f9YcffmhIMpKSkmzb3yrDSrL7+8VqyJAhRkREhO3f2KpVqwxJxs6dO+3Wc+ZYW49NdtOmTZucei2A/MaZtoAXGTx4sN3jJk2a6L///W+W9Tp27KgyZcrYHterV0/169fXt99+m6f1REVFyTCMPL/Lbq9evbR48WJdvnxZixYtUoECBRzeSMx619hbfXNuXW6xWOzmT5kyRatXr9bq1as1Z84cxcTE6LHHHrO7i6z01zfkY8eO1dmzZ/XMM8+oRo0at/P0bKw3HXB091sra805PTsgJSVFvr6+Kl++fO4L/H/Vq1fXTz/9pEceeURHjhzR5MmT1bFjR5UuXVqffPKJU/tISEjQvffea7thQrFixdSuXbscXSLh4sWL2r59uyTZXResUaNGOnnypA4cOGBbVr58eYWHh2fZT+Zjnnly9BO9M2fOaOXKlXZ3Pu7SpYtMJpM+//xzp+p2ZMyYMQ5rCAoKyvU+AQB3rlatWqlUqVKKiIhQ165dVaRIES1btsx2iYCzZ89q7dq16tatm92ZcGfOnFFsbKwOHDhgO3Pziy++UO3atR3mKutPob/99luFhobaff4VLFhQTz31lNLS0rR+/Xq77bp372531q/110/WjBoQECA/Pz8lJibq3LlzuX4dHn/88Rz96iizL7/8UtevX9eYMWOyXEc1Nz8B37Ztm06ePKknn3zS7uft7dq1U5UqVRz+wsuZHB8fHy/DMG7rmp+Z3SoPOnNT2OxydOY8s2DBAvXs2VMvvfRSlrOxAwMDNWnSJJ09e1bdu3dXbGzsbTwje0WLFnVZjpakypUr5764/1e6dGnt2rVLgwcP1rlz5/TRRx+pV69eCgkJ0WuvvebUL60SEhJUunRpxcTESPrrPdu9e3fNnz8/yyU2HLGeNbthwwZJf2XlOnXqyM/PTw0aNLBdEsG6zHp5lRtll2Ez32jO6urVq1qwYIG6d+9u+zfWokULhYSE3NbZtv/85z8d1lCtWrVc7xNwJZq2gJcoVKhQlmu2lihRwmH4rVSpUpZ5lStXtv2cztP16NFDqampWr58uRISEtS+fXuHYcs672ZhLfPyG/dRr149tWrVSq1atVLv3r31zTffqFq1ahoyZIguX75st6717riOAkxupaWlOawrs8DAQLvn4Kx33nlHkZGR6tq1a5ZrWOVG5cqV9dlnn+n06dPavXu33nzzTfn6+uqf//ynvvvuu5tue/78eX377bdq1qyZDh48aJsaNWqkbdu26ddff73l+Jmva2sYhn744Qc1atRIklSjRg0FBgYqKSlJly5d0vbt27O9nm3mY555yvzHptWCBQt05coV3X333baaz549q/r1699W2KxZs6bDGv7Od6QGALiO9QvHRYsW6YEHHtDp06fl7+9vW37w4EEZhqHRo0erVKlSdpP1Z+jWG4ceOnToll8+//bbb6pUqVKW5qb1pkS//fab3fzIyEi7x9bPVGtG9ff319tvv63ly5erdOnSatq0qd555x2nLpGU2e18EX3o0CH5+PjkWWPH+hrcddddWZZVqVIly2uUkxyfl26VB4sVK5brHJ05z3Tr1k1z5sxR+/bt9cILL+jUqVN267oiR0t/ZWlX5OiRI0eqbt26GjRokBYtWnRbNUpSWFiYpk2bphMnTmj//v16//33VapUKY0ZM0YzZsy46bbXrl3T/PnzFRMTo8OHD9syaf369ZWSkqI1a9bccvxGjRrJZDLZ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zVq8eLHS0tIkSbt27dLYsWPzvEAAAAAAAAAA8CY5btq+8MILev3117V69Wr5+fnZ5rdo0UI//vhjnhYHAAAAAAAAAN4mx03bPXv2qFOnTlnmh4SE6PTp03lSFAAAAAAAAAB4qxw3bYsXL64TJ05kmb9z506VKVMmR/v6/vvv1aFDB4WHh8tkMunLL7+0W96vXz+ZTCa7qU2bNjktGQAAAMgxsioAAADcxTenG/To0UMjR47UwoULZTKZdP36dSUlJem5555Tnz59crSv9PR01a5dWwMGDFDnzp0drtOmTRvNmjXL9tjf3z+nJXs97gYIAO7D/wO9G8f/742smj/IqgDgPvw/0Ltx/D1bjpu2b775puLi4hQREaFr166pWrVqunbtmnr16qWXX345R/tq27at2rZte9N1/P39FRoamtMyAQAAgNtCVgUAAIC75Lhp6+fnp08++USjR4/W3r17lZaWprvvvluVKlVyRX1KTExUSEiISpQooRYtWuj1119XcHBwtutnZGQoIyPD9thisbikLgAAAICsCgAAAFfIcdPWKjIyUpGRkXlZSxZt2rRR586dVb58eR06dEgvvvii2rZtq02bNqlAgQIOtxk/frxeffVVl9YFAAAAkFUBAADgKk41bZ955hmnd/juu+/mupgb9ejRw/bfNWvWVK1atRQdHa3ExES1bNnS4TajRo2yq9disSgiIiLPagIAAAAksioAAABcx6mm7c6dO+0e79ixQ1evXtVdd90lSfr1119VoEAB1alTJ+8rzKRChQoqWbKkDh48mG0Q9vf35wYQAAAAyHdkVQAAAOQVp5q269ats/33u+++q2LFimn27NkqUaKEJOncuXPq37+/mjRp4poq/9/x48d15swZhYWFuXScOw13A4Q7cUdoAIC3IKvmDp/VcCeyKgDAU+X4mrYTJ07UqlWrbA1bSSpRooRef/113X///Xr22Wed3ldaWpoOHjxoe3z48GH99NNPCgoKUlBQkF599VV16dJFoaGhOnTokJ5//nlVrFhRsbGxOS0bAAAAyBGyKgAAANwlx01bi8WiU6dOZZl/6tQpXbhwIUf72rZtm2JiYmyPrdf36tu3r6ZNm6bdu3dr9uzZOn/+vMLDw3X//ffrtdde4ydlAAAAcDmyKgAAANwlx03bTp06qX///po4caLq1asnSdq8ebNGjBih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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } ], - "source": [ - "# ── Visualise reconstruction ───────────────────────────────────────────────\n", - "fig, axes = plt.subplots(1, 2, figsize=(14, 3))\n", - "\n", - "axes[0].imshow(sensory_np.T, aspect='auto', cmap='Blues', vmin=0, vmax=1)\n", - "axes[0].set_title(f'Input: \"{decoded}\"')\n", - "axes[0].set_xticks(range(N_SAMPLES))\n", - "axes[0].set_xticklabels(list(decoded))\n", - "axes[0].set_ylabel('Vocab index')\n", - "\n", - "axes[1].imshow(recons_np.T, aspect='auto', cmap='Blues', vmin=0, vmax=1)\n", - "axes[1].set_title(f'Reconstruction: \"{decoded_recon}\"')\n", - "axes[1].set_xticks(range(N_SAMPLES))\n", - "axes[1].set_xticklabels(list(decoded_recon))\n", - "\n", - "plt.tight_layout()\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "c33-0010", - "metadata": { - "ExecuteTime": { - "end_time": "2026-05-31T13:23:41.550688083Z", - "start_time": "2026-05-31T13:23:41.448385388Z" - }, - "execution": { - "iopub.execute_input": "2026-05-31T13:30:47.253086Z", - "iopub.status.busy": "2026-05-31T13:30:47.252868Z", - "iopub.status.idle": "2026-05-31T13:30:47.404677Z", - "shell.execute_reply": "2026-05-31T13:30:47.403914Z" - } - }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Input (t+1) : 'OBY DICK IS A WHALE'\n", - "Predicted from h_t : 'OIY DICK IS A WHALE'\n", - "Next-step accuracy : 18/19 = 95%\n" + "Input : 'CALL ME ISHMAEL. SOME YEARS AGO NEVER MIND HOW LONG PRECISELY HAVING LITTLE MONEY IN MY POCKET AND NOTHING PARTICULAR TO INTEREST ME ON SHORE I THOUGHT I WOULD SAIL ABOUT A LITTLE.'\n", + "Reconstruction: 'CALL ME ISHMAEL. SOME YEARS AGO NEVER MIND HOW LONG PRECISELY HAVING LITTLE MONEY IN MY POCKET AND NOTHING PARTICULARETO INTEREST ME ON SHORE I THOUGHT I WOULD SAIL ABOUT A LITTLE.'\n", + "Char accuracy : 179/180 = 99%\n" ] } ], + "execution_count": 8 + }, + { + "cell_type": "code", + "id": "c33-0009", + "metadata": { + "execution": { + "iopub.execute_input": "2026-05-31T13:44:35.745972Z", + "iopub.status.busy": "2026-05-31T13:44:35.745781Z", + "iopub.status.idle": "2026-05-31T13:44:36.051662Z", + "shell.execute_reply": "2026-05-31T13:44:36.050823Z" + }, + "ExecuteTime": { + "end_time": "2026-05-31T14:13:34.318617319Z", + "start_time": "2026-05-31T14:13:33.830853549Z" + } + }, + "source": "# ── Visualise reconstruction ───────────────────────────────────────────────\nstep = max(1, N_SAMPLES // 40)\ntick_pos = range(0, N_SAMPLES, step)\n\nfig, axes = plt.subplots(1, 2, figsize=(16, 3))\n\naxes[0].imshow(sensory_np.T, aspect='auto', cmap='Blues', vmin=0, vmax=1)\naxes[0].set_title(f'Input ({N_SAMPLES} chars)')\naxes[0].set_xticks(tick_pos)\naxes[0].set_xticklabels([decoded[i] for i in tick_pos], fontsize=8)\naxes[0].set_ylabel('Vocab index')\n\naxes[1].imshow(recons_np.T, aspect='auto', cmap='Blues', vmin=0, vmax=1)\naxes[1].set_title(f'Reconstruction (acc {100*correct/N_SAMPLES:.0f}%)')\naxes[1].set_xticks(tick_pos)\naxes[1].set_xticklabels([decoded_recon[i] for i in tick_pos], fontsize=8)\n\nplt.tight_layout()\nplt.show()", + "outputs": [ + { + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAABjUAAAEiCAYAAACx91CkAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAU5dJREFUeJzt3Xl8THf///9nIoQysYutXJbSRamqra3ybbXVq4u12upC+XyuqlJa1V66oPSi6lKt0F1j+VwtWktVi24opaTWEFuINQRJJFORROL9+6O/zGWSYCYzmTMzedxvt/ft5pyc5XnOnJk5L+8554RIMgIAAAAAAAAAAPBzoVYHAAAAAAAAAAAAcAWdGgAAAAAAAAAAICDQqQEAAAAAAAAAAAICnRoAAAAAAAAAACAg0KkBAAAAAAAAAAACAp0aAAAAAAAAAAAgINCpAQAAAAAAAAAAAgKdGgAAAAAAAAAAICDQqQEAAAAAAAAAAAICnRoAAK96+OGHlZycrPLly1sdxWPGGEVFRVkdw+HLL7/UvHnzrI4BAAAAWKpjx44yxqhjx46WrD8kJESxsbF69dVXLVl/ILnuuut0/vx53XDDDVZHARBE6NQAAD/Rt29fGWPUqlUrq6NIksqVK6fRo0e7VSiEhobqzTffVFRUlM6ePesYf/fdd+uzzz5TbGyscnJylJCQcMll1KxZUx9//LEOHDigjIwMxcfHa/LkyapSpUqBaa+99lotW7ZMdrtdycnJmj17tqpVq+behgaQiRMnqmfPnmrevLnVUQAAAEqcvPP1vHb+/HkdPXpU0dHRql27ttXxvO7ZZ59V3759S3yGwjz22GO6+uqrNW3aNKujFOq5555TXFycMjMzdfToUU2ePFlXXXVVgekaNWqkr776SikpKTp79qzWrFmjTp06FZiua9eu2rVrl86cOaMlS5aoVq1aBab55ptv9PHHHxcYv2vXLn333XcaO3asV7YNAPIYGo1Go1nf+vbta4wxplWrVpZnkWSqVq1qjDFm9OjRLs/TtWtXk5uba2rXru00Pjo62mRkZJi1a9eaw4cPm4SEhELnL1++vElISDAnT540Y8aMMQMGDDBTp041WVlZZvPmzSYkJMQxbZ06dczJkyfNvn37zJAhQ8zIkSNNcnKy2bJliyldurRX9oExxkRFRVn+Wlzcfv/9dzNr1izLc9BoNBqNRqOVtJZ3vv7666+bxx9/3AwYMMB8+umn5vz582bfvn0mPDzc8ozebLGxsWblypV+mSEkJMSEh4c71Qe+bFu2bDEfffSR5a9RYe3tt982xhgzf/5888wzz5j333/fZGdnm+XLlztNV7duXXPy5Elz/PhxM3LkSPP888+bLVu2mOzsbNOhQwfHdA0aNDCZmZlm1qxZZuDAgWb37t0FlnXPPfeY1NRUU61atUIzdenSxRhjTMOGDS3fPzQaLWia5QFoNBqNpuDo1Fi8eLH59ddfC4yvVauWCQsLM5LMt99+e8lOjccee8wYY8zf//53p/Fjxowxxhhz0003OcZNnz7dnD171lx99dWOcXfddZcxxpj//d//9co+8EWnxlVXXeXW9C+++KKx2+2mfPnylh8jNBqNRqPRaCWpXep8fcKECcYYYx5++GHLM3qzudOp4e45bXFk8FW76aabjDHG3HnnnZZnyd9q1qxpsrOzC/wI6rnnnjPGGPPAAw84xk2bNs1kZ2ebJk2aOMaVK1fOHDp0yPzxxx+Occ8884yJj493DHfs2NHk5uY6OvFKlSpldu7caV544YVL5goLCzPJycnmzTfftHwf0Wi04GjcfgoA/Fh0dLTsdrtq166tRYsWyW636+TJk5o0aZJCQ//7EV6/fn0ZYzR8+HANGzZMBw8eVEZGhlatWlXg3qUrV67UypUrC11X3m2h6tevr9OnT0uSxowZ47jEfvTo0ZfMGh4eri5duuinn34q8Lfjx48rJyfnitsbEREhSUpKSiowvySdO3fOMa5nz55aunSpjhw54hj3888/a8+ePerdu/cV1xUSEqLnn39e27dv17lz53Ty5EktW7as0Nt/de3aVbGxscrMzNSOHTt07733Ov29Xr16mj59unbv3q2MjAydPn1a8+fPV/369Z2my7tlwR133KHp06crKSlJR48elSRVqFBBU6ZMUUJCgjIzM5WUlKQffvhBLVu2dFrGjz/+qAoVKujuu+++4jYCAACg+K1Zs0bSX7fyuVjTpk311VdfKTk5WefOnVNMTIwefPDBAvNXrFhR7777ruM88MiRI5o1a5aqVq3qmKZ69er67LPPdOLECZ07d05bt27VU0895bSci2uC//3f/1V8fLwyMzO1ceNG3XLLLU7TRkZG6vPPP9eRI0eUmZmpxMRELV682HH+mpCQoGbNmqlTp06OWiCvhrjcOe3FNcXFRo8eLWNMgfGPP/64NmzYoLNnzyolJUWrV692nOdeLsOlnqnRq1cv/fHHH8rIyNCpU6c0Z86cArcGc7XGupRu3bopKytLv/76q9N4V2sCybXXPDw8XKNHj9aePXt07tw5JSYmasGCBWrYsOEls7Vv316lS5fW3LlzncbnDT/66KOOcR06dNCWLVu0d+9ex7hz585pyZIlatWqlRo3bizpr9sSnzlzxjFNSkqKQkNDVa5cOUnS4MGDVapUqcs+izAnJ0erVq1S165dLzkNALgjzOoAAIDLK1WqlFasWKENGzbopZdeUufOnfXSSy9p//79+uijj5ymfeqpp2Sz2TR9+nSVLVtWQ4cO1S+//KIbb7xRJ0+edHmdp06d0sCBA/XRRx9p4cKFWrhwoSRp+/btl5ynVatWCg8P1+bNm4u2oZJ+/fVX5ebm6v3339fw4cN19OhRNW/eXK+99poWLVqkPXv2SJJq166tyMhI/fHHHwWWsXHjRv3973+/4rpmzJihp59+Wt9//70+++wzhYWFqUOHDmrXrp02bdrkmO72229Xjx499MEHH8hut+v555/XggULVK9ePaWkpEiSWrdurVtvvVVz587V0aNH9be//U3PPvusVq1apeuvv96pM0aSPvjgA506dUpjx451PFD9o48+Uq9evTRt2jTFxcWpatWquv3223Xddddpy5Ytjnnj4uKUkZGh2267TYsXL3Z7HwMAAMC7/va3v0mSUlNTHeOuv/56/fbbbzp27JjefvttnT17Vr1799bixYvVs2dPx3lc+fLltWbNGl133XX6/PPPtXnzZlWrVk0PPfSQ6tatq+TkZJUtW1arVq1S48aNNW3aNCUkJOjhhx/WrFmzVKlSJU2dOtUpT58+fWSz2fTxxx/LGKOXX35ZCxcuVMOGDR0/NFqwYIFuuOEGRUVF6eDBg6pRo4buvvtu1atXT4cOHdKwYcMUFRWlP//8U//6178kFfzhUWHntO4YNWqU3nzzTf32228aNWqUsrOz1bZtW91555368ccfXcpwsb59+2rmzJnauHGjRo4cqcjISA0dOlS33XabWrZsqbS0NMe07tRY+d16663asWNHgR9tuVoTuPKah4aGaunSpercubO+/PJLvf/++7LZbLr77rvVrFkzHThwoNBs4eHhklSg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Bmnz5s3avXu3WrRoURwZAQAAAAAAAAAAFObuDAcOHNBtt92m9957T8uXL1dubq769u2ruXPnFkc+AAAAAAAAAAAASUV8UPj999+vRx99VOvXr9eZM2c0YMAA1apVy9vZAAAAAAAAAAAAHNzu1Pjoo4/01VdfaeLEierQoYOaN2+u7OxsxcbG6uGHHy6OjAAAAAAAAAAAAAqRZNyZITY2Vo8//ri2b9/uNH7QoEGaOHGibDabN/N5zGazKT09XZk5VicBAAAASqayYVJERITsdrvVUS6L2gEAAACwliu1g9udGmXKlFF2dnahf2vSpIn27t3rVsjiVlhhUrn1YKdpUmOm+TiV+/JnlgIjd36e7vtAfO3gPzh+cLFgPR58vV3B8v0EuCMQzmf87TMukDs1/G1fuiJYPpsD4b2G4MXxg4tVbjPEaTh1Y5RFSbyL2gEofh6fz7R/0Xn+9e96nKnAOvzsO8+V2sHt209lZ2erYcOGGjdunL744gtVr15dktSlSxeFhbn93HEAAAAAAAAAAACXuN2pcccddyg2NlZt27ZVjx49VKFCBUlSixYt9Oabb3o9IAAAAAAAAAAAgFSETo23335br7/+uu655x6n21D98ssvateunVfDAQAAAAAAAAAA5HG7U+PGG2/UokWLCow/efKkqlWr5tayOnTooCVLlujYsWMyxqhr165Of4+OjpYxxqktW7bM3cgAAAAAAhy1AwAAAACpCA8KP3LkiHr37q3169crPT1dLVq0UEJCgrp166Z///vfaty4scvL6tKli2677TZt2rRJixYtUrdu3fTNN984/h4dHa3IyEg9/fTTjnFZWVk6c+aMy+so7GF/AAAAgL/wtwfzFQdvPCic2gEAAAAlHbXDX9x+svfcuXM1ceJEPfzwwzLGKDQ0VLfeeqv+/e9/a/bs2W4ta/ny5Vq+fPllp8nKylJSUpK7MQEAAAAEEWoHAAAAAFIRbj/16quvavfu3Tpy5IgqVKiguLg4/frrr1q3bp3eeustrwfs1KmTkpKStHv3bn3wwQeqUqWK19cBAAAAIPBROwAAAADBz+0rNc6fP69//OMfGjdunJo1a6YKFSpoy5Ytio+P93q45cuXa+HChUpISFCjRo00fvx4LVu2TO3bt9eFCxcKnadMmTIKDw93DNtsNq/nAgAAAOBfqB0AAACAksHtTo08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" + }, + "metadata": {}, + "output_type": "display_data", + "jetTransient": { + "display_id": null + } + } + ], + "execution_count": 9 + }, + { + "cell_type": "code", + "id": "c33-0010", + "metadata": { + "execution": { + "iopub.execute_input": "2026-05-31T13:44:36.053484Z", + "iopub.status.busy": "2026-05-31T13:44:36.053314Z", + "iopub.status.idle": "2026-05-31T13:44:36.198793Z", + "shell.execute_reply": "2026-05-31T13:44:36.197851Z" + }, + "ExecuteTime": { + "end_time": "2026-05-31T14:13:35.558819364Z", + "start_time": "2026-05-31T14:13:34.319986996Z" + } + }, "source": [ "# ── Next-step prediction ───────────────────────────────────────────────────\n", "# Given h_t (context after seeing x_t), predict x_{t+1} via clamped Gibbs.\n", @@ -576,7 +470,19 @@ "print(f\"Predicted from h_t : '{predicted}'\")\n", "correct = sum(decoded[i+1] == predicted[i] for i in range(N_SAMPLES - 1))\n", "print(f\"Next-step accuracy : {correct}/{N_SAMPLES-1} = {100*correct/(N_SAMPLES-1):.0f}%\")" - ] + ], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Input (t+1) : 'ALL ME ISHMAEL. SOME YEARS AGO NEVER MIND HOW LONG PRECISELY HAVING LITTLE MONEY IN MY POCKET AND NOTHING PARTICULAR TO INTEREST ME ON SHORE I THOUGHT I WOULD SAIL ABOUT A LITTLE.'\n", + "Predicted from h_t : 'AOEGML ONIOAEL.OSEMATOOLRT RGE IEVRR NDOHOWHAENG PRECO EEY HALARTAI TTEE MONEYHIN MY PACKEY EID HR.HIPE PROKHC.MORE.S IIDARETTLME ON EHOTE NTHHUGESOITWIU D EAIL ABOOT H LROTLE.'\n", + "Next-step accuracy : 101/179 = 56%\n" + ] + } + ], + "execution_count": 10 } ], "metadata": {