From 73ff6c2bb46e0253ac1d26bed2d8fd3515ab7c19 Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Sun, 31 May 2026 20:47:27 +0200 Subject: [PATCH] [context33] - momentum 0.9, epochs 500 Co-Authored-By: Claude Sonnet 4.6 --- context33.ipynb | 162 +++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 131 insertions(+), 31 deletions(-) diff --git a/context33.ipynb b/context33.ipynb index b05b3d8..8a8d2da 100644 --- a/context33.ipynb +++ b/context33.ipynb @@ -11,8 +11,8 @@ "shell.execute_reply": "2026-05-31T13:42:50.945911Z" }, "ExecuteTime": { - "end_time": "2026-05-31T18:06:04.806316893Z", - "start_time": "2026-05-31T18:06:04.717164306Z" + "end_time": "2026-05-31T18:35:27.384703078Z", + "start_time": "2026-05-31T18:35:27.328228089Z" } }, "source": [ @@ -32,7 +32,7 @@ "from rbm.status import CheckpointStatus" ], "outputs": [], - "execution_count": 47 + "execution_count": 77 }, { "cell_type": "code", @@ -45,8 +45,8 @@ "shell.execute_reply": "2026-05-31T13:42:50.952461Z" }, "ExecuteTime": { - "end_time": "2026-05-31T18:06:04.880711653Z", - "start_time": "2026-05-31T18:06:04.841414824Z" + "end_time": "2026-05-31T18:35:27.434822465Z", + "start_time": "2026-05-31T18:35:27.386343747Z" } }, "source": [ @@ -54,8 +54,8 @@ "SENSORY_SIZE = 40 # numVisibleX * numVisibleY = 1 * 40\n", "CONTEXT_SIZE = 256 # numContext = numHidden\n", "LEARNING_RATE = 0.05 # learningRate\n", - "MOMENTUM = 0.7 # momentum\n", - "NUM_EPOCHS = 100 # numEpochs\n", + "MOMENTUM = 0.9 # momentum\n", + "NUM_EPOCHS = 500 # numEpochs\n", "MINI_BATCH = 100 # miniBatchSize\n", "NUM_GIBBS = 3 # numGibbs\n", "RAO_BLACKWELL = True # doRaoBlackwell\n", @@ -71,7 +71,7 @@ "char_to_idx = {c: i for i, c in enumerate(chars)}" ], "outputs": [], - "execution_count": 48 + "execution_count": 78 }, { "cell_type": "code", @@ -84,8 +84,8 @@ "shell.execute_reply": "2026-05-31T13:42:50.958632Z" }, "ExecuteTime": { - "end_time": "2026-05-31T18:06:04.938144862Z", - "start_time": "2026-05-31T18:06:04.881644183Z" + "end_time": "2026-05-31T18:35:27.496699992Z", + "start_time": "2026-05-31T18:35:27.435851457Z" } }, "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\")", @@ -99,7 +99,7 @@ ] } ], - "execution_count": 49 + "execution_count": 79 }, { "cell_type": "code", @@ -112,8 +112,8 @@ "shell.execute_reply": "2026-05-31T13:42:51.207444Z" }, "ExecuteTime": { - "end_time": "2026-05-31T18:06:05.261711758Z", - "start_time": "2026-05-31T18:06:04.939234537Z" + "end_time": "2026-05-31T18:35:27.884105106Z", + "start_time": "2026-05-31T18:35:27.497545407Z" } }, "source": [ @@ -146,7 +146,7 @@ } } ], - "execution_count": 50 + "execution_count": 80 }, { "cell_type": "code", @@ -159,8 +159,8 @@ "shell.execute_reply": "2026-05-31T13:42:51.212592Z" }, "ExecuteTime": { - "end_time": "2026-05-31T18:06:05.316035425Z", - "start_time": "2026-05-31T18:06:05.262504600Z" + "end_time": "2026-05-31T18:35:27.943040281Z", + "start_time": "2026-05-31T18:35:27.885267639Z" } }, "source": "# ── Prepare sequences for StackRnn ─────────────────────────────────────────\n# Tile the single sentence N_REPEAT times to form a real batch so GPU/CPU\n# matrix ops are (N_REPEAT, 168) instead of (1, 168).\nN_REPEAT = 500\nsequences = np_cpu.tile(sensory_np[np_cpu.newaxis, :, :], (N_REPEAT, 1, 1))\nprint(f\"sequences shape : {sequences.shape} → {N_REPEAT} × {N_SAMPLES} chars\")", @@ -173,7 +173,7 @@ ] } ], - "execution_count": 51 + "execution_count": 81 }, { "cell_type": "code", @@ -186,8 +186,8 @@ "shell.execute_reply": "2026-05-31T13:42:51.319006Z" }, "ExecuteTime": { - "end_time": "2026-05-31T18:06:05.384091288Z", - "start_time": "2026-05-31T18:06:05.327317819Z" + "end_time": "2026-05-31T18:35:28.002522032Z", + "start_time": "2026-05-31T18:35:27.943911470Z" } }, "source": [ @@ -234,7 +234,7 @@ ] } ], - "execution_count": 52 + "execution_count": 82 }, { "cell_type": "code", @@ -247,7 +247,8 @@ "shell.execute_reply": "2026-05-31T13:44:35.696410Z" }, "ExecuteTime": { - "start_time": "2026-05-31T18:06:05.385095367Z" + "end_time": "2026-05-31T18:43:53.713415919Z", + "start_time": "2026-05-31T18:35:28.004069404Z" } }, "source": [ @@ -303,13 +304,53 @@ "output_type": "stream", "text": [ "-------------------------------------------\n", - "Entity-296x256: progress : 1%\n", - "Entity-296x256: err_rms : 4.153017505591589e-06\n", - "Entity-296x256: l2_norm : 149.9841498059769\n" + "Entity-296x256: progress : 0%\n", + "Entity-296x256: err_rms : 3.5206192813609325e-05\n", + "Entity-296x256: l2_norm : 168.14081845237274\n", + "-------------------------------------------\n", + "Entity-296x256: progress : 10%\n", + "Entity-296x256: err_rms : 0.0002846312083479259\n", + "Entity-296x256: l2_norm : 175.11439535880584\n", + "-------------------------------------------\n", + "Entity-296x256: progress : 20%\n", + "Entity-296x256: err_rms : 0.0001958053595724496\n", + "Entity-296x256: l2_norm : 182.26684401899442\n", + "-------------------------------------------\n", + "Entity-296x256: progress : 30%\n", + "Entity-296x256: err_rms : 0.00018214022125563278\n", + "Entity-296x256: l2_norm : 188.44618289565412\n", + "-------------------------------------------\n", + "Entity-296x256: progress : 40%\n", + "Entity-296x256: err_rms : 0.00014556143658172474\n", + "Entity-296x256: l2_norm : 194.11115081490732\n", + "-------------------------------------------\n", + "Entity-296x256: progress : 50%\n", + "Entity-296x256: err_rms : 0.0001421858759457632\n", + "Entity-296x256: l2_norm : 199.29947239189366\n", + "-------------------------------------------\n", + "Entity-296x256: progress : 60%\n", + "Entity-296x256: err_rms : 0.00012014078723774705\n", + "Entity-296x256: l2_norm : 204.13700705201106\n", + "-------------------------------------------\n", + "Entity-296x256: progress : 70%\n", + "Entity-296x256: err_rms : 0.00011899923197647104\n", + "Entity-296x256: l2_norm : 208.56436457236208\n", + "-------------------------------------------\n", + "Entity-296x256: progress : 80%\n", + "Entity-296x256: err_rms : 0.0001093107101692574\n", + "Entity-296x256: l2_norm : 212.7535847106701\n", + "-------------------------------------------\n", + "Entity-296x256: progress : 90%\n", + "Entity-296x256: err_rms : 0.00011302519021015924\n", + "Entity-296x256: l2_norm : 216.6413678308393\n", + "-------------------------------------------\n", + "Entity-296x256: progress : 100%\n", + "Entity-296x256: err_rms : 0.00010362448422015396\n", + "Entity-296x256: l2_norm : 220.34688279481534\n" ] } ], - "execution_count": null + "execution_count": 83 }, { "cell_type": "code", @@ -320,6 +361,10 @@ "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-31T18:43:54.079011304Z", + "start_time": "2026-05-31T18:43:53.714907777Z" } }, "source": [ @@ -342,8 +387,18 @@ "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}%\")" ], - "outputs": [], - "execution_count": null + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "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: 'MALL 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", + "Char accuracy : 179/180 = 99%\n" + ] + } + ], + "execution_count": 84 }, { "cell_type": "code", @@ -354,6 +409,10 @@ "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-31T18:43:54.629668429Z", + "start_time": "2026-05-31T18:43:54.080558630Z" } }, "source": [ @@ -384,8 +443,35 @@ "plt.tight_layout()\n", "plt.show()\n" ], - "outputs": [], - "execution_count": null + "outputs": [ + { + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAABY8AAAEiCAYAAACxwS1VAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAUQlJREFUeJzt3Xd0VNXax/FfuhAmIMUEosEIAnpFhIgIiKCxoKiAIioWEF+9iAUU9QoWpAiiFxAxdgzlKoKiNGlG4aISepUmJQQIJCEESKSkkPP+oYzMzWQyM0yf72etvRbZc87ez95z5mR42OwTIskQAAAAAAAAAABnCfV2AAAAAAAAAAAA30PyGAAAAAAAAABQDsljAAAAAAAAAEA5JI8BAAAAAAAAAOWQPAYAAAAAAAAAlEPyGAAAAAAAAABQDsljAAAAAAAAAEA5JI8BAAAAAAAAAOWQPAYAAAAAAAAAlEPyGAAAAJKke++9V4cPH1Z0dLS3QzlnhmFo/Pjx3g7DbOrUqZo2bZq3wwAAAAAcQvIYAADgHPXs2VOGYSgpKcnboUiSqlSposGDB6t9+/Z2nxMaGqohQ4Zo/PjxOn78uLn+5ptv1meffaZNmzaptLRUGRkZFbYRFxenjz/+WLt379aJEye0c+dOjR49WjVr1ix3bJMmTTR//nwVFhbq8OHDmjx5smrXru3YQP3IqFGjdM899+jKK6/0digAAACA3UgeAwAABJiqVavqjTfeUIcOHew+584771Tjxo31ySefWNT36NFDPXr00LFjx3TgwIEKz4+OjlZ6erq6du2qyZMn65lnntG8efP09NNPKy0tTSEhIeZj4+PjtXTpUjVs2FCDBg3Sv//9b3Xq1Ek//PCDIiIiHB6vP1i/fr1Wr16tAQMGeDsUAAAAwG7h3g4AAAAA3vfoo4/q119/LZcgHjRokB5//HGVlpZqzpw5uuKKK6yef9ddd+niiy9Wp06dNG/ePHN9fn6+Bg8erGbNmmn9+vXmNqOjo5WUlKR9+/ZJklauXKm0tDT16tVLn376qXsG6WJVq1bViRMn7D5++vTpGjJkiPr27WuxuhsAAADwVaw8BgAAcIPU1FQVFhaqXr16+u6771RYWKjc3Fy98847Cg39+ytY/fr1ZRiGBgwYoP79+2vPnj06ceKElixZon/84x8WbS5evFiLFy+22teZ7STq16+vvLw8SdIbb7whwzBkGIYGDx5cYaxRUVHq2LGj0tLSyr128OBBlZaWVjremJgYSVJOTk658yXp5MmT5rp77rlHc+fONSeOJenHH3/U9u3b1b1790r7CgkJ0bPPPquNGzfq5MmTys3N1fz5861uG9K5c2dt2rRJp06d0m+//aZbb73V4vWEhASlpKRo27ZtOnHihPLy8jR9+nTVr1/f4rgzW5Ncf/31SklJUU5Ojvbv3y9JqlatmsaOHauMjAydOnVKOTk5WrRokZo3b27Rxg8//KBq1arp5ptvrnSMAAAAgC9g5TEAAICbhIWFaeHChVqxYoVeeOEF3XTTTXrhhRe0a9cuffTRRxbHPvLIIzKZTEpJSdF5552nfv366aefflLTpk2Vm5trd5+HDh1Snz599NFHH+nbb7/Vt99+K0nauHFjheckJSUpKipKa9eudW6gkpYuXarTp09r3LhxGjBggPbv368rr7xSr7zyir777jtt375dklSvXj3FxsZq9erV5dpYuXKlbr/99kr7mjBhgh599FHNmzdPn332mcLDw9WuXTtde+21WrNmjfm46667Tnfffbc++OADFRYW6tlnn9WMGTOUkJCg/Px8SVLLli3Vpk0bffXVV9q/f78uvvhiPfnkk1qyZIkuv/xyi6S3JH3wwQc6dOiQhg4dan6w4EcffaRu3brp/fff15YtW1SrVi1dd911uuyyy7Ru3TrzuVu2bNGJEyfUtm1bzZw50+E5BgAAALzBoFAoFAqFQqE4X3r27GkYhmEkJSWZ61JTUw3DMIxXX33V4tg1a9YYq1atMv9cv359wzAM4/jx40a9evXM9S1btjQMwzBGjx5trlu8eLGxePHicv2npqYaGRkZ5p9r1aplGIZhDB482K74e/fubRiGYfzjH/+wedycOXMs+rHWTn5+vnG21NRUIywszHxMUlKSYRiG8dBDD5U7f9SoUYZhGEZkZGSFfXTo0MEwDMN49913bcZqGIZx6tQp45JLLjHXNW3a1DAMw3jqqafMdeedd165c1u1alUuxjPv8dKlS43Q0FCL448cOWKMHz/errnetm2b8f3333v9mqVQKBQKhUKhUOwpbFsBAADgRv+7wvjnn3/WJZdcUu64mTNnWuw3vGrVKi1fvtyulbjnqlatWpKkI0eOnFM7WVlZWrlypfr166cuXbpo9OjR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" + }, + "metadata": {}, + "output_type": "display_data", + "jetTransient": { + "display_id": null + } + }, + { + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAABY8AAAEiCAYAAACxwS1VAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAVytJREFUeJzt3Xd0VNXax/FfCkQJE5BiAtFghEvx4qVERFQMElQUpYmIWEB8VcQCig0bAipyvVKNHUPgKkVRigUULyhCQIg0aVIChEACoSVCSIH9/qGMjJkMmSHTv5+19lpkzzlnP2efM5PhYfOcEElGAAAAAAAAAACcJtTbAQAAAAAAAAAAfA/JYwAAAAAAAABAKSSPAQAAAAAAAAClkDwGAAAAAAAAAJRC8hgAAAAAAAAAUArJYwAAAAAAAABAKSSPAQAAAAAAAAClkDwGAAAAAAAAAJRC8hgAAAAAAAAAUArJYwAAAJyVxMREGWOUmJjolfFDQkK0bt06Pffcc14Z3580adJExcXF+uc//+ntUAAAAOAHSB4DAAC/1KdPHxljrK24uFi7d+9WSkqK6tat6+3wKtxDDz2kPn36BH0M9txxxx268MIL9dZbb3k7FLsefvhhbdiwQcePH9fu3bv15ptvqkqVKqW2q1+/vj799FMdPHhQR48e1eLFi9WuXbtS23Xp0kUbN27U4cOHNWfOHNWpU6fUNrNnz9Z7771Xqn/jxo366quvNHz48Ao5NwAAAAQ+Q6PRaDQajeZvrU+fPsYYY1544QVz5513mvvuu8988MEHpri42GzZssVERER4PcaKbOvWrTMLFy70yRhCQkJMRESECQkJ8Upcq1atMu+++67Xr5G99vrrrxtjjJkxY4Z58MEHzbhx40xRUZGZN2+ezXYXXHCB2bdvn9m7d68ZMmSIeeyxx8yqVatMUVGRadu2rXW7+Ph4c/z4cZOammr69+9vNm3aVOpY119/vTl06JCpVauW3Zg6duxojDHm4osv9vr80Gg0Go1Go9F8vnk9ABqNRqPRaDSn26nkcUJCgk3/yJEjjTHG3HbbbV6PsSKbM8njKlWqeD0GT7XmzZsbY4xp376912P5e4uJiTFFRUUmNTXVpv/hhx82xhhz8803W/veeustU1RUZBo2bGjtO/fcc83OnTvNypUrrX0PPvig2bp1q/XnxMREc+LECes/loSFhZn169ebxx9/vMy4wsPDzYEDB8ywYcO8Pkc0Go1Go9FoNN9ulK0AAAABZfHixZL+KAFwukaNGunTTz/VgQMHVFBQoBUrVuiWW24ptX+1atU0evRoZWRk6Pjx48rMzFRqaqpq1qxp3aZ27dr68MMPlZ2drYKCAq1evVr33HOPzXHq1asnY4wGDx6s+++/X1u3btXx48f1888/67LLLrPZNjo6Wh999JEyMzN1/Phx7dmzR7NmzVK9evUkSRkZGWratKnatWtnLdOxcOFCSX+V77jmmmuUnJysnJwc7d69W5KUkpKijIyMUuc4dOhQGWNK9d95551avny5jh49qoMHD+qHH37Qddddd8YYyqp53KNHD61cuVLHjh3T/v37NWXKlFIlRVJSUpSfn6+6devqiy++UH5+vvbt26c33nhDoaFn/qratWtXFRYW6scff7Tpj4uLU3JysjZt2qRjx44pNzdXM2bMsM7p6cpzzSMiIjR06FBt3rxZBQUF2rNnj2bOnKmLL764zNjatGmjSpUqadq0aTb9p37u1auXta9t27ZatWqVfvvtN2tfQUGB5syZo4SEBDVo0ECSdO655+rw4cPWbQ4ePKjQ0FCde+65kqRHHnlEYWFhmjBhQplxlZSUaNGiRerSpUuZ2wAAAACSFO7tAAAAACrSRRddJEk6dOiQte+SSy7RkiVLlJWVpddff11Hjx5Vz549NWvWLN16662aNWuWJCkyMlKLFy9WkyZN9NFHH+mXX35RrVq11LlzZ11wwQU6cOCAzjnnHC1atEgNGjTQW2+9pYyMDN12221KTU1V9erVNX78eJt4evfuLYvFovfee0/GGD399NP6/PPPdfHFF6ukpESSNHPmTP3zn//UhAkTtGPHDp1//vm67rrrFBcXp507d2rQoEGaMGGCfv/9d7366quSpJycHJtx3n77be3fv1/Dhw9XZGSk0/P20ksvadiwYVqyZIleeuklFRUVqXXr1mrfvr2+++67csVwuj59+mjSpEn6+eefNWTIEEVHR2vgwIG66qqr1KJFCx05csS6bVhYmObPn6/ly5frySefVIcOHfTkk09q27Ztevfddx3GfeWVV+rXX3+1zuUprVq10pVXXqlp06Zp9+7duuiii/TQQw9p0aJFuuSSS1RQUCCpfNc8NDRUX375pTp06KCpU6dq3Lhxslgsuu6669S0aVNt377dbmwRERGSZB3rlGPHjkmSEhISbLY9/Z61t+3WrVu1YsUKvfnmm+rVq5eWLVum559/Xlu2bNHhw4dVq1YtDR06VHfddVep+fi79PR0denSRRaLRfn5+Q63BQAAQHDz+vJnGo1Go9FoNGfbqbIV7du3NzVr1jSxsbGme/fuJicnxxQUFJjY2Fjrtt99951Zs2aNqVy5ss0xfvrpJ7N582brzy+//LIxxpiuXbuWOe5jjz1mjDGmd+/e1r7w8HCzZMkSk5eXZ6pWrWokmXr16hljjNm/f7+pXr26ddtbbrnFGGNMp06djCRTrVo1Y4wxgwcPdni+ZZWMODUPP/74owkNDbV5LSUlxWRkZJTaZ+jQocb8sfTYSDL169c3JSUlZubMmQ7rFpcVQ2JiojHGmMTEROt8ZGdnm7Vr19rUnr7pppuMMca8/PLLNjGeql19+jHT09PNihUrzngf7Nq1y3z66ael+s8555xSfa1btzbGGHPXXXc5dc379u1rjDFm0KBBTt2jLVq0MMYY8/zzz9v0X3/99cYYY/Ly8qx9s2fPNgcPHrTeP6fakiVLjDHGPPHEE9a+sWPHmlNyc3NNu3btjCTz3nvvma+//rpcsfXq1csYY0yrVq3O+r1Io9FoNBqNRgvcRtkKAADg177//nvl5uZq9+7dmjlzpo4eParOnTsrKytLknTeeeepffv2mjFjhiwWi2rWrGlt8+fPV8OGDa2lFG699VatXr3auhLZnptuukl79+7V1KlTrX0lJSUaP368LBZLqdIN06dPtykzcKqsxqlyBwUFBSosLFS7du1UvXp1l+fhgw8+0MmTJ13at2vXrgoLC9Pw4cPtlrNw1mWXXabo6Gi9/fbbKiwstPZ//fXX2rhxozp16lRqn7+vMF68eLHDkhCn1KxZ0+6K3ePHj1v/HB4erho1amjr1q06dOiQWrZsaX2tPNf81ltv1f79+x2WgrBn1apVWrZsmZ555hn17dtX9erVU8eOHfXee++pqKjIWmpCkt555x2dd955mj59upo3b65//OMfGjNmjLXEyenbDho0SHFxcbr88stVr149LVq0SM2aNdM999yjxx9/XFFRUZoyZYp2796thQsXqnHjxqViOzVntWrVcuqcAAAAEFxIHgMAAL82YMAAdejQQbfeequ++uor1apVyyZh2aBBA4WGhuqVV15Rbm6uTRs+fLgk6fzzz5f0R53kX3/91eF49erV05YtW0olWTdu3Gh9/XS7du2y+flUIvm8886TJBUVFemZZ57RjTfeqJycHP3www966qmnFB0d7dQ82KttXF7169fXiRMntGHDBpePcbpTc7B58+ZSr23atKnUHBUUFCg3N9em79ChQ6pRo0a5xgsJCSnVd84552jYsGHatWuXCgsLdeDAAeXm5uq8885TtWrVrNuV55rXr19fmzdv1okTJ8oVz+luvfVWrVmzRikpKdqxY4fmzp2rGTNmaNWqVfr999+t282bN0+PPPKIrrnmGmvt406dOun555+XJJttJSkzM1MrVqzQ0aNHJUnjx4/Xu+++q82bNys5OVkXXnihunTponXr1mnu3LkKCwuz2f/UnFXEPxYAAAAgcFHzGAAA+LWff/5Z6enpkqRZs2bpp59+0ieffKJGjRrp6NGj1oeuvfHGG5o/f77dY2zdutVt8ZWVcDw94Tlu3DjNnTtXXbt21Q033KARI0ZoyJAhat++vVavXl2ucf5eV1cqOzH490Sit7mSlD3lwIED1kT86SZMmKB7771XY8eOVVpamo4cOSJjjKZNm1auB/FVlD179qht27Zq0KCBYmJitGXLFuXk5CgrK8vm4XiSlJycrJSUFP3rX/9SUVGRVq9erfvuu0+SSm17up49e6pJkybq3LmzQkND1bNnT11//fVKT0/X+vXrdf/99+uKK67QkiVLrPucmrO/J+0BAACA05E8BgAAAePkyZMaMmSIFi1apEceeUSjRo2yPsysuLhY33//vcP9t23bpqZNmzrcZufOnfrXv/6lkJAQm+TsqdIAO3fudCn27du3a/To0Ro9erQaNGig1atXa/Dgwbr77rslubZC9NChQ3ZLYfx95e+2bdsUFhamSy65RGvWrCnzeOWN4dQcNGrUSAsXLrR5rVGjRi7PkT2bNm1SfHx8qf4ePXooNTVVTz75pLUvIiKi1HyU55pv27ZNrVu3Vnh4+BkfRFeWrVu3Wv+RokmTJqpbt64mTZpUartjx45p2bJl1p87dOigY8eO2SR+T3fuuefqjTfe0IsvvqgjR47o/PPPV+XKlbVnzx5Jf5TvOHTokGJjY232i4+P14kTJxwmpQEAAADKVgAAgIDyww8/aPny5Ro0aJAiIiK0f/9+LVy4UA8+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lZXlckwAAAAAAAAAgkAA1Dy+6qqrbH4uKCjQqlWrXE4cSy4kjydMmKAHHnhATz/9tFq0aKEWLVro6aef1n333afx48e7HEhycrKaNm2qXr16uXwMSRo5cqSioqKsLTY29qyOBwAAAAAAACDABUDN4//973/avn27Xn31VTVp0qRCjun0UuHevXurV69emjdvnrVv3bp1yszM1NSpUzVgwACng5gwYYJuvvlmXXPNNTYrhbOzsxUREaFq1arZrD6Ojo5Wdna23WMVFRWpqMhRgRIAAAAAAAAAOE2R/L7mcd26ddWrVy/dcccdevbZZ7V27Vp9/PHHmjp1qsvVGZxeeVxYWKgdO3aU6s/IyHApaTthwgR169ZN7du3L3Xc9PR0FRUVKSkpydrXsGFD1atXT2lpaU6PhT/wRNvgFhkSUmaDe/n7E6W5b86er9wDXEvAv1T0ZwffBQD38pXf9xXNk59FgTqHAHyckeNVx37wEXTgwAElJyfr6quvVv369fXpp5+qT58+2rFjh77//nuXjul08vitt97Siy++qMqVK1v7KleurOeff15vvfWWU8dKTk7WXXfdpd69eys/P1/R0dGKjo7WOeecI0nKy8vTxIkTNXr0aLVr104tW7ZUSkqKli5davdheQAAAAAAAADgtACoeXy6HTt26PXXX9ezzz6rdevWKTEx0aXjlKtsxcyZM21+7tChg3bv3q01a9ZIkpo1a6bKlSs7ncE+VeLihx9+sOnv27evUlNTJUmPP/64Tp48qZkzZyoiIkLz5893qTQGAAAAAAAAANh1pgSxHyWPr7zySt15553q0aOHzjnnHM2ePVtDhgxx6VjlSh6fXm9YKp1MzszMdGnwkHL817jCwkI98sgjeuSRR1waAwAAAAAAAAAcKv6zOXrdx7322mvq1auX6tatq++++04DBw7U7NmzVVBQ4PIxy5U87tevn8sDAAAAAAAAAIBPO1Xb2NHrPu6aa67RG2+8oRkzZujAgQMVcsxyJY/hmxw9LMDRA094GArwF1ffR67gvedenryWrqroOHzlnH0lDn/GHMIRR/dAWfeOv983gXperuDzwf/4ynWp6PeRJ88rUL8z+Qrm4+wxhwEqAMpWXH311RV+TJeSx7feeqt69uypuLg4mwfnSVJCQkKFBAYAAAAAAAAAHnFSjhPEPrry+JZbbtE333yj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x/OUU5+369evV0lJifXnadOmVfhYGRkZysnJUXj4X88JbteunYwxGjNmTIWO5cl7wxs8+X721O/nQP2s9+R5neKp7x2e/F7vye8dnuSp95cnP+u9oVu3blq5cqVWrVqljRs36vvvv1dISIhbxgrEaxYeHm59L//666/65Zdf9MUXX7j977Xu/p5ojCn1eeTuMT15L3qCN+bQEwL9MxGBzeuFlz3RJk2aZObMmWOqV69u7evRo4eJj4/3emwV0TIyMkyzZs3cPs59991nFi1aZA4ePGgiIyO9ft7+NHfemENPjZWRkWG2b99uHnjgAWvfihUrTGJioluvV926dc3hw4dNq1at/P68Pv74Y/PZZ5+ZKlWqGEmmXr16ZsOGDaZfv35+Pdbfr1lcXJw5fPiwufTSS90ylr0x3dGqV69uduzYYS677DIjyfTr18/8+OOPJiQkpMLH6t69u1m5cqVNX0JCgsnJyTHh4eFunUdPtHr16plDhw65/X5YsWKF6d69u7VvypQp5ueffzZjxozx23vDG82T72dP/X4O1M96T57Xqeap7x2e/F7vye8dnmye/v7ric96T7eYmBizf/9+ExcXZ+1r0aIF18yJNmXKFPPFF1/YvJeTkpJMz5493Tquu+fSGGOqVavmsTE9fS96onl6Dj3dAvEzkRbwzesBuL3Vr1/fHD161NSsWdPrsbireeqDdOnSpebGG280s2bNcluiKVDnzhtz6KmxMjIyzD333GMyMzPNueeeayTPJI8lmWXLlpkePXr49Xk1aNDAHD161NSoUcOm/8YbbzQ7d+7027HKumbLly83t956q1vGKmtMd7QbbrjB/Prrr6ZBgwZm9+7dbvvHyPDwcJOTk2OToEtOTjZvvPGGW8/PU81TyeMBAwaYL7/80kgyUVFRZsuWLWb48OEVnjz25L3hjebJ97Mnk8eB9lnvyfM6vXnie4env9d78nuHJ1sgJiI93Zo1a2ays7NN1apVuWYutAYNGpjff//dnHfeeR6/doGWPPb0veiJRvKYRvOtFhRlK1q2bKktW7bowIED3g7FrzVp0kQXXnih5s+fr4kTJ+q+++7zdkgVZvr06Tb/Beycc85xyzienENPX681a9Zo4cKFevzxx906zukaNWqkmjVratGiRW4bwxPn1aJFC23ZskUHDx606U9LS1NcXJxq1arll2PZ07RpUzVu3Fhr1qxx6zieMH/+fC1evFgrVqzQ8OHDlZGR4ZZxSkpKNGXKFPXr10+SFBERoTvuuEMTJ050y3iBasmSJbroootUp04d3XHHHfr000914sQJt4zlqXvD2zzxfvbU7+dA+6w/xZO/mz31vcOb3+s98b3Dkzz1/gpUa9eu1U8//aSdO3fq888/15NPPqm6deu6dcxAumYtWrTQ1q1bdejQIW+H4ve8cS8CCC5BkTxGxbjvvvs0efJknTx5Ul9//bXi4+PVuHFjb4dVIW6//Xa1aNHC2o4fP+6WcTw5h964Xi+++KIGDhyoGjVquHWc6dOna8OGDdqwYYMmTJig3Nxct47nqfMKZKf+svPee++pX79+2rp1q7dDqhBvvPGGQkND9f7777t1nIkTJ+rOO+9UpUqV1L17d23cuFGbNm1y65iBaMqUKerbt6/69eunjz76yK1jeere8AZPvp899ftZCtzPek+dVyB/T/T09w5P8eT7KxAZY9SjRw9deeWVmjdvnq666iqtX79e9evXd9uYgXzNLr74YmttcXf/jvYWY4zbjuvpe9Fb3DWHABwLiuTxL7/8on/84x8B95cBTwoPD9fdd9+tPn36KCMjQ1u3blWVKlUCavWxu3lyDr11vXbu3KlPPvlEL7zwglvHuf3223XJJZfo+uuv1+uvv+7WBxxK7j+vVatW2f2MatOmjXbt2lWhf0n15FinO/WXnauuukozZ850yxjecOLECZ08edLt42zcuFFbt27VLbfcon79+rHq2EWTJ0/WY489puPHj7v9HzA8dW94Q6C+nwPps/50nvjd7MnvHd74Xu/p7x3wL5s3b9b777+vbt26admyZercubO3Q/ILq1atUoMGDVS9enVJ0vbt29WiRQuNHDlS5513nneDO0v79u1TzZo1bfpq1aqlffv2uXXcQLoXvTWHAOwLiuTxtm3bNHPmTE2cONHmiZ3du3dXfHy8FyPzH507d9b27dt1wQUXKD4+XvHx8briiit099132zy9HmXz5Bx683q98soruuuuuzzyX6W+//57vfPOO3rllVfcPpY7z2vr1q2aO3eu3n//fZ177rmSpHr16unNN9/UiBEj/HYsVKyJEyfqueee0+WXX67p06d7Oxy/tHfvXg0ZMkTPPPOMt0OBjwqUz/q/c/fvZk9+7/Dm93pPfu+A76tbt66uvPJK68/Vq1dXfHy8tm3b5sWo/MfWrVs1e/bsUu/lyMhIL0ZVMebPn68HH3zQ+vPdd9+t7du3Kzs72y3jBeK96Ok5BOBYUCSPJalfv35as2aNli9frl9//VUbNmzQ9ddfX6ruHOy777779PHHH9v0bdq0SVlZWbrlllu8FFXF+Xv9sHbt2lX4GJ6cQ29erwMHDmj8+PEeq7M1YsQIXX311WrZsqVbx3H3ed1zzz3avn271q1bpw0bNujLL7/UG2+8oQ8//NCvx0LFmT59uho1aqRPP/1UR48e9XY4fmvSpElatmyZt8NAOXni9/PpAumz/nTuPi9Pf+/w5vd6T33v8ARPv78CTXh4uF566SVt3rxZq1at0uLFi5Wamqo5c+a4bcxAu2Z9+/bVunXrrO/lxYsXq0OHDho1apS3QzsrgwYNUp06dbRmzRqtWrVKvXv31m233ea28bxxL7qbp+cQgGMh+uPJeQAAAAAAAAAAWAXNymMAAAAAAAAAQPmRPAYAAAAAAAAAlELyGAAAAAAAAABQCsljAAAAAAAAAEApJI8BAAAAAAAAAKWQPAYAAAAAAAAAlELyGAAAAAAAAABQCsljAAAAVJjExEQZY1StWjWH22VkZGjgwIEeigoAAACAK0geAwAABKGUlBQZY2SMUWFhobZs2aIXX3xRYWFhZ3XcpUuXKiYmRkeOHJEk9enTR4cOHSq1XatWrfT++++f1VgAAAAA3Cvc2wEAAADAO7755hvde++9ioiI0E033aTk5GQVFxfr9ddfd/mYxcXFysnJOeN2ubm5Lo8BAAAAwDNYeQwAABCkCgsLlZOTo127dundd9/VggUL1LlzZ1WvXl2pqak6ePCgjh49qq+//loNGjSw7hcXF6c5c+bo4MGD+v333/Xrr7/qxhtvlGRbtiIxMVGTJk1S9erVrauchw4dKql02YoLL7xQs2bNUn5+vo4cOaLp06fr/PPPt74+dOhQrVq1SnfddZcyMjJ0+PBhTZ06VVWrVvXQbAEAAADBh+QxAAAAJEkFBQWqXLmyJk2apMsuu0ydO3dWmzZtFBISoq+//lrh4X/8p7Xk5GRFRETommuu0aWXXqpnnnlGv//+e6njLV26VAMHDtSRI0cUExOjmJgY/ec//ym1XUhIiGbPnq0aNWooMTFR1113nS6++GJNnz7dZrv69eura9euuvnmm3XzzTcrMTFRzz77rHsmAwAAAABlKwAAACAlJSXphhtu0DfffKNu3brpyiuvVFpamiTpzjvvVGZmprp27arPPvtMcXFxmjlzpn799VdJf6witqe4uFhHjhyRMcZhKYukpCRdeumlio+P1+7duyVJ99xzjzZs2KDLLrtMK1eulCSFhoaqb9++1kT1lClTlJSUpBdeeKHC5gEAAADAX1h5DAAAEKRuvvlm5efn6/jx4/rmm280ffp0TZo0ScXFxVq+fLl1u4MHD2rz5s1q0qSJJGn8+PF64YUX9NNPP+nll1/WpZdeelZxNGnSRJmZmdbEsSRt3LhRhw4dso4pSTt27LBZ4bx3716b0hYAAAAAKhbJYwAAgCC1cOFCNW/eXP/4xz907rnnqm/fvjLGnHG/iRMn6uKLL9aUKVN06aWXauXKlXrkkUfcHm9xcbHNz8YYhYbydRYAAABwF75tAwAABKmjR49q27ZtyszM1IkTJyT9seK3UqVKat26tXW7GjVqqFGjRtqwYYO1b/fu3Xrvvfd066236s0339T9999vd4yioiKFhYU5jGPjxo268MILdcEFF1j7mjRpovPOO89mTAAAAACeRfIYAAAAVlu3btWsWbP0wQcf6KqrrtK//vUv/fe//1VWVpZmz54tSRozZoyuv/56XXTRRWrRooWuvfZabdy40e7xduzYIYvFovbt26tmzZo699xzS22zYMECrVu3Th9//LFatGihVq1aafLkyVq0aJHS09Pder4AAAAAykbyGAAAADbuvfdepaen68svv1RaWppCQkJ00003qaSkRJIUFham5ORkbdy4UfPmzdNvv/2mAQMG2D1WWlqa3nnnHU2fPl25ubl6+umn7W7XpUsXHTp0SD/++KMWLFig7du36/bbb3fbOQIAAAA4sxBJZy5sBwAAAAAAAAAIKqw8BgAAAAAAAACUQvIYAAAAAAAAAFAKyWMAAAAAAAAAQCkkjwEAAAAAAAAApZA8BgAAAAAAAACUQvIYAAAAAAAAAFAKyWMAAAAAAAAAQCkkjwEAAAAAAAAApZA8BgAAAAAAAACUQvIYAAAAAAAAAFAKyWMAAAAAAAAAQCkkjwEAAAAAAAAApfw/kPbIUvW6sEQAAAAASUVORK5CYII=" + }, + "metadata": {}, + "output_type": "display_data", + "jetTransient": { + "display_id": null + } + } + ], + "execution_count": 85 }, { "cell_type": "code", @@ -396,6 +482,10 @@ "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-31T18:43:55.864990961Z", + "start_time": "2026-05-31T18:43:54.630647593Z" } }, "source": [ @@ -430,8 +520,18 @@ "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": [], - "execution_count": null + "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 : 'MRL.ME PSHMAEL. SMME YEARS AGO NEVER MIND HOWALONG PRECISELY HAVING LITTLE MONEY IN MY POCKET AND NOTHING PARTICULAR TO INTEREST ME ON SHORE I THOUGNT I WOULDTSAIL ABOUT A LITTLE.'\n", + "Next-step accuracy : 171/179 = 96%\n" + ] + } + ], + "execution_count": 86 } ], "metadata": {