From 9eaceb889aeb1ba822210fa9611ac3033190b5d3 Mon Sep 17 00:00:00 2001 From: Y-yyyyq <648203301@qq.com> Date: Sun, 7 Dec 2025 16:39:42 +0800 Subject: [PATCH 01/20] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=BB=93=E6=9E=9C?= =?UTF-8?q?=E8=BE=93=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../0_attention-cues.ipynb | 798 ++++++++++++++++-- 1 file changed, 750 insertions(+), 48 deletions(-) diff --git a/chapter_10_attention_mechanisms/0_attention-cues.ipynb b/chapter_10_attention_mechanisms/0_attention-cues.ipynb index 0e6adeb..b6f379b 100644 --- a/chapter_10_attention_mechanisms/0_attention-cues.ipynb +++ b/chapter_10_attention_mechanisms/0_attention-cues.ipynb @@ -2,32 +2,32 @@ "cells": [ { "cell_type": "markdown", + "metadata": {}, "source": [ "# Attention Cue" - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [ - "import sys\n", - "sys.path.append('..')" - ], + "execution_count": 1, "metadata": { "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, "pycharm": { "name": "#%%\n" } - } + }, + "outputs": [], + "source": [ + "import sys\n", + "sys.path.append('..')" + ] }, { "cell_type": "markdown", "metadata": { - "collapsed": true, "pycharm": { "name": "#%% md\n" } @@ -38,30 +38,40 @@ }, { "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [ - "from d2l import mindspore as d2l" - ], + "execution_count": 3, "metadata": { "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, "pycharm": { "name": "#%%\n" } - } + }, + "outputs": [], + "source": [ + "from d2l import mindspore as d2l" + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "为了可视化注意力权重,需要定义一个`show_heatmaps`函数。" - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "#@save\n", @@ -82,58 +92,750 @@ " if titles:\n", " ax.set_title(titles[j])\n", " fig.colorbar(pcm, ax=axes, shrink=0.6);" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "下面使用一个简单的例子进行演示" - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [ - "attention_weights = d2l.eye(10).reshape((1, 1, 10, 10))\n", - "show_heatmaps(attention_weights, xlabel='Keys', ylabel='Queries')" - ], + "execution_count": 5, "metadata": { "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, "pycharm": { "name": "#%%\n" } - } + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2025-12-07T15:42:40.282731\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.10.7, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "attention_weights = d2l.eye(10).reshape((1, 1, 10, 10))\n", + "show_heatmaps(attention_weights, xlabel='Keys', ylabel='Queries')" + ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3.10", "language": "python", - "name": "python3" + "name": "py310" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.6" + "pygments_lexer": "ipython3", + "version": "3.10.14" } }, "nbformat": 4, - "nbformat_minor": 0 -} \ No newline at end of file + "nbformat_minor": 4 +} From 42b9b8e757b2939b69419b104033ac3317666dbf Mon Sep 17 00:00:00 2001 From: Y-yyyyq <648203301@qq.com> Date: Sun, 7 Dec 2025 16:40:58 +0800 Subject: [PATCH 02/20] Remove empty code cell in adadelta.ipynb --- chapter_11_optimization/adadelta.ipynb | 8 -------- 1 file changed, 8 deletions(-) diff --git a/chapter_11_optimization/adadelta.ipynb b/chapter_11_optimization/adadelta.ipynb index d190699..a72f92b 100644 --- a/chapter_11_optimization/adadelta.ipynb +++ b/chapter_11_optimization/adadelta.ipynb @@ -1429,14 +1429,6 @@ "trainer = mindspore.nn.Adadelta\n", "d2l.train_concise_ch11(trainer, {'rho': 0.9}, data_iter)" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "9ec4ddb9", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { From ad9499ad27dd3d3bdf9b853a2ea9c0ec83a35c32 Mon Sep 17 00:00:00 2001 From: Y-yyyyq <648203301@qq.com> Date: Sun, 7 Dec 2025 16:41:28 +0800 Subject: [PATCH 03/20] Remove empty code cell from adagrad.ipynb --- chapter_11_optimization/adagrad.ipynb | 8 -------- 1 file changed, 8 deletions(-) diff --git a/chapter_11_optimization/adagrad.ipynb b/chapter_11_optimization/adagrad.ipynb index d0ad4d2..17a4424 100644 --- a/chapter_11_optimization/adagrad.ipynb +++ b/chapter_11_optimization/adagrad.ipynb @@ -3254,14 +3254,6 @@ "trainer = mindspore.nn.Adagrad\n", "d2l.train_concise_ch11(trainer, {'learning_rate': 0.1}, data_iter)" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2e2b346e", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { From b14770223a210f82ec7201647f92443a1f68cf25 Mon Sep 17 00:00:00 2001 From: Y-yyyyq <648203301@qq.com> Date: Sun, 7 Dec 2025 16:42:02 +0800 Subject: [PATCH 04/20] Remove empty code cell from adam.ipynb --- chapter_11_optimization/adam.ipynb | 8 -------- 1 file changed, 8 deletions(-) diff --git a/chapter_11_optimization/adam.ipynb b/chapter_11_optimization/adam.ipynb index a78aa17..4927931 100644 --- a/chapter_11_optimization/adam.ipynb +++ b/chapter_11_optimization/adam.ipynb @@ -2138,14 +2138,6 @@ "d2l.train_ch11(yogi, init_adam_states(feature_dim),\n", " {'lr': 0.01, 't': 1}, data_iter, feature_dim);" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "0a611fda", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { From 19cbaa960d4cce2466bde7a17c33d8c95b30cab6 Mon Sep 17 00:00:00 2001 From: Y-yyyyq <648203301@qq.com> Date: Sun, 7 Dec 2025 16:42:28 +0800 Subject: [PATCH 05/20] Remove empty code cell from convexity.ipynb --- chapter_11_optimization/convexity.ipynb | 8 -------- 1 file changed, 8 deletions(-) diff --git a/chapter_11_optimization/convexity.ipynb b/chapter_11_optimization/convexity.ipynb index c42b401..d1b4afa 100644 --- a/chapter_11_optimization/convexity.ipynb +++ b/chapter_11_optimization/convexity.ipynb @@ -1602,14 +1602,6 @@ "d2l.set_figsize()\n", "d2l.plot([x, segment], [f(x), f(segment)], 'x', 'f(x)')" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "eb71705e", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { From df259f133b1a7150472181362f67aeff098ba8a4 Mon Sep 17 00:00:00 2001 From: Y-yyyyq <648203301@qq.com> Date: Sun, 7 Dec 2025 16:43:05 +0800 Subject: [PATCH 06/20] Update gd.ipynb --- chapter_11_optimization/gd.ipynb | 8 -------- 1 file changed, 8 deletions(-) diff --git a/chapter_11_optimization/gd.ipynb b/chapter_11_optimization/gd.ipynb index 27f4a57..ed814ea 100644 --- a/chapter_11_optimization/gd.ipynb +++ b/chapter_11_optimization/gd.ipynb @@ -5274,14 +5274,6 @@ "source": [ "show_trace(newton(0.5), f)" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "28611729", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { From df2e1255e20b3dd2bac6b7167f646126e66ac559 Mon Sep 17 00:00:00 2001 From: Y-yyyyq <648203301@qq.com> Date: Sun, 7 Dec 2025 16:43:35 +0800 Subject: [PATCH 07/20] Remove empty code cell from lr-scheduler.ipynb --- chapter_11_optimization/lr-scheduler.ipynb | 8 -------- 1 file changed, 8 deletions(-) diff --git a/chapter_11_optimization/lr-scheduler.ipynb b/chapter_11_optimization/lr-scheduler.ipynb index 397fb76..41cad68 100644 --- a/chapter_11_optimization/lr-scheduler.ipynb +++ b/chapter_11_optimization/lr-scheduler.ipynb @@ -5719,14 +5719,6 @@ "trainer = nn.SGD(net.trainable_params(), lr_list)\n", "train(net, train_iter, test_iter, num_epochs, loss, trainer)" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7fa1a852", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { From 86c10d6f3866c13ca6194bba5d215b621431e5c4 Mon Sep 17 00:00:00 2001 From: Y-yyyyq <648203301@qq.com> Date: Sun, 7 Dec 2025 16:44:10 +0800 Subject: [PATCH 08/20] Remove empty code cell from minibatch-sgd.ipynb --- chapter_11_optimization/minibatch-sgd.ipynb | 8 -------- 1 file changed, 8 deletions(-) diff --git a/chapter_11_optimization/minibatch-sgd.ipynb b/chapter_11_optimization/minibatch-sgd.ipynb index 2b0e62f..dba542f 100644 --- a/chapter_11_optimization/minibatch-sgd.ipynb +++ b/chapter_11_optimization/minibatch-sgd.ipynb @@ -5038,14 +5038,6 @@ "trainer = nn.SGD\n", "train_concise_ch11(trainer, {'learning_rate': 0.01}, data_iter)" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "abc4fa58", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { From 0b30cb288425b75401bcae8d99b51b4a2e815a7e Mon Sep 17 00:00:00 2001 From: Y-yyyyq <648203301@qq.com> Date: Sun, 7 Dec 2025 16:44:43 +0800 Subject: [PATCH 09/20] Remove empty code cell from momentum.ipynb --- chapter_11_optimization/momentum.ipynb | 8 -------- 1 file changed, 8 deletions(-) diff --git a/chapter_11_optimization/momentum.ipynb b/chapter_11_optimization/momentum.ipynb index 9b6650f..3373291 100644 --- a/chapter_11_optimization/momentum.ipynb +++ b/chapter_11_optimization/momentum.ipynb @@ -8225,14 +8225,6 @@ "d2l.plt.xlabel('time')\n", "d2l.plt.legend();" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d5850a00", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { From e14a569a8151b7664efec187cc805ed93f151ca0 Mon Sep 17 00:00:00 2001 From: Y-yyyyq <648203301@qq.com> Date: Sun, 7 Dec 2025 16:45:08 +0800 Subject: [PATCH 10/20] Remove empty code cell from optimization-intro.ipynb --- chapter_11_optimization/optimization-intro.ipynb | 8 -------- 1 file changed, 8 deletions(-) diff --git a/chapter_11_optimization/optimization-intro.ipynb b/chapter_11_optimization/optimization-intro.ipynb index 82a0224..ce841a5 100644 --- a/chapter_11_optimization/optimization-intro.ipynb +++ b/chapter_11_optimization/optimization-intro.ipynb @@ -6190,14 +6190,6 @@ "d2l.plot(x, [d2l.tanh(x)], 'x', 'f(x)')\n", "annotate('vanishing gradient', (4, 1), (2, 0.0))" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "9c531836", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { From fef707aeadcb9be72fcb1bd8b076bae6d9c6de79 Mon Sep 17 00:00:00 2001 From: Y-yyyyq <648203301@qq.com> Date: Sun, 7 Dec 2025 16:45:33 +0800 Subject: [PATCH 11/20] Remove empty code cell in rmsprop.ipynb --- chapter_11_optimization/rmsprop.ipynb | 8 -------- 1 file changed, 8 deletions(-) diff --git a/chapter_11_optimization/rmsprop.ipynb b/chapter_11_optimization/rmsprop.ipynb index eeb4dfa..4320ffa 100644 --- a/chapter_11_optimization/rmsprop.ipynb +++ b/chapter_11_optimization/rmsprop.ipynb @@ -2996,14 +2996,6 @@ "d2l.train_concise_ch11(trainer, {'learning_rate': 0.01, 'decay': 0.9},\n", " data_iter)" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b2676f86", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { From e9509d7cdf3a2188f652ca647c63617158a0f128 Mon Sep 17 00:00:00 2001 From: Y-yyyyq <648203301@qq.com> Date: Sun, 7 Dec 2025 16:46:06 +0800 Subject: [PATCH 12/20] Update sgd.ipynb --- chapter_11_optimization/sgd.ipynb | 8 -------- 1 file changed, 8 deletions(-) diff --git a/chapter_11_optimization/sgd.ipynb b/chapter_11_optimization/sgd.ipynb index 634a296..e3ac6e5 100644 --- a/chapter_11_optimization/sgd.ipynb +++ b/chapter_11_optimization/sgd.ipynb @@ -3377,14 +3377,6 @@ "lr = polynomial_lr\n", "d2l.show_trace_2d(f, d2l.train_2d(sgd, steps=50, f_grad=f_grad))" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b8ee2734", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { From d965c7a23528dfd6756803d357ad3443b838ff5d Mon Sep 17 00:00:00 2001 From: Y-yyyyq <648203301@qq.com> Date: Mon, 8 Dec 2025 18:00:49 +0800 Subject: [PATCH 13/20] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dmindspore2.7.1=E5=85=BC?= =?UTF-8?q?=E5=AE=B9=E6=80=A7=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../3_multihead-attention.ipynb | 61 +++++++++++-------- 1 file changed, 37 insertions(+), 24 deletions(-) diff --git a/chapter_10_attention_mechanisms/3_multihead-attention.ipynb b/chapter_10_attention_mechanisms/3_multihead-attention.ipynb index fa017ac..0a161d0 100644 --- a/chapter_10_attention_mechanisms/3_multihead-attention.ipynb +++ b/chapter_10_attention_mechanisms/3_multihead-attention.ipynb @@ -24,7 +24,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": { "origin_pos": 2, "tab": [ @@ -35,7 +35,8 @@ "source": [ "from d2l import mindspore as d2l\n", "import mindspore\n", - "from mindspore import nn" + "from mindspore import nn\n", + "import mindspore.mint as mint" ] }, { @@ -71,24 +72,28 @@ " self.W_k = nn.Dense(key_size, num_hiddens, has_bias=has_bias)\n", " self.W_v = nn.Dense(value_size, num_hiddens, has_bias=has_bias)\n", " self.W_o = nn.Dense(num_hiddens, num_hiddens, has_bias=has_bias)\n", + " # mint 中没有 expand_dims,保留 tile 和 reshape\n", + " self.tile = mint.tile \n", + " self.reshape = mint.reshape\n", + " # 移除 self.expand_dims = mint.expand_dims,将在 construct 中使用 Tensor 方法\n", "\n", " def construct(self, queries, keys, values, valid_lens):\n", " # queries,keys,values的形状:\n", " # (batch_size,查询或者“键-值”对的个数,num_hiddens)\n", - " # valid_lens 的形状:\n", - " # (batch_size,)或(batch_size,查询的个数)\n", - " # 经过变换后,输出的queries,keys,values 的形状:\n", - " # (batch_size*num_heads,查询或者“键-值”对的个数,\n", - " # num_hiddens/num_heads)\n", " queries = transpose_qkv(self.W_q(queries), self.num_heads)\n", " keys = transpose_qkv(self.W_k(keys), self.num_heads)\n", " values = transpose_qkv(self.W_v(values), self.num_heads)\n", "\n", " if valid_lens is not None:\n", - " # 在轴0,将第一项(标量或者矢量)复制num_heads次,\n", - " # 然后如此复制第二项,然后诸如此类。\n", - " valid_lens = d2l.repeat(\n", - " valid_lens, repeats=self.num_heads, axis=0)\n", + " \n", + " # 1. 扩展 valid_lens 形状至 (batch_size, 1)\n", + " valid_lens = valid_lens.expand_dims(1)\n", + " \n", + " # 2. 沿着轴 1 (新增维度) 重复 num_heads 次,形状变为 (batch_size, num_heads)\n", + " valid_lens = self.tile(valid_lens, (1, self.num_heads))\n", + " \n", + " # 3. 展平为 (batch_size * num_heads,)\n", + " valid_lens = self.reshape(valid_lens, (-1,))\n", "\n", " # output的形状:(batch_size*num_heads,查询的个数,\n", " # num_hiddens/num_heads)\n", @@ -167,18 +172,26 @@ ] }, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[WARNING] ME(42683:281472939304512,MainProcess):2025-12-08-17:59:06.972.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", + "[WARNING] ME(42683:281472939304512,MainProcess):2025-12-08-17:59:06.984.000 [mindspore/nn/layer/basic.py:200] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n" + ] + }, { "data": { "text/plain": [ - "MultiHeadAttention<\n", - " (attention): DotProductAttention<\n", - " (dropout): Dropout\n", - " >\n", - " (W_q): Dense\n", - " (W_k): Dense\n", - " (W_v): Dense\n", - " (W_o): Dense\n", - " >" + "MultiHeadAttention(\n", + " (attention): DotProductAttention(\n", + " (dropout): Dropout(keep_prob=0.5)\n", + " )\n", + " (W_q): Dense(input_channels=100, output_channels=100)\n", + " (W_k): Dense(input_channels=100, output_channels=100)\n", + " (W_v): Dense(input_channels=100, output_channels=100)\n", + " (W_o): Dense(input_channels=100, output_channels=100)\n", + ")" ] }, "execution_count": 5, @@ -226,9 +239,9 @@ "metadata": { "celltoolbar": "Slideshow", "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3.10", "language": "python", - "name": "python3" + "name": "py310" }, "language_info": { "codemirror_mode": { @@ -240,7 +253,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.5" + "version": "3.10.14" }, "rise": { "autolaunch": true, @@ -251,4 +264,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} \ No newline at end of file +} From 0daa530313edf57a49fd10885459378c1f3d697a Mon Sep 17 00:00:00 2001 From: Y-yyyyq <648203301@qq.com> Date: Mon, 8 Dec 2025 18:13:29 +0800 Subject: [PATCH 14/20] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dmindspore2.7.1=E5=85=BC?= =?UTF-8?q?=E5=AE=B9=E6=80=A7=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...lf-attention-and-positional-encoding.ipynb | 1402 ++++++++--------- 1 file changed, 692 insertions(+), 710 deletions(-) diff --git a/chapter_10_attention_mechanisms/4_self-attention-and-positional-encoding.ipynb b/chapter_10_attention_mechanisms/4_self-attention-and-positional-encoding.ipynb index d526128..c6e7a69 100644 --- a/chapter_10_attention_mechanisms/4_self-attention-and-positional-encoding.ipynb +++ b/chapter_10_attention_mechanisms/4_self-attention-and-positional-encoding.ipynb @@ -24,7 +24,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": { "origin_pos": 2, "tab": [ @@ -35,7 +35,21 @@ "source": [ "from d2l import mindspore as d2l\n", "import mindspore\n", - "from mindspore import nn" + "from mindspore import nn\n", + "\n", + "def repeat(x, repeats, axis=0):\n", + " # 针对 d2l 中 valid_lens 的场景 (输入通常是 1D 张量)\n", + " if len(x.shape) == 1:\n", + " # 1. 升维:(Batch,) -> (Batch, 1)\n", + " x = x.reshape((-1, 1))\n", + " # 2. 平铺:在第1维复制 repeats 次 -> (Batch, repeats)\n", + " x = x.tile((1, repeats))\n", + " # 3. 展平:按行展开 -> (Batch * repeats, )\n", + " return x.reshape((-1,))\n", + " \n", + " return x.tile((repeats,)) \n", + "\n", + "d2l.repeat = repeat" ] }, { @@ -59,18 +73,26 @@ ] }, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[WARNING] ME(45659:281473853007424,MainProcess):2025-12-08-18:07:47.223.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", + "[WARNING] ME(45659:281473853007424,MainProcess):2025-12-08-18:07:47.235.000 [mindspore/nn/layer/basic.py:200] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n" + ] + }, { "data": { "text/plain": [ - "MultiHeadAttention<\n", - " (attention): DotProductAttention<\n", - " (dropout): Dropout\n", - " >\n", - " (W_q): Dense\n", - " (W_k): Dense\n", - " (W_v): Dense\n", - " (W_o): Dense\n", - " >" + "MultiHeadAttention(\n", + " (attention): DotProductAttention(\n", + " (dropout): Dropout(keep_prob=0.5)\n", + " )\n", + " (W_q): Dense(input_channels=100, output_channels=100)\n", + " (W_k): Dense(input_channels=100, output_channels=100)\n", + " (W_v): Dense(input_channels=100, output_channels=100)\n", + " (W_o): Dense(input_channels=100, output_channels=100)\n", + ")" ] }, "execution_count": 3, @@ -177,10 +199,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "[WARNING] KERNEL(882468,7eff72988740,python):2021-11-24-12:17:57.010.249 [mindspore/ccsrc/backend/kernel_compiler/gpu/gpu_kernel_factory.cc:96] ReducePrecision] Kernel [TensorScatterUpdate] does not support int64, cast input 1 to int32.\n", - "[WARNING] PRE_ACT(882468,7eff72988740,python):2021-11-24-12:17:57.010.406 [mindspore/ccsrc/backend/optimizer/gpu/reduce_precision_fusion.cc:83] Run] Reduce precision for [TensorScatterUpdate] input 1\n", - "[WARNING] KERNEL(882468,7eff72988740,python):2021-11-24-12:17:57.022.569 [mindspore/ccsrc/backend/kernel_compiler/gpu/gpu_kernel_factory.cc:96] ReducePrecision] Kernel [TensorScatterUpdate] does not support int64, cast input 1 to int32.\n", - "[WARNING] PRE_ACT(882468,7eff72988740,python):2021-11-24-12:17:57.022.689 [mindspore/ccsrc/backend/optimizer/gpu/reduce_precision_fusion.cc:83] Run] Reduce precision for [TensorScatterUpdate] input 1\n" + "[WARNING] ME(45659:281473853007424,MainProcess):2025-12-08-18:08:00.342.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n" ] }, { @@ -189,64 +208,64 @@ "\n", "\n", - "\n", + "\n", " \n", - " \n", + " \n", " \n", " \n", - " 2021-11-24T12:17:57.543051\n", + " 2025-12-08T18:08:00.780502\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.4.3, https://matplotlib.org/\n", + " Matplotlib v3.10.7, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p3be1caf49a)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -274,20 +293,20 @@ " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p3be1caf49a)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p3be1caf49a)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p3be1caf49a)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p3be1caf49a)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p3be1caf49a)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p3be1caf49a)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", - " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", - " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -1411,14 +1428,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "0 in binary is 000\n", - "1 in binary is 001\n", - "2 in binary is 010\n", - "3 in binary is 011\n", - "4 in binary is 100\n", - "5 in binary is 101\n", - "6 in binary is 110\n", - "7 in binary is 111\n" + "0的二进制是:000\n", + "1的二进制是:001\n", + "2的二进制是:010\n", + "3的二进制是:011\n", + "4的二进制是:100\n", + "5的二进制是:101\n", + "6的二进制是:110\n", + "7的二进制是:111\n" ] } ], @@ -1454,63 +1471,63 @@ "\n", "\n", - "\n", + "\n", " \n", - " \n", + " \n", " \n", " \n", - " 2021-11-24T12:17:57.863164\n", + " 2025-12-08T18:08:01.053412\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.4.3, https://matplotlib.org/\n", + " Matplotlib v3.10.7, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -1539,14 +1556,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", - " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1912,17 +1929,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1930,14 +1947,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -2399,9 +2381,9 @@ "metadata": { "celltoolbar": "Slideshow", "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3.10", "language": "python", - "name": "python3" + "name": "py310" }, "language_info": { "codemirror_mode": { @@ -2413,7 +2395,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.5" + "version": "3.10.14" }, "rise": { "autolaunch": true, @@ -2424,4 +2406,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} \ No newline at end of file +} From d7d754c3884b92a23680803ed58b6559f4170be0 Mon Sep 17 00:00:00 2001 From: Y-yyyyq <648203301@qq.com> Date: Mon, 8 Dec 2025 18:16:16 +0800 Subject: [PATCH 15/20] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dmindspore2.7.1=E5=85=BC?= =?UTF-8?q?=E5=AE=B9=E6=80=A7=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../5_transformer.ipynb | 3057 ++++++++--------- 1 file changed, 1518 insertions(+), 1539 deletions(-) diff --git a/chapter_10_attention_mechanisms/5_transformer.ipynb b/chapter_10_attention_mechanisms/5_transformer.ipynb index 96a69f0..ca4b272 100644 --- a/chapter_10_attention_mechanisms/5_transformer.ipynb +++ b/chapter_10_attention_mechanisms/5_transformer.ipynb @@ -24,7 +24,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": { "origin_pos": 2, "tab": [ @@ -37,7 +37,21 @@ "import math\n", "import pandas as pd\n", "import mindspore\n", - "from mindspore import nn" + "from mindspore import nn\n", + "\n", + "def repeat(x, repeats, axis=0):\n", + " # 针对 d2l 中 valid_lens 的场景 (输入通常是 1D 张量)\n", + " if len(x.shape) == 1:\n", + " # 1. 升维:(Batch,) -> (Batch, 1)\n", + " x = x.reshape((-1, 1))\n", + " # 2. 平铺:在第1维复制 repeats 次 -> (Batch, repeats)\n", + " x = x.tile((1, repeats))\n", + " # 3. 展平:按行展开 -> (Batch * repeats, )\n", + " return x.reshape((-1,))\n", + " \n", + " return x.tile((repeats,)) \n", + "\n", + "d2l.repeat = repeat" ] }, { @@ -100,9 +114,9 @@ "data": { "text/plain": [ "Tensor(shape=[3, 8], dtype=Float32, value=\n", - "[[ 1.18728966e-01, -5.52537978e-01, -1.30528808e+00 ... -1.31862652e+00, -1.51540756e-01, -1.09661305e+00],\n", - " [ 1.18728966e-01, -5.52537978e-01, -1.30528808e+00 ... -1.31862652e+00, -1.51540756e-01, -1.09661305e+00],\n", - " [ 1.18728966e-01, -5.52537978e-01, -1.30528808e+00 ... -1.31862652e+00, -1.51540756e-01, -1.09661305e+00]])" + "[[ 1.71118051e-01, 4.91725028e-01, -5.26719928e-01 ... -7.63486326e-02, -1.73844427e-01, 4.39352483e-01],\n", + " [ 1.71118051e-01, 4.91725028e-01, -5.26719928e-01 ... -7.63486326e-02, -1.73844427e-01, 4.39352483e-01],\n", + " [ 1.71118051e-01, 4.91725028e-01, -5.26719928e-01 ... -7.63486326e-02, -1.73844427e-01, 4.39352483e-01]])" ] }, "execution_count": 4, @@ -129,7 +143,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "metadata": { "origin_pos": 14, "tab": [ @@ -141,8 +155,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "layer norm: [[-1. 1.]\n", - " [-1. 1.]] \n", + "layer norm: [[-0.99998 0.99998]\n", + " [-0.99998 0.99998]] \n", "batch norm: [[-0.99998 -0.99998]\n", " [ 0.99998 0.99998]]\n" ] @@ -169,7 +183,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "metadata": { "origin_pos": 18, "tab": [ @@ -202,7 +216,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "metadata": { "origin_pos": 22, "tab": [ @@ -210,13 +224,20 @@ ] }, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[WARNING] ME(47785:281472870594112,MainProcess):2025-12-08-18:11:14.502.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n" + ] + }, { "data": { "text/plain": [ "(2, 3, 4)" ] }, - "execution_count": 8, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -240,7 +261,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "metadata": { "origin_pos": 26, "tab": [ @@ -281,7 +302,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "metadata": { "origin_pos": 30, "tab": [ @@ -289,13 +310,22 @@ ] }, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[WARNING] ME(47785:281472870594112,MainProcess):2025-12-08-18:11:14.535.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", + "[WARNING] ME(47785:281472870594112,MainProcess):2025-12-08-18:11:14.542.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", + "[WARNING] ME(47785:281472870594112,MainProcess):2025-12-08-18:11:14.550.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n" + ] + }, { "data": { "text/plain": [ "(2, 100, 24)" ] }, - "execution_count": 10, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -321,7 +351,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 10, "metadata": { "origin_pos": 34, "tab": [ @@ -370,7 +400,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 11, "metadata": { "origin_pos": 38, "tab": [ @@ -382,10 +412,13 @@ "name": "stderr", "output_type": "stream", "text": [ - "[WARNING] KERNEL(1140097,7fcb28cab740,python):2021-11-28-12:01:50.063.033 [mindspore/ccsrc/backend/kernel_compiler/gpu/gpu_kernel_factory.cc:96] ReducePrecision] Kernel [TensorScatterUpdate] does not support int64, cast input 1 to int32.\n", - "[WARNING] PRE_ACT(1140097,7fcb28cab740,python):2021-11-28-12:01:50.063.154 [mindspore/ccsrc/backend/optimizer/gpu/reduce_precision_fusion.cc:83] Run] Reduce precision for [TensorScatterUpdate] input 1\n", - "[WARNING] KERNEL(1140097,7fcb28cab740,python):2021-11-28-12:01:50.072.854 [mindspore/ccsrc/backend/kernel_compiler/gpu/gpu_kernel_factory.cc:96] ReducePrecision] Kernel [TensorScatterUpdate] does not support int64, cast input 1 to int32.\n", - "[WARNING] PRE_ACT(1140097,7fcb28cab740,python):2021-11-28-12:01:50.072.959 [mindspore/ccsrc/backend/optimizer/gpu/reduce_precision_fusion.cc:83] Run] Reduce precision for [TensorScatterUpdate] input 1\n" + "[WARNING] ME(47785:281472870594112,MainProcess):2025-12-08-18:11:15.457.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", + "[WARNING] ME(47785:281472870594112,MainProcess):2025-12-08-18:11:15.473.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", + "[WARNING] ME(47785:281472870594112,MainProcess):2025-12-08-18:11:15.480.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", + "[WARNING] ME(47785:281472870594112,MainProcess):2025-12-08-18:11:15.488.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", + "[WARNING] ME(47785:281472870594112,MainProcess):2025-12-08-18:11:15.492.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", + "[WARNING] ME(47785:281472870594112,MainProcess):2025-12-08-18:11:15.498.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", + "[WARNING] ME(47785:281472870594112,MainProcess):2025-12-08-18:11:15.506.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n" ] }, { @@ -394,7 +427,7 @@ "(2, 100, 24)" ] }, - "execution_count": 12, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -419,7 +452,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 12, "metadata": { "origin_pos": 42, "tab": [ @@ -487,7 +520,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 13, "metadata": { "origin_pos": 46, "tab": [ @@ -495,13 +528,24 @@ ] }, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[WARNING] ME(47785:281472870594112,MainProcess):2025-12-08-18:11:15.986.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", + "[WARNING] ME(47785:281472870594112,MainProcess):2025-12-08-18:11:15.993.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", + "[WARNING] ME(47785:281472870594112,MainProcess):2025-12-08-18:11:15.995.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", + "[WARNING] ME(47785:281472870594112,MainProcess):2025-12-08-18:11:16.100.0 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", + "[WARNING] ME(47785:281472870594112,MainProcess):2025-12-08-18:11:16.100.00 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n" + ] + }, { "data": { "text/plain": [ "(2, 100, 24)" ] }, - "execution_count": 14, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -527,7 +571,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 14, "metadata": { "origin_pos": 49, "tab": [ @@ -586,7 +630,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 15, "metadata": { "origin_pos": 53, "tab": [ @@ -598,7 +642,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "loss 0.022, 6786.3 tokens/sec\n" + "loss 0.013, 2682.8 tokens/sec\n" ] }, { @@ -607,64 +651,64 @@ "\n", "\n", - "\n", + "\n", " \n", - " \n", + " \n", " \n", " \n", - " 2021-11-28T12:03:06.188569\n", + " 2025-12-08T18:15:09.055842\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.4.3, https://matplotlib.org/\n", + " Matplotlib v3.10.7, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pfcb4dc8753)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pfcb4dc8753)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pfcb4dc8753)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pfcb4dc8753)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", - " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -1303,7 +1324,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 16, "metadata": { "origin_pos": 56, "tab": [ @@ -1315,9 +1336,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "go . => va !, bleu 1.000\n", - "i lost . => j'ai perdu ., bleu 1.000\n", - "he's calm . => il est paresseux ., bleu 0.658\n", + ".go . => va !, bleu 1.000\n", + "i lost . => j’ai payé ., bleu 0.000\n", + "he's calm . => il est venu ., bleu 0.658\n", "i'm home . => je suis chez moi ., bleu 1.000\n" ] } @@ -1345,7 +1366,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 17, "metadata": { "origin_pos": 59, "tab": [ @@ -1359,7 +1380,7 @@ "(2, 4, 10, 10)" ] }, - "execution_count": 19, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -1373,7 +1394,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 18, "metadata": { "origin_pos": 62, "tab": [ @@ -1387,32 +1408,32 @@ "\n", "\n", - "\n", + "\n", " \n", - " \n", + " \n", " \n", " \n", - " 2021-11-28T12:03:32.747549\n", + " 2025-12-08T18:15:11.327808\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.4.3, https://matplotlib.org/\n", + " Matplotlib v3.10.7, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", @@ -1421,29 +1442,29 @@ "L 102.17106 22.318125 \n", "L 34.240625 22.318125 \n", "z\n", - "\" style=\"fill:#ffffff;\"/>\n", + "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1452,19 +1473,19 @@ " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -1493,14 +1514,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -1532,9 +1553,9 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", - " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1921,24 +1942,24 @@ "L 183.687582 22.318125 \n", "L 115.757147 22.318125 \n", "z\n", - "\" style=\"fill:#ffffff;\"/>\n", + "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1947,14 +1968,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1962,28 +1983,28 @@ " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -2024,24 +2045,24 @@ "L 265.204103 22.318125 \n", "L 197.273668 22.318125 \n", "z\n", - "\" style=\"fill:#ffffff;\"/>\n", + "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2050,14 +2071,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2065,28 +2086,28 @@ " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -2135,24 +2156,24 @@ "L 346.720625 22.318125 \n", "L 278.79019 22.318125 \n", "z\n", - "\" style=\"fill:#ffffff;\"/>\n", + "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2161,14 +2182,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2176,28 +2197,28 @@ " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2256,21 +2277,21 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -2305,12 +2326,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2318,92 +2339,92 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2411,32 +2432,32 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -2444,73 +2465,73 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2518,32 +2539,32 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -2551,73 +2572,73 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2625,32 +2646,32 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -2658,146 +2679,133 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -2967,7 +2969,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 19, "metadata": { "origin_pos": 65, "tab": [ @@ -2981,7 +2983,7 @@ "((2, 4, 6, 10), (2, 4, 6, 10))" ] }, - "execution_count": 21, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -3001,7 +3003,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 20, "metadata": { "origin_pos": 68, "tab": [ @@ -3015,32 +3017,32 @@ "\n", "\n", - "\n", + "\n", " \n", - " \n", + " \n", " \n", " \n", - " 2021-11-28T12:03:33.699629\n", + " 2025-12-08T18:15:12.574387\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.4.3, https://matplotlib.org/\n", + " Matplotlib v3.10.7, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", @@ -3049,29 +3051,29 @@ "L 102.17106 22.318125 \n", "L 34.240625 22.318125 \n", "z\n", - "\" style=\"fill:#ffffff;\"/>\n", + "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3080,19 +3082,19 @@ " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -3121,14 +3123,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -3160,14 +3162,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -3193,9 +3195,9 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", - " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -3582,24 +3584,24 @@ "L 183.687582 22.318125 \n", "L 115.757147 22.318125 \n", "z\n", - "\" style=\"fill:#ffffff;\"/>\n", + "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3608,21 +3610,21 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3630,32 +3632,32 @@ " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -3666,24 +3668,24 @@ "L 265.204103 22.318125 \n", "L 197.273668 22.318125 \n", "z\n", - "\" style=\"fill:#ffffff;\"/>\n", + "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3692,21 +3694,21 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3714,28 +3716,28 @@ " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -3784,24 +3786,24 @@ "L 346.720625 22.318125 \n", "L 278.79019 22.318125 \n", "z\n", - "\" style=\"fill:#ffffff;\"/>\n", + "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3810,21 +3812,21 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3832,58 +3834,58 @@ " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3891,14 +3893,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -3930,9 +3932,9 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -3967,12 +3969,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3980,12 +3982,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3993,92 +3995,92 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4086,32 +4088,32 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -4119,80 +4121,80 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4200,32 +4202,32 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -4233,80 +4235,80 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4314,32 +4316,32 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -4347,153 +4349,140 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -4663,7 +4661,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 21, "metadata": { "origin_pos": 70, "tab": [ @@ -4677,63 +4675,63 @@ "\n", "\n", - "\n", + "\n", " \n", - " \n", + " \n", " \n", " \n", - " 2021-11-28T12:03:34.533008\n", + " 2025-12-08T18:15:14.159676\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.4.3, https://matplotlib.org/\n", + " Matplotlib v3.10.7, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4742,19 +4740,19 @@ " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -4783,14 +4781,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -4822,9 +4820,9 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", - " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5237,43 +5235,43 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5340,43 +5338,43 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5451,43 +5449,43 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5546,21 +5544,21 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -5595,12 +5593,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5608,92 +5606,92 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5701,32 +5699,32 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -5734,73 +5732,73 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5808,32 +5806,32 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -5841,73 +5839,73 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5915,32 +5913,32 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -5948,146 +5946,133 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -6248,9 +6227,9 @@ "metadata": { "celltoolbar": "Slideshow", "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3.10", "language": "python", - "name": "python3" + "name": "py310" }, "language_info": { "codemirror_mode": { @@ -6262,7 +6241,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.5" + "version": "3.10.14" }, "rise": { "autolaunch": true, @@ -6273,4 +6252,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} \ No newline at end of file +} From eee01540235652d617916dd6b17c79cb7bb1b761 Mon Sep 17 00:00:00 2001 From: Y-yyyyq <648203301@qq.com> Date: Mon, 8 Dec 2025 18:39:09 +0800 Subject: [PATCH 16/20] =?UTF-8?q?=E6=B6=88=E9=99=A4=E9=83=A8=E5=88=86?= =?UTF-8?q?=E8=AD=A6=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../5_transformer.ipynb | 599 +++++++++--------- 1 file changed, 302 insertions(+), 297 deletions(-) diff --git a/chapter_10_attention_mechanisms/5_transformer.ipynb b/chapter_10_attention_mechanisms/5_transformer.ipynb index ca4b272..7c6644d 100644 --- a/chapter_10_attention_mechanisms/5_transformer.ipynb +++ b/chapter_10_attention_mechanisms/5_transformer.ipynb @@ -114,9 +114,9 @@ "data": { "text/plain": [ "Tensor(shape=[3, 8], dtype=Float32, value=\n", - "[[ 1.71118051e-01, 4.91725028e-01, -5.26719928e-01 ... -7.63486326e-02, -1.73844427e-01, 4.39352483e-01],\n", - " [ 1.71118051e-01, 4.91725028e-01, -5.26719928e-01 ... -7.63486326e-02, -1.73844427e-01, 4.39352483e-01],\n", - " [ 1.71118051e-01, 4.91725028e-01, -5.26719928e-01 ... -7.63486326e-02, -1.73844427e-01, 4.39352483e-01]])" + "[[-1.48463145e-01, 1.95487887e-01, 7.43701577e-01 ... -3.76396596e-01, 1.50113985e-01, -4.48696584e-01],\n", + " [-1.48463145e-01, 1.95487887e-01, 7.43701577e-01 ... -3.76396596e-01, 1.50113985e-01, -4.48696584e-01],\n", + " [-1.48463145e-01, 1.95487887e-01, 7.43701577e-01 ... -3.76396596e-01, 1.50113985e-01, -4.48696584e-01]])" ] }, "execution_count": 4, @@ -196,7 +196,7 @@ " \"\"\"残差连接后进行层规范化。\"\"\"\n", " def __init__(self, normalized_shape, dropout, **kwargs):\n", " super(AddNorm, self).__init__(**kwargs)\n", - " self.dropout = nn.Dropout(1 - dropout)\n", + " self.dropout = nn.Dropout(p = dropout)\n", " self.ln = d2l.LayerNorm(normalized_shape)\n", "\n", " def construct(self, X, Y):\n", @@ -224,13 +224,6 @@ ] }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[WARNING] ME(47785:281472870594112,MainProcess):2025-12-08-18:11:14.502.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n" - ] - }, { "data": { "text/plain": [ @@ -314,9 +307,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "[WARNING] ME(47785:281472870594112,MainProcess):2025-12-08-18:11:14.535.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", - "[WARNING] ME(47785:281472870594112,MainProcess):2025-12-08-18:11:14.542.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", - "[WARNING] ME(47785:281472870594112,MainProcess):2025-12-08-18:11:14.550.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n" + "[WARNING] ME(58166:281473280181824,MainProcess):2025-12-08-18:20:23.590.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n" ] }, { @@ -412,13 +403,9 @@ "name": "stderr", "output_type": "stream", "text": [ - "[WARNING] ME(47785:281472870594112,MainProcess):2025-12-08-18:11:15.457.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", - "[WARNING] ME(47785:281472870594112,MainProcess):2025-12-08-18:11:15.473.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", - "[WARNING] ME(47785:281472870594112,MainProcess):2025-12-08-18:11:15.480.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", - "[WARNING] ME(47785:281472870594112,MainProcess):2025-12-08-18:11:15.488.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", - "[WARNING] ME(47785:281472870594112,MainProcess):2025-12-08-18:11:15.492.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", - "[WARNING] ME(47785:281472870594112,MainProcess):2025-12-08-18:11:15.498.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", - "[WARNING] ME(47785:281472870594112,MainProcess):2025-12-08-18:11:15.506.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n" + "[WARNING] ME(58166:281473280181824,MainProcess):2025-12-08-18:20:24.448.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", + "[WARNING] ME(58166:281473280181824,MainProcess):2025-12-08-18:20:24.463.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", + "[WARNING] ME(58166:281473280181824,MainProcess):2025-12-08-18:20:24.478.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n" ] }, { @@ -532,11 +519,8 @@ "name": "stderr", "output_type": "stream", "text": [ - "[WARNING] ME(47785:281472870594112,MainProcess):2025-12-08-18:11:15.986.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", - "[WARNING] ME(47785:281472870594112,MainProcess):2025-12-08-18:11:15.993.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", - "[WARNING] ME(47785:281472870594112,MainProcess):2025-12-08-18:11:15.995.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", - "[WARNING] ME(47785:281472870594112,MainProcess):2025-12-08-18:11:16.100.0 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", - "[WARNING] ME(47785:281472870594112,MainProcess):2025-12-08-18:11:16.100.00 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n" + "[WARNING] ME(58166:281473280181824,MainProcess):2025-12-08-18:20:25.710.00 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", + "[WARNING] ME(58166:281473280181824,MainProcess):2025-12-08-18:20:25.790.00 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n" ] }, { @@ -642,7 +626,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "loss 0.013, 2682.8 tokens/sec\n" + "loss 0.013, 2696.6 tokens/sec\n" ] }, { @@ -656,7 +640,7 @@ " \n", " \n", " \n", - " 2025-12-08T18:15:09.055842\n", + " 2025-12-08T18:23:35.791889\n", " image/svg+xml\n", " \n", " \n", @@ -692,16 +676,16 @@ " \n", " \n", + "\" clip-path=\"url(#pd0c205092a)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -764,11 +748,11 @@ " \n", " \n", + "\" clip-path=\"url(#pd0c205092a)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -800,11 +784,11 @@ " \n", " \n", + "\" clip-path=\"url(#pd0c205092a)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -820,11 +804,11 @@ " \n", " \n", + "\" clip-path=\"url(#pd0c205092a)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -990,23 +974,23 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1230,28 +1235,28 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", + "\" clip-path=\"url(#pd0c205092a)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1337,8 +1342,8 @@ "output_type": "stream", "text": [ ".go . => va !, bleu 1.000\n", - "i lost . => j’ai payé ., bleu 0.000\n", - "he's calm . => il est venu ., bleu 0.658\n", + "i lost . => j'ai perdu ., bleu 1.000\n", + "he's calm . => il est paresseux ., bleu 0.658\n", "i'm home . => je suis chez moi ., bleu 1.000\n" ] } @@ -1413,7 +1418,7 @@ " \n", " \n", " \n", - " 2025-12-08T18:15:11.327808\n", + " 2025-12-08T18:23:37.923167\n", " image/svg+xml\n", " \n", " \n", @@ -1444,27 +1449,27 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAABfCAYAAACOTBv1AAABGElEQVR4nO3doRHCQBBA0YXB0QIFUhIFUgAmOggEMmeYL3hPr8j8WZnZO+3ba58D9+vtaGRmZh7bc2mOj3P9Af9M/JD4IfFD4ofED4kfEj8kfkj8kPgh8UPih8QPiR8SPyR+SPyQ+CHxQ+KHxA+JHxI/JH5I/JD4IfFD4ofED4kfEj8kfkj8kPgh8UPih8QPiR8SPyR+SPyQ+CHxQ+KHxA+JHxI/JH5I/JD4IfFD4ofED4kfEj90Wjlqumrl+KnDp182PyR+SPyQ+CHxQ+KHxA+JHxI/JH5I/JD4IfFD4ofED4kfEj8kfuiyMuRtxN+w+SHxQ+KHxA+JHxI/JH5I/JD4IT/Khmx+SPyQ+CHxQ+KHxA+JHxI/9AZK4RhnkrIWygAAAABJRU5ErkJggg==\" id=\"imagefd88732524\" transform=\"scale(1 -1) translate(0 -68.4)\" x=\"34.240625\" y=\"-21.84856\" width=\"68.4\" height=\"68.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1473,12 +1478,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1514,7 +1519,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1944,22 +1949,22 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAABfCAYAAACOTBv1AAABDklEQVR4nO3doRXCQBRFwR8sLVAgJVFgCsBEB4FAZt0VzOgv9tyz/m3n8T7nwvP+uDqZmZnXsS/d8XWrH/DPxA+JHxI/JH5I/JD4IfFD4ofED4kfEj8kfkj8kPgh8UPih8QPiR8SPyR+SPyQ+CHxQ+KHxA+JHxI/JH5I/JD4IfFD4ofED4kfEj8kfkj8kPgh8UPih8QPiR8SPyR+SPyQ+CHxQ+KHxA+JHxI/JH5I/JD4IfFD4ofED4kfEj8kfkj8kPgh8UPih8QPiR8SPyR+SPyQ+CHxQ+KHxA+JH9pWthFXrWwo2k/88fND4ofED4kfEj8kfkj8kPgh8UPih8QPiR8SPyR+SPyQ+CHxQ+KHPnUODoNjx1q6AAAAAElFTkSuQmCC\" id=\"image7bd7f480f6\" transform=\"scale(1 -1) translate(0 -68.4)\" x=\"115.757147\" y=\"-21.84856\" width=\"68.4\" height=\"68.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1968,14 +1973,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2047,22 +2052,22 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAABfCAYAAACOTBv1AAABGklEQVR4nO3csQ3CMBBA0ZgWRmA/GIkBGYAmdSgpcUF4Rf6rXVhf11iWbmzra1v+6H6+Tp17rM+db+Kd9AWOrPhQ8aHiQ8WHig8VHyo+VHyo+FDxoeJDxYeKDxUfKj5UfKj4UPGh4kPFh4oPFR8qPlR8qPhQ8aHiQ8WHig8VHyo+VHyo+FDxoeJDxYeKDxUfKj5UfKj4UPGh4kPFh4oPFR8qPlR8qPhQ8aHiQ8WHig8VHyo+NGaWmraIdB9NPlR8qPhQ8aHiQ8WHig8VHyo+VHyo+FDxoeJDxYeKDxUfKj5UfGjqG/GX+pL8aPKh4kPFh4oPFR8qPlR8qPhQ8aFxWy5fX7hHeG0KTT5UfKj4UPGh4kPFh4oPFR96AzmTGUeKsS2VAAAAAElFTkSuQmCC\" id=\"imageb5424f9405\" transform=\"scale(1 -1) translate(0 -68.4)\" x=\"197.273668\" y=\"-21.84856\" width=\"68.4\" height=\"68.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2071,14 +2076,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2158,22 +2163,22 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAABfCAYAAACOTBv1AAABgUlEQVR4nO3cMUsDQRBA4V09DRgUUwoh+PNsLS2sBFtb/50S7AKakBzp7uxMOQMevGLfVy+T4zHNckfqsFmPJVCvbqIjpZRSXhb34Znnn8/UrBac0Q/QMuODjA8yPsj4IOODjA8yPsj4oPo6W4Q33Kfvj9Swsd/GPzi/Tc1qgZsPMj7I+CDjg4wPMj7I+CDjg7q7y/Ppph0P8RkvWX/cfJDxQcYHGR9kfJDxQcYHGR9kfFAddpv4Q9nuIjXs8XoVnnnbr1OzWuDmg4wPMj7I+CDjg4wPMj7I+KAue4HKOA7DZLNa4OaDjA8yPsj4IOODjA8yPsj4IOODjA8yPsj4IOODjA8yPsj4IOODjA/qMoce5svUsPf+618P0xo3H2R8kPFBxgcZH2R8kPFBxgcZH2R8kPFBxgcZH2R8kPFBxgcZH2R8UB37bfiXL1mZ142+ajxx80HGBxkfZHyQ8UHGBxkfZHyQ8UGT3nAz/Oj2xM0HGR9kfJDxQcYHGR9kfJDxQb/gyitUDE5ofAAAAABJRU5ErkJggg==\" id=\"image30c3f7b1ca\" transform=\"scale(1 -1) translate(0 -68.4)\" x=\"278.79019\" y=\"-21.84856\" width=\"68.4\" height=\"68.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2182,14 +2187,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2256,15 +2261,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAABfCAYAAACOTBv1AAABxUlEQVR4nO3dsU3DQBSA4TvnEiNEgQQNBRU7MAIFDQMwARNRswA1DQtQ0dJlAYSIooASbFNS3iuCfln+v/rpOfp1jWVbyd3r85Aq+seH2khKKaV8c1sfWr2Hds0ur0NzY9bQP2DKjA8yPsj4IOODjA8yPsj4IOODSsqB/vN5bNtuW5/pu9iuCfDkg4wPMj7I+CDjg4wPMj7I+KASmoreZPU/gZnqU8vJ8OSDjA8yPsj4IOODjA8yPsj4IOODyrD7rk+17f6uOPT72zVynnyQ8UHGBxkfZHyQ8UHGBxkfVFJXf3cyLxaxbYFd+uPJBxkfZHyQ8UHGBxkfZHyQ8UHGB5XQ14HN7P9/yQR58kHGBxkfZHyQ8UHGBxkfZHxQfjo5q34eePX2Ets2BL403HyGVuXT89g1R8yTDzI+yPgg44OMDzI+yPgg44OMDyrHJfCIMPoCbJOrI8NmHVpV3zR+nnyQ8UHGBxkfZHyQ8UHGBxkflPv1R/XZ391R7JHe/WoZuGLs9ilP4P1QTz7I+CDjg4wPMj7I+CDjg4wPMj4o9DXixUHwbzu2X/WZ6J1rexibGzFPPsj4IOODjA8yPsj4IOODjA/6BfuhNJ8KqqThAAAAAElFTkSuQmCC\" id=\"imagef139f9040f\" transform=\"scale(1 -1) translate(0 -68.4)\" x=\"34.240625\" y=\"-127.68856\" width=\"68.4\" height=\"68.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2277,7 +2282,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2326,7 +2331,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2339,7 +2344,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2411,15 +2416,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAABfCAYAAACOTBv1AAAB3UlEQVR4nO3csUqbYRSH8fdLXi2icXJxCJkKTp2cXIJLb8DZqYN7b6GbVyC4VFx7DQrdBd1ctFSkg5kcJKWSfF7COUPsQ/ie3/znEB7fRQhpXr99aUvg5eIqmpRSStn8fh5u5n/uU7f6n8ap3TLr0R+gy4wPMj7I+CDjg4wPMj7I+CDjg2oZDMLR+u7H1LH55DEe/bpN3Sr+h6v3ZHyQ8UHGBxkfZHyQ8UHGB9XSNPGqt8C/0Wy2uFtLzpcPMj7I+CDjg4wPMj7I+CDjg4wPqmU6DUfTm7vUsfWj7XDTDp9Tt7rAlw8yPsj4IOODjA8yPsj4IOODaqk1HPXWVnPXZq/x5t/f3K0O8OWDjA8yPsj4IOODjA8yPsj4IOODUl+UbfrJv1HmS7Bt+PM+neHLBxkfZHyQ8UHGBxkfZHyQ8UG12Yh/8uXrj+vUsZOznXg0TGw6wpcPMj7I+CDjg4wPMj7I+CDjg4wPqu3kKRyNPqz8h4/SPb58kPFBxgcZH2R8kPFBxgcZH1Sbvf1wdDC6TB2bP/0ON+31z9St/ufD1G6Z+fJBxgcZH2R8kPFBxgcZH2R8kPFBtTzch6PTu0nq2PHWMNw044PUrS7w5YOMDzI+yPgg44OMDzI+yPigN5pbNRuYdQ5kAAAAAElFTkSuQmCC\" id=\"image6695884009\" transform=\"scale(1 -1) translate(0 -68.4)\" x=\"115.757147\" y=\"-127.68856\" width=\"68.4\" height=\"68.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2432,7 +2437,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2465,14 +2470,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2518,15 +2523,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAABfCAYAAACOTBv1AAAB1ElEQVR4nO3dMUrEUBRA0ZeZ6KiFKPZWbkAQLF2AK3ATopZWgoVYugX34BLcgo1YiGArioyOk0SX8J8oXELuqR8vw+U3H0Kmau9uv6OgvTovjURExPj4rDjz/fyQ27W7n5rrsxH9A4bM+CDjg4wPMj7I+CDjg4wPMj6ojq4tDlXra7lt7bw88/6W2zUAnnyQ8UHGBxkfZHyQ8UHGBxkfVMd4oTy1vJzblriwxewjt2sAPPkg44OMDzI+yPgg44OMDzI+yPigOuq6PPX5mdvWFd+5jagTN+qB8OSDjA8yPsj4IOODjA8yPsj4oMQNKyKa5v+eOBr/366e8+SDjA8yPsj4IOODjA8yPsj4IOOD6qgS/afT5LbEhXkyye0aAE8+yPgg44OMDzI+yPgg44OMD6q65/viC5anmzupZRevj3/+QUPiyQcZH2R8kPFBxgcZH2R8kPFBxgfVsbhUHHppEt/R0a958kHGBxkfZHyQ8UHGBxkfZHxQ1b2/lL/TMp+llrWXR8WZr/un1K6V65vUXJ958kHGBxkfZHyQ8UHGBxkfZHyQ8UHV9GCveMNdPDzJbWvK/4042tpOrapWN3LP7DFPPsj4IOODjA8yPsj4IOODjA/6AcqbOElDn9vEAAAAAElFTkSuQmCC\" id=\"imagea452785f78\" transform=\"scale(1 -1) translate(0 -68.4)\" x=\"197.273668\" y=\"-127.68856\" width=\"68.4\" height=\"68.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2539,7 +2544,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2572,14 +2577,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2625,15 +2630,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAABfCAYAAACOTBv1AAABo0lEQVR4nO3cTUoDQRBA4Rqn3QTvILh1r6fwGJJjiKcQxCt4JhfJ0oUYTTDOj0foAgOPod+3LorhUZswSbrpfTNHzWFXHYmIGF+f60PbbWpXeXxJzS3ZGf0ALTM+yPgg44OMDzI+yPgg44OMDyrRl/pUf57btt//72ka4+WDjA8yPsj4IOODjA8yPsj4oBLR1ae6xEx2bhhyuxrg5YOMDzI+yPgg44OMDzI+yPgg44NKRP17sjGNuW2rVX3meMztaoCXDzI+yPgg44OMDzI+yPgg44NyrxFTMznzOJ1s19J5+SDjg4wPMj7I+CDjg4wPMj7I+KDETxEjUq8aI6Lr+xNtaoOXDzI+yPgg44OMDzI+yPgg44O6dVxUP/c8fW1yy7K/WlREePko44OMDzI+yPgg44OMDzI+yPgg44OMDzI+yPgg44OMDzI+yPgg44O6+fuj+hpxTv7ly9vNbXXm8mGd2tXf3afmlszLBxkfZHyQ8UHGBxkfZHyQ8UHGB5V5+K1PDT+pZZ+7xK6r69SuFnj5IOODjA8yPsj4IOODjA8yPugPrzcvhNVzcQYAAAAASUVORK5CYII=\" id=\"image2b0cecc812\" transform=\"scale(1 -1) translate(0 -68.4)\" x=\"278.79019\" y=\"-127.68856\" width=\"68.4\" height=\"68.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2646,7 +2651,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2679,14 +2684,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2733,18 +2738,18 @@ "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAAgAAACiCAYAAAB8iIwDAAAA7klEQVR4nN2XSw4DIQxDUyn3P2s33ZWkN8iLZGCgsx1kP8cwn1d+3mnF5ZZR3Te3LAU6CkELjCyCFrACxoQFqc9BV5gQExkOiBmDFsgKBJkbGBiSLIYakxnYgg6OHpMnKcc8YMvxqOUutkzy+S13xbmYADkh5g2QqCC/9fKEmFd0QZA58BGEXehtygx3xFw/h7/oAp7E5oEMFBMVBluU980D60YFYgg5Jk9S7mIHpNwFODRSgEBDARjNk34noatOTLRYr4CTHHoXBNnogixkSIxZfxx0Rv2VIVGhwSBb1AJzFGQLUsC6dUjck+u7+AE+P2IIsbjxbAAAAABJRU5ErkJggg==\" id=\"image14400b1bc0\" transform=\"scale(1 -1) translate(0 -116.64)\" x=\"366.48\" y=\"-50.4\" width=\"5.76\" height=\"116.64\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2768,12 +2773,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2783,12 +2788,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2798,12 +2803,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3022,7 +3027,7 @@ " \n", " \n", " \n", - " 2025-12-08T18:15:12.574387\n", + " 2025-12-08T18:23:39.204629\n", " image/svg+xml\n", " \n", " \n", @@ -3053,27 +3058,27 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAABfCAYAAACOTBv1AAABFklEQVR4nO3asQ0CQQwAwT9EBiXQH5REgRRA8vFThIMR+p3c0mnl6OR17N9jO6nX7TGaf++f0fxlNJ2R4kPFh4oPFR8qPlR8qPhQ8aHiQ8WHig8VHyo+VHzoqh8wof/jp9p8qPhQ8aHiQ8WHig8VHyo+VHyo+FDxoeJDxYeKDxUfWtP7/H//U5fafKj4UPGh4kPFh4oPFR8qPlR8qPhQ8aHiQ8WHig8VHyo+VHyo+FDxoeJDxYeKDxUfKj5UfKj4UPGh4kPFh4oPred2H52In/nEe6rNh4oPFR8qPlR8qPhQ8aHiQ8WHig8VHyo+VHyo+FDxoeJDxYeKDxUfKj5UfKj4UPGh4kPFh4oPFR8qPlR8qPhQ8aEfllwVZ8bxe/UAAAAASUVORK5CYII=\" id=\"image1fbfb1d28a\" transform=\"scale(1 -1) translate(0 -68.4)\" x=\"34.240625\" y=\"-21.84856\" width=\"68.4\" height=\"68.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3082,12 +3087,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3123,7 +3128,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3162,7 +3167,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3586,22 +3591,22 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAABfCAYAAACOTBv1AAABFElEQVR4nO3csQ3CMBBA0ZgWRmA/GIkBM0Ca1GEHjPQU5b/esvV1lYsbx74dy0m978+p8599/dNLfnOjt19c8aHiQ8WHig8VHyo+VHyo+FDxoeJDxYeKDxUfKj40Zv/zz/6nLjX5UPGh4kPFh4oPFR8qPlR8qPhQ8aHiQ8WHig8VHyo+VHyo+FDxoeJDxYeKDxUfKj5UfKj4UPGh4kPFh4oPFR8qPlR8qPhQ8aHiQ8WHig8VHyo+VHyo+FDxoeJDxYeKDxUfGq/lMbXy5corW2Y1+VDxoeJDxYeKDxUfKj5UfKj4UPGh4kPFh4oPFR8qPlR8qPhQ8aHiQ8WHig8VHyo+VHyo+FDxoeJDxYeKDxUfKj70BWMwEmU9NHxCAAAAAElFTkSuQmCC\" id=\"imagea48e5129a5\" transform=\"scale(1 -1) translate(0 -68.4)\" x=\"115.757147\" y=\"-21.84856\" width=\"68.4\" height=\"68.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3610,21 +3615,21 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3670,22 +3675,22 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAABfCAYAAACOTBv1AAABHklEQVR4nO3cwQnCQBBA0cSrlmB/piQLtAAvOcceMsIn8N59IXzmNLtkPfbvsXDKdn+Ozt/+9B2cIH5I/JD4IfFD4ofED4kfEj8kfkj8kPgh8UPih8QPrdN9/nSn/d4/o/NXZvJD4ofED4kfEj8kfkj8kPgh8UPih8QPiR8SPyR+SPzQeJ8/NbkPuPpdgMkPiR8SPyR+SPyQ+CHxQ+KHxA+JHxI/JH5I/JD4IfFD62t5jPb5V9+pl0x+SPyQ+CHxQ+KHxA+JHxI/JH5I/JD4IfFD4ofED/nlS8jkh8QPiR8SPyR+SPyQ+CHxQ+KHxA+JHxI/JH5I/JD4IU/EQyY/JH5I/JD4IfFD4ofED4kfEj8kfkj8kPgh8UPih8QP/QCbwyGaifV8xQAAAABJRU5ErkJggg==\" id=\"imagec8d1b34947\" transform=\"scale(1 -1) translate(0 -68.4)\" x=\"197.273668\" y=\"-21.84856\" width=\"68.4\" height=\"68.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3694,21 +3699,21 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3788,22 +3793,22 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAABfCAYAAACOTBv1AAABNklEQVR4nO3aMWpCURBAUX+00yUEtxe7rCWd6wtZQIrYKT97+CMchHv6gcdlquEt6+133WWTy/F9NP/2pHdkg+JDxYeKDxUfKj5UfKj4UPGh4kPFh4oPFR8qPlR8aJne8z9P59EDvv6+R/MT6+M+ml/2h9F8mw8VHyo+VHyo+FDxoeJDxYeKDxUfKj5UfKj4UPGh4kPje740/R9/vf086SXbtPlQ8aHiQ8WHig8VHyo+VHyo+FDxoeJDxYeKDxUfKj60fOxOo3u+vom/sjYfKj5UfKj4UPGh4kPFh4oPFR8qPlR8qPhQ8aHiQ+Mv4q/+TVtq86HiQ8WHig8VHyo+VHyo+FDxoeJDxYeKDxUfKj5UfKgv4lCbDxUfKj5UfKj4UPGh4kPFh4oPFR8qPlR8qPhQ8aHiQ/+x8iSau80TXQAAAABJRU5ErkJggg==\" id=\"imagea0943ed0da\" transform=\"scale(1 -1) translate(0 -68.4)\" x=\"278.79019\" y=\"-21.84856\" width=\"68.4\" height=\"68.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3812,21 +3817,21 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3872,15 +3877,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAABfCAYAAACOTBv1AAABf0lEQVR4nO3cPU4CURhG4TtkAhHFkoIYY0FiXIsJa6CmdCM0JG7BWksWYmdiKzaEgkD428O8xSGZ8/TffMPhVreY6vD5fi6J0VM03nl4bjx7Wn5ku1+n0XzZbrL92XYljA8yPsj4IOODjA8yPsj4IOODjA8yPsj4IOODjA8yPqg6rVfZff5hl71Bt994dD4cR6vf/n+i+ZQnH2R8kPFBxgcZH2R8kPFBxgcZH2R8kPFBxgcZH2R8kPFBdVn/ZU/o30fjX48vjWfp+/iUJx9kfJDxQcYHGR9kfJDxQcYHGR9kfJDxQcYHGR9kfJDxQXW5ucue0LuNxr+3+8azk2gzz5MPMj7I+CDjg4wPMj7I+CDjg4wPMj7I+CDjg4wPMj6ompVB9MmXxeY3e4FOe///9v7yK2B8kPFBxgcZH2R8kPFBxgcZH2R8kPFBxgcZH2R8kPFB9bFkX3Bv8318ynIg44OMDzI+yPgg44OMDzI+yPgg44OMDzI+yPgg44OMD7oABoEgqtakwfEAAAAASUVORK5CYII=\" id=\"imagea2a02e59ea\" transform=\"scale(1 -1) translate(0 -68.4)\" x=\"34.240625\" y=\"-127.68856\" width=\"68.4\" height=\"68.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3893,7 +3898,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3969,7 +3974,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3982,7 +3987,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3995,7 +4000,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4067,15 +4072,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAABfCAYAAACOTBv1AAABiklEQVR4nO3aQSqFURiH8fe4n9stkoEFGFgB+zCwCQNlZKKMFDMzA1MrsB+KyU0iJEzofuzh+6unm+c3f3tPT2d0Ou17f/unAqPTy2S8ZueHw3fvnUS76/0lm19Zi8YXsu1KGB9kfJDxQcYHGR9kfJDxQcYHGR9kfJDxQcYHGR9kfFDrP16j9/x6e8xOMFkaPHq1sRmt3pleR/Mpbz7I+CDjg4wPMj7I+CDjg4wPMj7I+CDjg4wPMj7I+CDjg9rxeDV6zz96uslO0M8Gj7bxJNsN8+aDjA8yPsj4IOODjA8yPsj4IOODjA8yPsj4IOODjA8yPqi7/xr+nl5VVaMuGm/dYrZ/jnnzQcYHGR9kfJDxQcYHGR9kfJDxQcYHGR9kfJDxQcYHtf7hNvoifra+FR3g4Pkump9n3nyQ8UHGBxkfZHyQ8UHGBxkfZHyQ8UHGBxkfZHyQ8UHGB7XdWo7e8y8+p391ln/Hmw8yPsj4IOODjA8yPsj4IOODjA8yPsj4IOODjA8yPsj4oF8c9yYWB0SEzQAAAABJRU5ErkJggg==\" id=\"imagebe9c9d1cb6\" transform=\"scale(1 -1) translate(0 -68.4)\" x=\"115.757147\" y=\"-127.68856\" width=\"68.4\" height=\"68.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4088,7 +4093,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4121,21 +4126,21 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4181,15 +4186,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAABfCAYAAACOTBv1AAABRklEQVR4nO3csUkFQRRA0b+iGGhmamptWoFN2ID1iQWI8gMRXXvYt/yDeE8+zHB50QtmWY9v6yGbPFzdjs6f7fSObFB8qPhQ8aHiQ8WHig8VHyo+VHyo+FDxoeJDxYeKDy16n79+fW4++3hzN7r76f1ldH6qyYeKDxUfKj5UfKj4UPGh4kPFh4oPFR8qPlR8qPhQ8aFz/YDl4nLz2Y/vnx1fcnpNPlR8qPhQ8aHiQ8WHig8VHyo+VHyo+FDxoeJDxYeKD/F9/uTPmufj644vOb0mHyo+VHyo+FDxoeJDxYeKDxUfKj5UfKj4UPGh4kPjlfL0G/O/vhaeaPKh4kPFh4oPFR8qPlR8qPhQ8aHiQ8WHig8VHyo+VHxouT9cj75w/8/7+KkmHyo+VHyo+FDxoeJDxYeKDxUfKj5UfKj4UPGh4kPFh34B6c8b9ZwKz7EAAAAASUVORK5CYII=\" id=\"image23355a28be\" transform=\"scale(1 -1) translate(0 -68.4)\" x=\"197.273668\" y=\"-127.68856\" width=\"68.4\" height=\"68.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4202,7 +4207,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4235,21 +4240,21 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4295,15 +4300,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAABfCAYAAACOTBv1AAABjUlEQVR4nO3aMUoDYRRF4fknqcQ9WFjFYCEWQQvBVojbsArWLkDEFZg+GwiuQzAhTVBsVGxsJJAuJu5hrnAQz9e/ecPhVcOU9efrpgqsX6bJeFXvdJrvfnvKdnd60fz3zSDbH00rYnyQ8UHGBxkfZHyQ8UHGBxkfZHyQ8UHGBxkfZHyQ8UFls/yKvuenHnb3G88ejK6j3a3j82g+5eWDjA8yPsj4IOODjA8yPsj4IOODjA8yPsj4IOODjA8yPqi96J9GD9jqn0Tzh8+TxrOlbkW7aV4+yPgg44OMDzI+yPgg44OMDzI+yPgg44OMDzI+yPgg44PK6v4u+j9/fnkbvcDe7LHxbCkl2k3z8kHGBxkfZHyQ8UHGBxkfZHyQ8UHGBxkfZHyQ8UHGB7Xro7PoAeOPq2i++8c/Cye8fJDxQcYHGR9kfJDxQcYHGR9kfJDxQcYHGR9kfJDxQcYHlYtqO/pFfLh8/613+Xe8fJDxQcYHGR9kfJDxQcYHGR9kfJDxQcYHGR9kfJDxQcYH/QAcPyTwNJNEBAAAAABJRU5ErkJggg==\" id=\"image2d23b25887\" transform=\"scale(1 -1) translate(0 -68.4)\" x=\"278.79019\" y=\"-127.68856\" width=\"68.4\" height=\"68.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4316,7 +4321,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4349,21 +4354,21 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4410,18 +4415,18 @@ "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAAgAAACiCAYAAAB8iIwDAAAA7klEQVR4nN2XSw4DIQxDUyn3P2s33ZWkN8iLZGCgsx1kP8cwn1d+3mnF5ZZR3Te3LAU6CkELjCyCFrACxoQFqc9BV5gQExkOiBmDFsgKBJkbGBiSLIYakxnYgg6OHpMnKcc8YMvxqOUutkzy+S13xbmYADkh5g2QqCC/9fKEmFd0QZA58BGEXehtygx3xFw/h7/oAp7E5oEMFBMVBluU980D60YFYgg5Jk9S7mIHpNwFODRSgEBDARjNk34noatOTLRYr4CTHHoXBNnogixkSIxZfxx0Rv2VIVGhwSBb1AJzFGQLUsC6dUjck+u7+AE+P2IIsbjxbAAAAABJRU5ErkJggg==\" id=\"imageeedb353add\" transform=\"scale(1 -1) translate(0 -116.64)\" x=\"366.48\" y=\"-50.4\" width=\"5.76\" height=\"116.64\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4445,7 +4450,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4460,7 +4465,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4475,7 +4480,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4522,7 +4527,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4578,7 +4583,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4606,28 +4611,28 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4680,7 +4685,7 @@ " \n", " \n", " \n", - " 2025-12-08T18:15:14.159676\n", + " 2025-12-08T18:23:40.964900\n", " image/svg+xml\n", " \n", " \n", @@ -4711,27 +4716,27 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAAA5CAYAAABQ4feyAAABPUlEQVR4nO3XPUoDURRH8Zf48AMsLMR0WovgFnQHQdyGYG9v7RYs7dMJoo1BBFuLdO4gXfzIzLiEexs5xDm/+vJPOLxmBsunu65ENrbCk1JKKR+z8KR7eU5N1evb3G+usCH9B/rM+CDjg4wPMj7I+CDjg4wPMj6olu/P8GhydpkaG89e46PT89RWH/jyQcYHGR9kfJDxQcYHGR9kfFAtO3vh0eN8kRobb27HR8uf1FYf+PJBxgcZH2R8kPFBxgcZH2R8kPFBtTTxF+dX1ybnBolfXE9u/X++fJDxQcYHGR9kfJDxQcYHGR9Uh/uH4dHFwW5qrH2fJo6a1Nba8UnqbpX58kHGBxkfZHyQ8UHGBxkfZHyQ8UG1fXsIj46m96mx5uYqPhqNUlvFL1z9JeODjA8yPsj4IOODjA8yPugX7zsmKjPkQ6cAAAAASUVORK5CYII=\" id=\"image745bacf600\" transform=\"scale(1 -1) translate(0 -41.04)\" x=\"34.240625\" y=\"-22.036386\" width=\"68.4\" height=\"41.04\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4740,12 +4745,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4781,7 +4786,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5211,22 +5216,22 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAAA5CAYAAABQ4feyAAABTklEQVR4nO3ZMUoDURRA0f8nA0IMSIqQKmm0zhbcgNaCO1DchugOXIakEsTWRmzFVkUsFY2oiMy4hP+6yzD31I83w+U1w+S/24s2FeTxtDSSUkqpvbkqzzw/hnbVh8ehuS6r6BfoM+ODjA8yPsj4IOODjA8yPsj4oLq9PC8OVftHoWXtfKs4k4ej0K4+8PJBxgcZH2R8kPFBxgcZH2R8UG5eX4q/EVd7O6Fl66cn5aHfn9CuwWI7NNdlXj7I+CDjg4wPMj7I+CDjg4wPMj4oN59vxS/cg9EstOzs4yHwxBzalatBaK7LvHyQ8UHGBxkfZHyQ8UHGBxkflJfjafEja/fpPrbt6708870KrcqTeeyZHeblg4wPMj7I+CDjg4wPMj7I+CDjg+rZcK041Nxdh5ZVm4vy0MYktKsPvHyQ8UHGBxkfZHyQ8UHGBxkf9A9H+ynEkZrKnwAAAABJRU5ErkJggg==\" id=\"image0a27167ae7\" transform=\"scale(1 -1) translate(0 -41.04)\" x=\"115.757147\" y=\"-22.036386\" width=\"68.4\" height=\"41.04\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5235,14 +5240,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5314,22 +5319,22 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAAA5CAYAAABQ4feyAAABWklEQVR4nO3ZoUoEURSA4XtnV8FBEc2K2bBgESz7AD6AZqtBjDabD2AQsQmCD6BFDBpFEEQQFrPBaLLIzo6PcA+I/Az+Xz4chn9vOWwe31+2qaBa3SiNpJRSao72y0N1HdrVPzwLzXVZRX/Af2Z8kPFBxgcZH2R8kPFBxgcZH5Sfl1aKF+7a20toWTN6KA+9PoV29bb2QnNd5ssHGR9kfJDxQcYHGR9kfJDxQf3ByUFxqG3GoWXt3XVx5vsxdrDVHln6S8YHGR9kfJDxQcYHGR9kfJDxQXnyPir+jbi7vB5advoRuF5zDu3Kc4uhuS7z5YOMDzI+yPgg44OMDzI+yPig/DkcFI+s+avb0LLJzUV5aGo6tKu3uROa6zJfPsj4IOODjA8yPsj4IOODjA8yPih/bQ+LF27UzPF5eaiK/d55duF3H9MBvnyQ8UHGBxkfZHyQ8UHGBxkf9AOy8ivgGljZCwAAAABJRU5ErkJggg==\" id=\"imaged61929b31c\" transform=\"scale(1 -1) translate(0 -41.04)\" x=\"197.273668\" y=\"-22.036386\" width=\"68.4\" height=\"41.04\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5338,14 +5343,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5425,22 +5430,22 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAAA5CAYAAABQ4feyAAABTklEQVR4nO3ZMUoDURRA0f9nDIG4BVch2GYBNmI6Oy0EcQtWVpa2dinFJYhLcAEJShCMnYUSCBLRGZfwH1hchrmnfrwMl9d8kn+ml20qqA5OSyMppZSah9vy0PcmtKuenIfmuqyiP6DPjA8yPsj4IOODjA8yPsj4IOODttqXRXGoebwPLcu74/LQ5iu0qw+8fJDxQcYHGR9kfJDxQcYHGR+Um+Ws+Ddis5zHti1m5ZnVR2hVfXwR+80O8/JBxgcZH2R8kPFBxgcZH2R8kPFBuV1/Fl+4Z9s7oWU367d/f1CfePkg44OMDzI+yPgg44OMDzI+KDfvr8VHVqrq0LLf6VVxpn16Du0aXN+F5rrMywcZH2R8kPFBxgcZH2R8kPFBxgfl1f5e8YU7OjkKLavGh+WhwTC0Kw9Hobku8/JBxgcZH2R8kPFBxgcZH2R80B8FLDB9cSymfwAAAABJRU5ErkJggg==\" id=\"imagedb45f86e89\" transform=\"scale(1 -1) translate(0 -41.04)\" x=\"278.79019\" y=\"-22.036386\" width=\"68.4\" height=\"41.04\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5449,14 +5454,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5523,15 +5528,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAAA5CAYAAABQ4feyAAABRklEQVR4nO3coU4DQRRA0ZnZpQkSFAm+X8AX4EmqMRUoLI7fwPQX0Dg0hgTTBIGuqaxBQJqyRRCwb5ItuW16j355O7kZs9lk8+ruZp0CZXQVjaSUUupmb/HQ60vVrmZ8WzW3ywp9gH1mfJDxQcYHGR9kfJDxQcYHGR/U5vNRPHV0Urft8T4cWT49V606HNc9cpd580HGBxkfZHyQ8UHGBxkfZHxQ7hbz8DPi9fGwatnkfdb7QL9yaTa2a1t580HGBxkfZHyQ8UHGBxkfZHyQ8UFtyjkcOh20dduWH/FMqdw18A1X/8j4IOODjA8yPsj4IOODjA9qU/cVDn124ZfGH81Bz+PsF28+yPgg44OMDzI+yPgg44OMDzI+KK8eJuHr63pa94+ccnHZ+0B/u4ZnG9u1rbz5IOODjA8yPsj4IOODjA8yPugb4OQjSC4cnUUAAAAASUVORK5CYII=\" id=\"image069461f500\" transform=\"scale(1 -1) translate(0 -41.04)\" x=\"34.240625\" y=\"-127.876386\" width=\"68.4\" height=\"41.04\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5544,7 +5549,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5593,7 +5598,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5606,7 +5611,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5678,15 +5683,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAAA5CAYAAABQ4feyAAABNUlEQVR4nO3ZMUrEUBCA4ffiq20WKxt7W8HCwivYe4I9gAcQrLzANoKIl1AQPMqCdRq1zSZ2YjcDCr+7+b96mGR/pglbh+f7qQS6s4topJRSyubuOh4ahtSutrxJzW2zjn6BOTM+yPgg44OMDzI+yPgg44OMD2r14DCeGje5bX0fzywWuV0z4OWDjA8yPsj4IOODjA8yPsj4oDp+9OHfiMv9o9Sy1efbb9/nW+12/y52/xf+Y8YHGR9kfJDxQcYHGR9kfJDxQa3U+ofrwo9l/eDlg4wPMj7I+CDjg4wPMj7I+KA2Pj2EQ6v3dWrZ+HibeGJL7dq7vErNbTMvH2R8kPFBxgcZH2R8kPFBxgcZH9Sm15dwaDo+zW07OQ9HavILdw68fJDxQcYHGR9kfJDxQcYHGR/0BYzMIYXh6Y1DAAAAAElFTkSuQmCC\" id=\"image505c8913af\" transform=\"scale(1 -1) translate(0 -41.04)\" x=\"115.757147\" y=\"-127.876386\" width=\"68.4\" height=\"41.04\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5699,7 +5704,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5732,14 +5737,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5785,15 +5790,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAAA5CAYAAABQ4feyAAABS0lEQVR4nO3XoUoEYRRH8W/XAV1tYhXBpmIUYesEg2DzKbYJPoDBIhjEImYFg1aTrFgsBrH5BKZli6Bo2PER7i1yWOb88p/LcPjKdM7mF5sSGFweRpNSSindej8e/X6nbnWWllO7adalP6DNjA8yPsj4IOODjA8yPsj4IOODqsH1UTh6PzhNHVvb2Ao3zegjdWvGP1z9J+ODjA8yPsj4IOODjA8yPqj6uboJR+vPD6ljk7uLcNOMx6lbpb+X200xXz7I+CDjg4wPMj7I+CDjg4wPMj6omjs5D0eTt6fUsa/7eNfbXE3dagNfPsj4IOODjA8yPsj4IOODjA+qhtu74ah+HaaOLRyvhJvm5TF1qw18+SDjg4wPMj7I+CDjg4wPMj7I+KDqdvQZjupmkrs22wsnnf5O7lYL+PJBxgcZH2R8kPFBxgcZH2R80B8KVCkL/xzPNwAAAABJRU5ErkJggg==\" id=\"imagebc7eb873a2\" transform=\"scale(1 -1) translate(0 -41.04)\" x=\"197.273668\" y=\"-127.876386\" width=\"68.4\" height=\"41.04\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5806,7 +5811,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5839,14 +5844,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5892,15 +5897,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAAA5CAYAAABQ4feyAAABSElEQVR4nO3ZoUrGYBSA4W//1iyCYNLLMNpE7ILNrM0bMdg0GQXT3wz/BdhMIgajBououIHots9LOB8YXn72PvlwNl5OGat+jvZyCjSnV9FISiml8W4RD313Rbvq7f2iuWU2o19gyowPMj7I+CDjg4wPMj7I+CDjg5r2/jkcWh37omXV+mY4k9vPol1T4OWDjA8yPsj4IOODjA8yPsj4oKq/nYe/EdMwlG17e41ncvy4lFKqdw/LnrnEvHyQ8UHGBxkfZHyQ8UHGBxkfZHxQlbuP8JPzeGWjaNlF9/LvF5oSLx9kfJDxQcYHGR9kfJDxQcYHNcP1WTh0/v5UtGy4uYyH2q+iXfXBSdHcMvPyQcYHGR9kfJDxQcYHGR9kfJDxQU1+fAiHxrV50bLZ1k44k/vfol1T4OWDjA8yPsj4IOODjA8yPsj4oD8VCzNeqtLetQAAAABJRU5ErkJggg==\" id=\"image1dbe4e75a8\" transform=\"scale(1 -1) translate(0 -41.04)\" x=\"278.79019\" y=\"-127.876386\" width=\"68.4\" height=\"41.04\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5913,7 +5918,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5946,14 +5951,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6000,18 +6005,18 @@ "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAAgAAACiCAYAAAB8iIwDAAAA60lEQVR4nOWXMQ7DMAwDVcD/f2uWbpHUH+gM0BZstGsE6kjaSPrJ75NW/IZlVM9tWJYCPQpBCkYDQStIIVGhIYf9NjnqjgNDA+4wEDRAkIkKGDUzyAqYA3ahQxIDJ6nngId2v039yE20uR9ST/KELhruhX79dcgFNtGFPHCDzbwB8ogumIFerI5dqB8YrICQd9hUv+X+pIugoAIZyOaEQvnchssucAVCxn6behcdkPqJwhV4cWqBmRw6FGgA/1bjvSAFZMAkXe9igU1aIUPqNl9y8S5YodaNkFiWbhMvDkPSClTAuk+AnGCoJX6MlWEIAYuDfgAAAABJRU5ErkJggg==\" id=\"imageaca7a31005\" transform=\"scale(1 -1) translate(0 -116.64)\" x=\"366.48\" y=\"-36.72\" width=\"5.76\" height=\"116.64\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6035,12 +6040,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6050,12 +6055,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6065,12 +6070,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", From 1f3ad633c28ff12403b11ee6cd573faa52fdda0b Mon Sep 17 00:00:00 2001 From: Y-yyyyq <648203301@qq.com> Date: Mon, 8 Dec 2025 18:40:11 +0800 Subject: [PATCH 17/20] =?UTF-8?q?=E6=B6=88=E9=99=A4=E9=83=A8=E5=88=86?= =?UTF-8?q?=E8=AD=A6=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...lf-attention-and-positional-encoding.ipynb | 117 ++++++++---------- 1 file changed, 55 insertions(+), 62 deletions(-) diff --git a/chapter_10_attention_mechanisms/4_self-attention-and-positional-encoding.ipynb b/chapter_10_attention_mechanisms/4_self-attention-and-positional-encoding.ipynb index c6e7a69..f753962 100644 --- a/chapter_10_attention_mechanisms/4_self-attention-and-positional-encoding.ipynb +++ b/chapter_10_attention_mechanisms/4_self-attention-and-positional-encoding.ipynb @@ -77,8 +77,8 @@ "name": "stderr", "output_type": "stream", "text": [ - "[WARNING] ME(45659:281473853007424,MainProcess):2025-12-08-18:07:47.223.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", - "[WARNING] ME(45659:281473853007424,MainProcess):2025-12-08-18:07:47.235.000 [mindspore/nn/layer/basic.py:200] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n" + "[WARNING] ME(68893:281473780467264,MainProcess):2025-12-08-18:32:50.255.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", + "[WARNING] ME(68893:281473780467264,MainProcess):2025-12-08-18:32:50.268.000 [mindspore/nn/layer/basic.py:200] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n" ] }, { @@ -160,7 +160,7 @@ " \"\"\"位置编码\"\"\"\n", " def __init__(self, num_hiddens, dropout, max_len=1000):\n", " super(PositionalEncoding, self).__init__()\n", - " self.dropout = nn.Dropout(1 - dropout)\n", + " self.dropout = nn.Dropout(p = dropout)\n", " # 创建一个足够长的P\n", " self.P = d2l.zeros((1, max_len, num_hiddens))\n", " X = d2l.arange(max_len, dtype=mindspore.float32).reshape(\n", @@ -195,13 +195,6 @@ ] }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[WARNING] ME(45659:281473853007424,MainProcess):2025-12-08-18:08:00.342.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n" - ] - }, { "data": { "image/svg+xml": [ @@ -213,7 +206,7 @@ " \n", " \n", " \n", - " 2025-12-08T18:08:00.780502\n", + " 2025-12-08T18:33:03.600222\n", " image/svg+xml\n", " \n", " \n", @@ -249,16 +242,16 @@ " \n", " \n", + "\" clip-path=\"url(#p352a3df0b8)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -295,11 +288,11 @@ " \n", " \n", + "\" clip-path=\"url(#p352a3df0b8)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -330,11 +323,11 @@ " \n", " \n", + "\" clip-path=\"url(#p352a3df0b8)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -375,11 +368,11 @@ " \n", " \n", + "\" clip-path=\"url(#p352a3df0b8)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -428,11 +421,11 @@ " \n", " \n", + "\" clip-path=\"url(#p352a3df0b8)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -468,11 +461,11 @@ " \n", " \n", + "\" clip-path=\"url(#p352a3df0b8)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -514,11 +507,11 @@ " \n", " \n", + "\" clip-path=\"url(#p352a3df0b8)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -790,16 +783,16 @@ " \n", " \n", + "\" clip-path=\"url(#p352a3df0b8)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -832,11 +825,11 @@ " \n", " \n", + "\" clip-path=\"url(#p352a3df0b8)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -853,11 +846,11 @@ " \n", " \n", + "\" clip-path=\"url(#p352a3df0b8)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -873,11 +866,11 @@ " \n", " \n", + "\" clip-path=\"url(#p352a3df0b8)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -893,11 +886,11 @@ " \n", " \n", + "\" clip-path=\"url(#p352a3df0b8)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -971,7 +964,7 @@ "L 347.747219 117.633107 \n", "L 352.905925 125.425496 \n", "L 358.064631 131.674804 \n", - "\" clip-path=\"url(#p3be1caf49a)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n", + "\" clip-path=\"url(#p352a3df0b8)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p352a3df0b8)\" style=\"fill: none; stroke-dasharray: 5.55,2.4; stroke-dashoffset: 0; stroke: #bf00bf; stroke-width: 1.5\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p352a3df0b8)\" style=\"fill: none; stroke-dasharray: 9.6,2.4,1.5,2.4; stroke-dashoffset: 0; stroke: #008000; stroke-width: 1.5\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p352a3df0b8)\" style=\"fill: none; stroke-dasharray: 1.5,2.475; stroke-dashoffset: 0; stroke: #ff0000; stroke-width: 1.5\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1476,7 +1469,7 @@ " \n", " \n", " \n", - " 2025-12-08T18:08:01.053412\n", + " 2025-12-08T18:33:03.884133\n", " image/svg+xml\n", " \n", " \n", @@ -1507,20 +1500,20 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAKUAAAE0CAYAAABNZvOIAAAUb0lEQVR4nO2da5DW5XnG793973mBXZblJCALImJcWREFRBQwmpiqDXamYmzqwGpErCXORJk2oWmjtDWNGWFGNAVPNeKMnQoGnA5pCyhGQBC1oogc5KAI7AJ7fg97oB/6jet6zfPysu69y/X7ePXx+b+TufYZrt73cz9Z5Xe/ctrO4L0nvn+mZJfctBC0Xy75MWipeGTBk6AdfvMJ0D490gTayUQCtDvuW0K/80//fC9o902pBK3/1J+A9uwzD4FW85N/A21IdTVoiTj+RjOzk3v3gVZ9w1WgffDaWtC+XfPnoP33b34L2qwfz6HfXvXrFaDdufA+0F55/Deg/fBv54H20j8+A9rdP72ffvvFxU+DNudn80F7/rFloGXTHYXoRmRK4Q6ZUrhDphTuiFo+fBvEhWvH4sq8QpBe2HCAbrp0djWKfStAak20g9avKBe0jtOQxcxyC+i3m5OdoGVlZeFCsmdbB/63Rv7bzs7Ab5iZnSZ7iq9FJ6Vwh0wp3CFTCnfIlMIdUeXNt4H4+opVoPW7bCJon2z+iG46+L7JoOUPHQlaUxyDTklBBFqirQM/kl9Mv92SJGsZJIAkO0igysK/29OduC5l0CGErs0O3DKNT/cIdFIKd8iUwh0ypXCHTCncET1fczWI07e+B9p3ZlwM2qv/spFu2r8kD7RhlYNAa4ph0Knomw9aczwHP5Ii6DQlAisopKKTyKCik52d4u+bfKe3BZNzjU5K4Q6ZUrhDphTukCmFO2RK4Y5o/IWlIN59P5Ye76waAtqrpEfSzKwwD9Ny1cUDQDvSEgNtXNQHtIJc/NuJiorot2NJTPQUVmZsDysz0vSdkyp9p9F7GcI31J+ZZd33/yLQSSncIVMKd8iUwh0ypXBHtPNwA4g/v3EMaDmkuW/IlTjpwcysk/QbTh1dCtqhBgw6uSQw5EWo5RdiOdLMLBbaT0mg/ZTZGNoy7aeknOtAlIKeUOLUSSncIVMKd8iUwh0ypXBHVPPCdhDfXDgdtAJSpbl9xii6aQuZfDFhYCloK3ceBS2bBCoWdAqK+YSMGPn2aTZhg/VTtnfFhIwuCEW9HJ2Uwh0ypXCHTCncIVMKd0SfrVkN4oqZOCP8B+OHgXZn1VC6aV1TErTBpRhMDtc1g8aqQXmkylOUKuiQig7ZktIlEzJopSbs94TGoexubDPrCnRSCnfIlMIdMqVwh0wp3BHlXzoJxEVLN4B26T/cCto1o8rppls+PwnapMr+oB053gIamzuek4P/kC8uxikcZmZxckeHVnQItKLDWtc09aJL0Ukp3CFTCnfIlMIdMqVwR7RkwXUgzpv/JGjLt4wHbcZYPoxg65f1oE0na2trsaLDwkYRaZvr04cHnQRtXaNLgdCKjlrXuhadlMIdMqVwh0wp3CFTCndEf3Y5tqQtv2MWaBvf3A3a0e9fRjfdvBcrOp3T8R/8jScbQWtJYOtZST4++NSvhA8j+OKrJtDoK7iEJKvo5IQOIwj6ROq1PTQQZXfBb9RJKdwhUwp3yJTCHTKlcEd0ohnv0zwz+wrQrnp1NWh/OHg93XT3njrQmkmlJXYKJ741k5dth5D7PaVFvKKzn7SusXs/DNY2l/kwgq4fB90D8lBa6KQU7pAphTtkSuEOmVK4Q6YU7ogWrt0F4gt3YfpmZbAVmw7STY8exBF/bGqGNWFKb2hto3ueSRl5vtnMLEHKlKETMtroxTEyIYP8b8FGGP7/4rOfZZ5qy96OTkrhDplSuEOmFO6QKYU7otdXrALx7auHg5Y/dgJoWzd9ync9th+kAydxGobFsJ/yq1Z88MmsDJSK4lz66TZSZuzIoMzIQkmX9FN+Q/SIHs3u/gFCnIlMKdwhUwp3yJTCHZHlF4NY8/Rm0KZPvwS0dcte5LuSiscWMjXD2uIg7T+FQYf1Q5YX42UyM7O2JFaE2lnQIf/gZxWdbFLRyXRChvh6dFIKd8iUwh0ypXCHTCncEd097xYQX1z8NGg19y4Cbd1zJXzXJIaVrWRqBgsB++sw/LCKTP/CVBUdDDq0okNG/IVWdCwsN6WE73n2LW69DZ2Uwh0ypXCHTCncIVMKd0Q/v3EMiGvW3wDahOHYPlZaNZFuWr/3M9DY1Az2cNIh8rItCyr98njQaW/D1rV2NvmCwEYBZpGLMh3teA+oK16xDaWnBKLQn6mTUrhDphTukCmFO2RK4Y6oMBfDxooHpoJWTi7/3zzjYrrp6lgCtGMHv8KF+UUgHQ182bZvGkGHV3RI6xr5Dmtdaz+N30gnbITOCe8h+eWco5NSuEOmFO6QKYU7ZErhjmjFNpyc9sA1laA1xbAlrOZKfBjKzGzHp8dB2/1f63FhUSlIJ0hFh70uywKaWaqKTljrWjubuka7zNIYRtBD7+h0Z8jSSSncIVMKd8iUwh0ypXCHTCncES1asgHEPxkzCDT2MtklQ/vQTS8fMwC03a/j62I2eBRI7Lll1ueYn5vi7ymJvzN0QgZL36zMyHokU848J5yn1cNgdFIKd8iUwh0ypXCHTCncEdnhj0G8/9UPQBs1uC9oy0ZV0U2njS4F7d9zcHRf3zLcs/ErfBiKBx1eZmTjBenFMXJpLTjodGZ6cSz0cSdW4yQPS6WRnHrCg1E6KYU7ZErhDplSuEOmFO6IJs6+HcStK18DbfcV14B24rtj6aaXV/RDsR9WiUrLsSLUuOcT0BJtGCzKivkrttaOFZ22wH7Ktrawfkr2LG7G/Yc9tO+yK9BJKdwhUwp3yJTCHTKlcEf0zOxqECduwrBR/9F20HYcvpZuWjUEg07RsJGgDRyIM9MPkZdtY0kMOoP6pfh76sALbmzyBavodAROyLDONCZkkAATGoo0IUMIJ8iUwh0ypXCHTCncEY0aiK/YLnpwJmiPPrwEtBVbDtFNX/yLCaCNGIUVnQsG4Le3t+EYwWYy9SLKSZECSEUn3oFBKbM7OplVdEJHAZ6v6KQU7pAphTtkSuEOmVK4I3p7Lz66NG/ySNAerawG7c2Nu+mmBXOuAo0NKBjSL/+P/0Iza0hglSZKddmEVHTi5DGm0Ds67HGntIYRkLXnmp7yuFMoOimFO2RK4Q6ZUrhDphTuiO55eguI7z72XdAmTbsEtK0v/wfdtKPzLtCmjSb3dhhkaEFDEsNLTqpgQQYFxGjQwe+Et67hfmlNXQtuXetdASYUnZTCHTKlcIdMKdwhUwp3RMc3rQNx8fqLQLtn2oWgbV3J/yHeHMdWs6oBGHROxrHNzPKxne1EK+6XedDJpKKT2eNO52uACUUnpXCHTCncIVMKd8iUwh0ypXBHVH7Nt0FcvuwN0B5a+VegFYzFC2JmZrWNePlrcGkBaDmNJIUWl4FU14xlxpQJlqTvOHsymaTvztAyYwZzzM3C546fryFdJ6Vwh0wp3CFTCnfIlMId0fL5OMv89h9tA20wueQ1Yzr2WJqZ7T/VDNp15RWgJciM8ZxSvGBW14JBJyUk6DQlQsuMZBJHhH2X/HGnsJ+Xkm/ggpmZWVYPeENXJ6Vwh0wp3CFTCnfIlMId0fSLMYDcPBcffGKh5J5Jw+mmbx08BdpN4waDVpyPYaNPGT74VN+MFaLTqR5DInpL8uwrOll5gS/JssqPWcbVnxB6W+VHJ6Vwh0wp3CFTCnfIlMId0ee1rSD+6rZLQdt3vAW06mGldNNfrd8LWjsJEYV5GDbKyMu29a14wYw8JJuSFvI4FJvEkVnrWvjvCV2a3QOqL12BTkrhDplSuEOmFO6QKYU7ovmvfgDi2vungPbU5oOgLf4eb13b81ktaGxqRkkBho1Bg/Bl2+ZmDDodaSSdZlrRIaMAySQNOuIvnakXqSpPIiU6KYU7ZErhDplSuEOmFO6Itq58DcTfXYdj/17bsA+0hTNG003rDh4BrbYJw0ppcR5ow8pxFOCOXcdAYxWiVMSSGLKM3L3pIK/d8qCTYUUncHF3tqR150u7OimFO2RK4Q6ZUrhDphTuiGzoWBAfXLIJtNYDn4G26whWfszMrA6rP/tP4oCCMYOxelNZUQjapu0Ykto6wislMdK6lpUTOnUtw1dsCWksDaK3zVDXSSncIVMKd8iUwh0ypXCHTCncES16cCaIjz68BFeSvsBntx/mu8Yxaf/hUANoN4wdCNro/jgbPd4SB60tVZmRJNHWBHmxLKP0nU4/ZddPyOht6KQU7pAphTtkSuEOmVK4I5o3eSSIL998K2j73/8UtN9v3JNiV+yT3LbvBGhJ0o95QUkRaPFWDDpJ9mCTGR3xFyNBhz2ZzC6O5eSc+wkZofSEQNQVP1EnpXCHTCncIVMKd8iUwh0R60t8vmYSaPNX5oL28Rvr+K6lON98z2fHQYuROerlRRiSEjGcec5msJuZWRb+ncVJP2U2CTBtCXxEKrSik85Fq+7MLz0gO+mkFP6QKYU7ZErhDplSuCNaTOaT//KWcaDdPX0kaI+sitFNS4bjhI0TB78ErSVwPKDFmkCKt5E55mZ0lnmSTMhgrWvWERp0SItbGgmCrqXhKXjLXoVOSuEOmVK4Q6YU7pAphTui5U+tAfEvxw8F7cbReJ8mq3I83XTk6EGg7dz1PmiNMQwWF/THCRmWwAeo4qkqOqR1LR4nLWkRCzqZzDznP+ebmHne2wKRTkrhDplSuEOmFO6QKYU7Ios1gjjnuW2gbf4ZDi2Ycj1WfszMKgfhS7Q7yYCC2lZsSbuIPO5kSQw6TUkMSWZmloMtdglyR4e1rgVXdAg9pXWtJ6CTUrhDphTukCmFO2RK4Y7o5jmzQPzPp14A7fRPMejce+0IummSTC97mQwo+LIZW99yI/J30oaBqCGNoJMkd3Ro61onW9edjzudn4lIJ6Vwh0wp3CFTCnfIlMId0RN/+i0QN2ycDNqhE1hVmTKinG5a24jBxMqwHW5vHU5Ty2EVFFJpqY+nCDokULWxOzqsdY0EndDWNfq7U3Ce5pdgdFIKd8iUwh0ypXCHTCncIVMKd0QVfTCtLl1wHWhrdh8DbcG0UXRTVh7rMxxLkgfqMNFTSCqubUknfePavAJcF56+03iwiawNJTSlZ1nvivM6KYU7ZErhDplSuEOmFO6IVu88AuKsqgtAm/zo/4B2H3kYysystAh7GkeSCRtf1rWA1s5epyVlvdoWLB2aWXDQKSzG13J5P2XY3206USO7lwWTc41OSuEOmVK4Q6YU7pAphTuiv17yFojX/vp20Pa9+yFqx66mm142vB9oV4ypAG3j9sOgpXy06QxONif5/yEPAwwLOhG7oJZBP2U6l7y6s58ynUke3YVOSuEOmVK4Q6YU7pAphTui2M7NID685hJcWXsApN/+L1aDzMweG4qjAKeNwvCzet0noLWSaRYsGTS08qAT5eLjTh3kIajMgg6GsXQujoWiCRlCOEGmFO6QKYU7ZErhjmj0924Dce2zr+HK/tjOtoq8gGtm9sj1o0EbV94XtMZTOG+9hcwnZ+P96pvJFA4zy8nFyRcJMludtqSx1rXAANMVowDD9zun23XZnqHopBTukCmFO2RK4Q6ZUrgjem4utp9dv2UHaBdOrAbt4Dvv0E1rG6eDNrBvPi5sqAOpMUaCDrl309TEKzq5eeRxp4Ym3JJVdEilhrZ6kda1lC1hdC1ferbrehs6KYU7ZErhDplSuEOmFO6ILh+BLWVz598KWkUxBojH162hm+45icHipoGDcWFrPUjHWnAOuuViSGpOUdFhrWvWhnuGtq5F7HEnQndWdHobOimFO2RK4Q6ZUrhDphTukCmFO6KPDjWAuOiGi0A7Tl4Re3zoWLrp2wdxz1suwxfHLIEzzw834XPLll8MUmsLT9+szGjtWJLMzWVlxrN/SYxeMBNnhU5K4Q6ZUrhDphTukCmFO6K5z28D8a2/mQHayAoMG1VTq+im7+09ARqdZU7KenvIc8ss6MRbyToz61uG0znY08wRe1o5uJ+SrEtjjvn5+mhTKDophTtkSuEOmVK4Q6YU7oj2vvE6iP86sxK0B6fii7VzZ4ykm/7iRbx41sAuhJF/8R8mDz7lFIUHnYrBZSiSik4O65PMoKLTnf2UPWGOeTropBTukCmFO2RK4Q6ZUrgjKvjWZBD/ful60G6/dAhoMyvxZVozs4cOfQFaLWl9s1x8iOkICTr5hXhxrJVMvTAzy8sjlRpS0cllowBJpSai684+EKVDbxvxF4pOSuEOmVK4Q6YU7pAphTuipQuuA/FH858EbePntaD9YMIIvusJfJ2WTc2wQpyDfvw4Bp2CIgxErUf5w1IFBWRCBmmRy6WjAMnYvuCKTniC0HWer0cnpXCHTCncIVMKd8iUwh3RrCp8tGn57FmgPffmAdBmVw/nuyZxoMCmAzigwPoMAKn+BK4rLcdxhWyQgZlZfn5g0Ams6OQEBpi0WtfO07s3oeikFO6QKYU7ZErhDplSuCOqJY8kPX1HNWgT570E2oG7ruS7khnlO/biQ06FZRhgWuqx8jPswgr8BpljbmZWwFrXQis6hK6o6IQuDb170xPa0dJBJ6Vwh0wp3CFTCnfIlMId0cO/+xjEl344AVd+getW7zrKd+0/DKR9e46D1rc/tq7FvjgAWp8+4/AbKYJOYWhFJ7B1LfRxp9DKj/jj6KQU7pAphTtkSuEOmVK4Q6YU7ojeeG4ViJsmkwthJf1BemXDfrppvxHYZ1l/CC+TXXZtNWjHYo2g9S3Ow490kNGCZlbIyowkVeexfkpCV4wCPF/Lh6HopBTukCmFO2RK4Q6ZUrgjYlMqapa9A1pF9UTQPn/3fbrphO9MAW3Hh1tBGzpwKmg7yaWz0hISdEjp0MysMI+UGQnB/ZSBaSOduePna4AJRSelcIdMKdwhUwp3yJTCHVHN/FtBfPYXT4FW83cP4Lq3f083veKi20DbQQLM8AEl+B+TAFNWjBfRUlHE+ikJeewVWwKdeU4IvWBmFn7J7Fyv6ynf1kkp3CFTCnfIlMIdMqVwx/8BoZK3aGWytYIAAAAASUVORK5CYII=\" id=\"image83c73232ef\" transform=\"scale(1 -1) translate(0 -221.76)\" x=\"40.603125\" y=\"-9.151219\" width=\"118.8\" height=\"221.76\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1556,7 +1549,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1929,12 +1922,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1947,7 +1940,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1977,7 +1970,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1991,7 +1984,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2039,7 +2032,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2074,7 +2067,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2256,18 +2249,18 @@ "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAAkAAAC5CAYAAAD6WxVlAAAA+ElEQVR4nO2YMQ4DMQgEHcn/f26KKOA8gSlGyJxyNWLwrgHrXu/POav49lllzNogZu0kQTfiapVwEMGhwqEE5HR1onYcVNzCocKRBM24sS317A4WcVNbqhkXKJNmsIdjmbRLN1YnNDOzTgQvnYdLMMXEtWHqBIKCnA7VFKConVojfJEtogQgEwryWsqTgBnsPSF7bWGZ6kRw9CAcs0VrTraDWeGtBjPFvaXYazDL5D0ephrMdrBmMMSNLfw+XGY9f80OBrtMHNFeSyGd2I8OZjCyhZxO1KkVd6Pif4NNHFMcBZEfZxkajgQxXHPhvbiYWngzzrsqAPcDIkusk8oTmTgAAAAASUVORK5CYII=\" id=\"imagecbf2b8d896\" transform=\"scale(1 -1) translate(0 -133.2)\" x=\"168.48\" y=\"-52.56\" width=\"6.48\" height=\"133.2\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2299,7 +2292,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2314,7 +2307,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2329,7 +2322,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2357,7 +2350,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", From c4311347631f75bc524b8c3076fbc975e3a90e9a Mon Sep 17 00:00:00 2001 From: Y-yyyyq <648203301@qq.com> Date: Mon, 8 Dec 2025 19:11:18 +0800 Subject: [PATCH 18/20] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20sys.path.append?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- chapter_11_optimization/adadelta.ipynb | 521 ++- chapter_11_optimization/adagrad.ipynb | 2732 ++++++------ chapter_11_optimization/adam.ipynb | 774 ++-- chapter_11_optimization/convexity.ipynb | 8 + chapter_11_optimization/gd.ipynb | 3388 ++++++++------- chapter_11_optimization/lr-scheduler.ipynb | 3660 +++++++++++++---- chapter_11_optimization/minibatch-sgd.ipynb | 9 +- chapter_11_optimization/momentum.ipynb | 9 +- .../optimization-intro.ipynb | 9 +- chapter_11_optimization/rmsprop.ipynb | 9 +- chapter_11_optimization/sgd.ipynb | 9 +- 11 files changed, 6429 insertions(+), 4699 deletions(-) diff --git a/chapter_11_optimization/adadelta.ipynb b/chapter_11_optimization/adadelta.ipynb index a72f92b..f4a66e3 100644 --- a/chapter_11_optimization/adadelta.ipynb +++ b/chapter_11_optimization/adadelta.ipynb @@ -18,11 +18,14 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 4, "id": "7c4d517b", "metadata": {}, "outputs": [], "source": [ + "import sys\n", + "sys.path.append('..')\n", + "\n", "%matplotlib inline\n", "import mindspore\n", "from d2l import mindspore as d2l\n", @@ -52,7 +55,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "loss: 0.245, 0.125 sec/epoch\n" + "loss: 0.139, 0.604 sec/epoch\n" ] }, { @@ -61,16 +64,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T02:27:28.957062\n", + " 2025-12-08T18:44:15.964346\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.7, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -81,18 +84,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p4c808ca7ed)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p4c808ca7ed)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p4c808ca7ed)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p4c808ca7ed)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p4c808ca7ed)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -594,27 +596,27 @@ " \n", " \n", + "\" clip-path=\"url(#p4c808ca7ed)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -703,19 +690,17 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "
\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -735,7 +720,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "loss: 0.243, 0.075 sec/epoch\n" + "loss: 0.216, 0.141 sec/epoch\n" ] }, { @@ -744,16 +729,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T02:27:40.351287\n", + " 2025-12-08T18:44:32.184719\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.7, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -764,18 +749,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pf62b638dcd)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pf62b638dcd)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pf62b638dcd)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pf62b638dcd)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pf62b638dcd)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1288,27 +1272,27 @@ " \n", " \n", + "\" clip-path=\"url(#pf62b638dcd)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -1409,19 +1396,17 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -1433,9 +1418,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3.10", "language": "python", - "name": "python3" + "name": "py310" }, "language_info": { "codemirror_mode": { @@ -1447,7 +1432,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.10" + "version": "3.10.14" }, "toc": { "base_numbering": 1, diff --git a/chapter_11_optimization/adagrad.ipynb b/chapter_11_optimization/adagrad.ipynb index 17a4424..59e1e1e 100644 --- a/chapter_11_optimization/adagrad.ipynb +++ b/chapter_11_optimization/adagrad.ipynb @@ -18,7 +18,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 7, "id": "1a64f376", "metadata": {}, "outputs": [ @@ -35,16 +35,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T02:14:25.787920\n", + " 2025-12-08T18:50:16.529756\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.7, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -55,18 +55,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -239,17 +238,17 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -893,23 +879,24 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], "source": [ + "import sys\n", + "sys.path.append('..')\n", + "\n", "%matplotlib inline\n", "import math\n", "import mindspore\n", @@ -950,16 +937,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T02:14:33.781314\n", + " 2025-12-08T18:49:25.524295\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.7, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -970,18 +957,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1154,17 +1140,17 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -1808,19 +1781,17 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -1866,7 +1837,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "loss: 0.242, 0.430 sec/epoch\n" + "loss: 0.139, 0.052 sec/epoch\n" ] }, { @@ -1875,16 +1846,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T02:14:44.737063\n", + " 2025-12-08T18:49:31.656775\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.7, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -1895,18 +1866,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p149411e4a4)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p149411e4a4)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p149411e4a4)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p149411e4a4)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p149411e4a4)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -2408,27 +2378,27 @@ " \n", " \n", + "\" clip-path=\"url(#p149411e4a4)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -2517,19 +2472,17 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -2557,7 +2510,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "loss: 0.243, 0.062 sec/epoch\n" + "loss: 0.217, 0.723 sec/epoch\n" ] }, { @@ -2566,16 +2519,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T02:14:56.156883\n", + " 2025-12-08T18:50:05.312757\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.7, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -2586,18 +2539,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p62d1c9d175)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p62d1c9d175)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p62d1c9d175)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p62d1c9d175)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p62d1c9d175)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -3110,27 +3062,27 @@ " \n", " \n", + "\" clip-path=\"url(#p62d1c9d175)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -3234,19 +3186,17 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -3258,9 +3208,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3.10", "language": "python", - "name": "python3" + "name": "py310" }, "language_info": { "codemirror_mode": { @@ -3272,7 +3222,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.10" + "version": "3.10.14" }, "toc": { "base_numbering": 1, diff --git a/chapter_11_optimization/adam.ipynb b/chapter_11_optimization/adam.ipynb index 4927931..240119b 100644 --- a/chapter_11_optimization/adam.ipynb +++ b/chapter_11_optimization/adam.ipynb @@ -18,11 +18,14 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "id": "be011b8e", "metadata": {}, "outputs": [], "source": [ + "import sys\n", + "sys.path.append('..')\n", + "\n", "%matplotlib inline\n", "import mindspore\n", "from d2l import mindspore as d2l\n", @@ -46,7 +49,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "id": "1823c8ac", "metadata": {}, "outputs": [ @@ -54,7 +57,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "loss: 0.244, 0.138 sec/epoch\n" + "loss: 0.142, 0.063 sec/epoch\n" ] }, { @@ -63,16 +66,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T02:28:29.566092\n", + " 2025-12-08T18:51:29.985810\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.7, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -83,18 +86,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p53cefa1bd1)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p53cefa1bd1)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p53cefa1bd1)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p53cefa1bd1)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p53cefa1bd1)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -596,27 +598,27 @@ " \n", " \n", + "\" clip-path=\"url(#p53cefa1bd1)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -705,19 +692,17 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -729,7 +714,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "id": "7e7b9fea", "metadata": {}, "outputs": [ @@ -737,7 +722,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "loss: 0.243, 0.057 sec/epoch\n" + "loss: 0.218, 0.752 sec/epoch\n" ] }, { @@ -746,16 +731,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T02:28:42.193418\n", + " 2025-12-08T18:52:07.338991\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.7, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -766,18 +751,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p0d125f7ef0)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p0d125f7ef0)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p0d125f7ef0)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p0d125f7ef0)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p0d125f7ef0)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1290,27 +1274,27 @@ " \n", " \n", + "\" clip-path=\"url(#p0d125f7ef0)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -1414,19 +1398,17 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -1445,7 +1427,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "id": "fbbe624f", "metadata": {}, "outputs": [ @@ -1453,7 +1435,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "loss: 0.243, 0.192 sec/epoch\n" + "loss: 0.139, 0.060 sec/epoch\n" ] }, { @@ -1462,16 +1444,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T02:28:50.948146\n", + " 2025-12-08T18:52:51.850765\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.7, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -1482,18 +1464,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p6fc0c0edec)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p6fc0c0edec)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p6fc0c0edec)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p6fc0c0edec)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p6fc0c0edec)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1995,27 +1976,27 @@ " \n", " \n", + "\" clip-path=\"url(#p6fc0c0edec)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -2104,19 +2070,17 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -2142,9 +2106,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3.10", "language": "python", - "name": "python3" + "name": "py310" }, "language_info": { "codemirror_mode": { @@ -2156,7 +2120,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.10" + "version": "3.10.14" }, "toc": { "base_numbering": 1, diff --git a/chapter_11_optimization/convexity.ipynb b/chapter_11_optimization/convexity.ipynb index d1b4afa..c42b401 100644 --- a/chapter_11_optimization/convexity.ipynb +++ b/chapter_11_optimization/convexity.ipynb @@ -1602,6 +1602,14 @@ "d2l.set_figsize()\n", "d2l.plot([x, segment], [f(x), f(segment)], 'x', 'f(x)')" ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "eb71705e", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/chapter_11_optimization/gd.ipynb b/chapter_11_optimization/gd.ipynb index ed814ea..e8cb8a9 100644 --- a/chapter_11_optimization/gd.ipynb +++ b/chapter_11_optimization/gd.ipynb @@ -18,11 +18,14 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "id": "42c3c9fa", "metadata": {}, "outputs": [], "source": [ + "import sys\n", + "sys.path.append('..')\n", + "\n", "%matplotlib inline\n", "import numpy as np\n", "import mindspore\n", @@ -37,7 +40,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "id": "6aa6fb7e", "metadata": {}, "outputs": [ @@ -64,7 +67,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "id": "bafdaef9", "metadata": {}, "outputs": [ @@ -74,16 +77,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T01:22:20.927517\n", + " 2025-12-08T18:55:09.465661\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.7, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -94,18 +97,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pe4a52bddc9)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pe4a52bddc9)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pe4a52bddc9)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pe4a52bddc9)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pe4a52bddc9)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -726,19 +728,17 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -763,7 +763,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "id": "0649400b", "metadata": {}, "outputs": [ @@ -780,16 +780,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T01:22:23.056849\n", + " 2025-12-08T18:55:11.799913\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.7, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -800,18 +800,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p16cd1ec465)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p16cd1ec465)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p16cd1ec465)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p16cd1ec465)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p16cd1ec465)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -1432,19 +1431,17 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -1454,7 +1451,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "id": "17830037", "metadata": {}, "outputs": [ @@ -1471,16 +1468,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T01:24:22.669264\n", + " 2025-12-08T18:55:16.627889\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.7, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -1491,43 +1488,42 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1856,16 +1852,16 @@ " \n", " \n", + "\" clip-path=\"url(#pd4fba787b0)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -2104,7 +2098,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "id": "69b4bad2", "metadata": {}, "outputs": [ @@ -2112,7 +2106,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "epoch 10, x: -1.528165\n" + "epoch 10, x: -1.528166\n" ] }, { @@ -2121,16 +2115,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T01:24:53.492874\n", + " 2025-12-08T18:55:19.040572\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.7, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -2141,18 +2135,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p738167f629)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p738167f629)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p738167f629)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p738167f629)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p738167f629)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -2633,19 +2626,17 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -2671,7 +2662,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "id": "082aa2f4", "metadata": {}, "outputs": [], @@ -2703,7 +2694,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "id": "6f173199", "metadata": {}, "outputs": [ @@ -2720,16 +2711,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T01:26:05.399900\n", + " 2025-12-08T18:55:22.915557\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.7, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -2740,18 +2731,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2924,17 +2914,17 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", - " \n", - " \n", - " \n", + " \n", + "\" clip-path=\"url(#p89888d3f33)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -3412,19 +3394,17 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -3461,7 +3441,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "id": "68087a46", "metadata": {}, "outputs": [ @@ -3478,16 +3458,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T01:26:47.264478\n", + " 2025-12-08T18:55:26.748427\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.7, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -3498,18 +3478,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p3191f2749e)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p3191f2749e)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p3191f2749e)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p3191f2749e)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p3191f2749e)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -4058,19 +4038,17 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -4100,7 +4078,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "id": "a2d4c26e", "metadata": {}, "outputs": [ @@ -4117,16 +4095,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T01:29:14.507463\n", + " 2025-12-08T18:55:31.466659\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.7, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -4137,18 +4115,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p56c8c51dca)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p56c8c51dca)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p56c8c51dca)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -4693,19 +4672,17 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -4726,7 +4703,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "id": "ec273900", "metadata": {}, "outputs": [ @@ -4743,16 +4720,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T01:30:08.993823\n", + " 2025-12-08T18:55:33.835156\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.7, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -4763,18 +4740,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p45c72b15f6)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p45c72b15f6)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p45c72b15f6)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p45c72b15f6)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p45c72b15f6)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -5255,19 +5231,17 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -5278,9 +5252,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3.10", "language": "python", - "name": "python3" + "name": "py310" }, "language_info": { "codemirror_mode": { @@ -5292,7 +5266,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.10" + "version": "3.10.14" }, "toc": { "base_numbering": 1, diff --git a/chapter_11_optimization/lr-scheduler.ipynb b/chapter_11_optimization/lr-scheduler.ipynb index 41cad68..a8e42cd 100644 --- a/chapter_11_optimization/lr-scheduler.ipynb +++ b/chapter_11_optimization/lr-scheduler.ipynb @@ -18,11 +18,14 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "id": "47980ea0", "metadata": {}, "outputs": [], "source": [ + "import sys\n", + "sys.path.append('..')\n", + "\n", "%matplotlib inline\n", "import math\n", "import mindspore\n", @@ -104,7 +107,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 3, "id": "f69d3a9d", "metadata": {}, "outputs": [], @@ -133,7 +136,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "train loss 694451963869065584049010050596864.000, train acc 0.209, test acc 0.301\n" + "train loss 0.319, train acc 0.882, test acc 0.870\n" ] }, { @@ -147,11 +150,11 @@ " \n", " \n", " \n", - " 2023-02-23T20:58:52.168125\n", + " 2025-12-08T18:58:33.692195\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.6.3, https://matplotlib.org/\n", + " Matplotlib v3.10.7, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -183,16 +186,16 @@ " \n", " \n", + "\" clip-path=\"url(#p8f48f4b419)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -229,11 +232,11 @@ " \n", " \n", + "\" clip-path=\"url(#p8f48f4b419)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -263,11 +266,11 @@ " \n", " \n", + "\" clip-path=\"url(#p8f48f4b419)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -307,11 +310,11 @@ " \n", " \n", + "\" clip-path=\"url(#p8f48f4b419)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -359,11 +362,11 @@ " \n", " \n", + "\" clip-path=\"url(#p8f48f4b419)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -398,11 +401,11 @@ " \n", " \n", + "\" clip-path=\"url(#p8f48f4b419)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -557,10 +560,10 @@ "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -569,16 +572,16 @@ " \n", " \n", + "\" clip-path=\"url(#p8f48f4b419)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -594,8 +597,8 @@ "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -603,19 +606,19 @@ " \n", " \n", + "\" clip-path=\"url(#p8f48f4b419)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -623,19 +626,19 @@ " \n", " \n", + "\" clip-path=\"url(#p8f48f4b419)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -643,19 +646,19 @@ " \n", " \n", + "\" clip-path=\"url(#p8f48f4b419)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -663,56 +666,76 @@ " \n", " \n", + "\" clip-path=\"url(#p8f48f4b419)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -923,14 +946,14 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -943,20 +966,20 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1004,7 +1027,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "learning rate is now 0.30\n" + ".learning rate is now 0.10\n" ] } ], @@ -1031,7 +1054,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 7, "id": "02f69ee7", "metadata": {}, "outputs": [ @@ -1041,16 +1064,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-02-23T21:00:24.300243\n", + " 2025-12-08T18:59:13.755313\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.6.3, https://matplotlib.org/\n", + " Matplotlib v3.10.7, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -1062,8 +1085,8 @@ " \n", " \n", " \n", @@ -1082,16 +1105,16 @@ " \n", " \n", + "\" clip-path=\"url(#p2ef74e6e5b)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1126,18 +1149,18 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", + "\" clip-path=\"url(#p2ef74e6e5b)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", + "\" clip-path=\"url(#p2ef74e6e5b)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1558,26 +1527,33 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "id": "71bbba03", "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "train loss 0.366, train acc 0.867, test acc 0.853\n" + ] + }, { "data": { "image/svg+xml": [ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-02-23T21:04:10.181314\n", + " 2025-12-08T19:00:00.328514\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.6.3, https://matplotlib.org/\n", + " Matplotlib v3.10.7, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -1589,8 +1565,8 @@ " \n", " \n", " \n", @@ -1609,16 +1585,16 @@ " \n", " \n", + "\" clip-path=\"url(#pede136d783)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1653,63 +1629,1971 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "net = net_fn()\n", + "lr_list = d2l.tensor([scheduler(t) for t in range(num_epochs) for i in range(steps_per_epoch)])\n", + "trainer = nn.SGD(net.trainable_params(), lr_list)\n", + "train(net, train_iter, test_iter, num_epochs, loss, trainer)" + ] + }, + { + "cell_type": "markdown", + "id": "bbc67605", + "metadata": {}, + "source": [ + "#### 11.11.3.1. 单因子调度器" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "c271bc7a", + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2025-12-08T19:00:07.671603\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.10.7, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "class FactorScheduler:\n", + " def __init__(self, factor=1, stop_factor_lr=1e-7, base_lr=0.1):\n", + " self.factor = factor\n", + " self.stop_factor_lr = stop_factor_lr\n", + " self.base_lr = base_lr\n", + "\n", + " def __call__(self, num_update):\n", + " self.base_lr = max(self.stop_factor_lr, self.base_lr * self.factor)\n", + " return self.base_lr\n", + "\n", + "scheduler = FactorScheduler(factor=0.9, stop_factor_lr=1e-2, base_lr=2.0)\n", + "d2l.plot(d2l.arange(50), [scheduler(t) for t in range(50)])" + ] + }, + { + "cell_type": "markdown", + "id": "eb5f8ed5", + "metadata": {}, + "source": [ + "#### 11.11.3.2. 多因子调度器" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "0828bec8", + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2025-12-08T19:00:09.455667\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.10.7, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "class MultiFactorScheduler:\n", + " def __init__(self, step, factor, base_lr):\n", + " self.step = step\n", + " self.factor = factor\n", + " self.base_lr = base_lr\n", + "\n", + " def __call__(self, epoch):\n", + " if epoch in self.step:\n", + " self.base_lr = self.base_lr * self.factor\n", + " return self.base_lr\n", + " else:\n", + " return self.base_lr\n", + "\n", + "scheduler = MultiFactorScheduler(step=[15, 30], factor=0.5, base_lr=0.5)\n", + "d2l.plot(d2l.arange(num_epochs), [scheduler(t) for t in range(num_epochs)])" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "111352a0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "train loss 0.307, train acc 0.885, test acc 0.870\n" + ] + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2025-12-08T19:00:53.359741\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.10.7, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1985,31 +3912,31 @@ "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", + "\" clip-path=\"url(#p1a646e6324)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", - " \n", + " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2022,196 +3949,145 @@ "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", + "\" clip-path=\"url(#p1a646e6324)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", + "\" clip-path=\"url(#p1a646e6324)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", + "\" clip-path=\"url(#p1a646e6324)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", + "\" clip-path=\"url(#p1a646e6324)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2401,61 +4277,61 @@ "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2469,80 +4345,6 @@ "output_type": "display_data" } ], - "source": [ - "net = net_fn()\n", - "lr_list = d2l.tensor([scheduler(t) for t in range(num_epochs) for i in range(steps_per_epoch)])\n", - "trainer = nn.SGD(net.trainable_params(), lr_list)\n", - "train(net, train_iter, test_iter, num_epochs, loss, trainer)" - ] - }, - { - "cell_type": "markdown", - "id": "bbc67605", - "metadata": {}, - "source": [ - "#### 11.11.3.1. 单因子调度器" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c271bc7a", - "metadata": {}, - "outputs": [], - "source": [ - "class FactorScheduler:\n", - " def __init__(self, factor=1, stop_factor_lr=1e-7, base_lr=0.1):\n", - " self.factor = factor\n", - " self.stop_factor_lr = stop_factor_lr\n", - " self.base_lr = base_lr\n", - "\n", - " def __call__(self, num_update):\n", - " self.base_lr = max(self.stop_factor_lr, self.base_lr * self.factor)\n", - " return self.base_lr\n", - "\n", - "scheduler = FactorScheduler(factor=0.9, stop_factor_lr=1e-2, base_lr=2.0)\n", - "d2l.plot(d2l.arange(50), [scheduler(t) for t in range(50)])" - ] - }, - { - "cell_type": "markdown", - "id": "eb5f8ed5", - "metadata": {}, - "source": [ - "#### 11.11.3.2. 多因子调度器" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "0828bec8", - "metadata": {}, - "outputs": [], - "source": [ - "class MultiFactorScheduler:\n", - " def __init__(self, step, factor, base_lr):\n", - " self.step = step\n", - " self.factor = factor\n", - " self.base_lr = base_lr\n", - "\n", - " def __call__(self, epoch):\n", - " if epoch in self.step:\n", - " self.base_lr = self.base_lr * self.factor\n", - " return self.base_lr\n", - " else:\n", - " return self.base_lr\n", - "\n", - "scheduler = MultiFactorScheduler(step=[15, 30], factor=0.5, base_lr=0.5)\n", - "d2l.plot(d2l.arange(num_epochs), [scheduler(t) for t in range(num_epochs)])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "111352a0", - "metadata": {}, - "outputs": [], "source": [ "lr_list = d2l.tensor([scheduler(t) for t in range(num_epochs) for i in range(steps_per_epoch)])\n", "trainer = nn.SGD(net.trainable_params(), lr_list)\n", @@ -2559,7 +4361,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "id": "8e8a5c3e", "metadata": {}, "outputs": [ @@ -2574,11 +4376,11 @@ " \n", " \n", " \n", - " 2023-02-22T23:04:05.292287\n", + " 2025-12-08T19:00:56.246548\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.6.3, https://matplotlib.org/\n", + " Matplotlib v3.10.7, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -2610,16 +4412,16 @@ " \n", " \n", + "\" clip-path=\"url(#p2fab6c72d8)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2656,11 +4458,11 @@ " \n", " \n", + "\" clip-path=\"url(#p2fab6c72d8)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2690,11 +4492,11 @@ " \n", " \n", + "\" clip-path=\"url(#p2fab6c72d8)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2734,11 +4536,11 @@ " \n", " \n", + "\" clip-path=\"url(#p2fab6c72d8)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2786,11 +4588,11 @@ " \n", " \n", + "\" clip-path=\"url(#p2fab6c72d8)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2825,23 +4627,23 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -2954,31 +4756,31 @@ " \n", " \n", + "\" clip-path=\"url(#p2fab6c72d8)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + "\" clip-path=\"url(#p2fab6c72d8)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3026,7 +4828,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "id": "60ba8445", "metadata": {}, "outputs": [ @@ -3041,11 +4843,11 @@ " \n", " \n", " \n", - " 2023-02-22T23:04:05.569894\n", + " 2025-12-08T19:00:57.812790\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.6.3, https://matplotlib.org/\n", + " Matplotlib v3.10.7, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -3077,16 +4879,16 @@ " \n", " \n", + "\" clip-path=\"url(#p888137ecd3)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3123,11 +4925,11 @@ " \n", " \n", + "\" clip-path=\"url(#p888137ecd3)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3157,11 +4959,11 @@ " \n", " \n", + "\" clip-path=\"url(#p888137ecd3)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3201,11 +5003,11 @@ " \n", " \n", + "\" clip-path=\"url(#p888137ecd3)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3253,11 +5055,11 @@ " \n", " \n", + "\" clip-path=\"url(#p888137ecd3)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3294,16 +5096,16 @@ " \n", " \n", + "\" clip-path=\"url(#p888137ecd3)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3358,9 +5160,9 @@ "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -3368,11 +5170,11 @@ " \n", " \n", + "\" clip-path=\"url(#p888137ecd3)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3411,9 +5213,9 @@ "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -3421,20 +5223,20 @@ " \n", " \n", + "\" clip-path=\"url(#p888137ecd3)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -3445,7 +5247,7 @@ "L 134.115625 45.790197 \n", "L 178.501989 85.407853 \n", "L 222.888352 139.5 \n", - "\" clip-path=\"url(#p1eeb595314)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n", + "\" clip-path=\"url(#p888137ecd3)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3515,7 +5317,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 14, "id": "5312a7d2", "metadata": {}, "outputs": [ @@ -3523,7 +5325,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "train loss 3089455025148719102164992.000, train acc 0.135, test acc 0.142\n" + "train loss 0.314, train acc 0.884, test acc 0.870\n" ] }, { @@ -3537,11 +5339,11 @@ " \n", " \n", " \n", - " 2023-02-22T23:04:57.717367\n", + " 2025-12-08T19:01:41.581189\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.6.3, https://matplotlib.org/\n", + " Matplotlib v3.10.7, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -3573,16 +5375,16 @@ " \n", " \n", + "\" clip-path=\"url(#p75522f1332)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3619,11 +5421,11 @@ " \n", " \n", + "\" clip-path=\"url(#p75522f1332)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3653,11 +5455,11 @@ " \n", " \n", + "\" clip-path=\"url(#p75522f1332)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3697,11 +5499,11 @@ " \n", " \n", + "\" clip-path=\"url(#p75522f1332)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3749,11 +5551,11 @@ " \n", " \n", + "\" clip-path=\"url(#p75522f1332)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3788,11 +5590,11 @@ " \n", " \n", + "\" clip-path=\"url(#p75522f1332)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3947,10 +5749,10 @@ "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -3959,16 +5761,16 @@ " \n", " \n", + "\" clip-path=\"url(#p75522f1332)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3984,8 +5786,8 @@ "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -3993,19 +5795,19 @@ " \n", " \n", + "\" clip-path=\"url(#p75522f1332)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -4013,19 +5815,19 @@ " \n", " \n", + "\" clip-path=\"url(#p75522f1332)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -4033,19 +5835,19 @@ " \n", " \n", + "\" clip-path=\"url(#p75522f1332)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -4053,56 +5855,76 @@ " \n", " \n", + "\" clip-path=\"url(#p75522f1332)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -4313,14 +6135,14 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -4333,20 +6155,20 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4378,7 +6200,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 15, "id": "ee8a5ba8", "metadata": {}, "outputs": [ @@ -4393,11 +6215,11 @@ " \n", " \n", " \n", - " 2023-02-22T23:04:57.990175\n", + " 2025-12-08T19:01:47.822591\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.6.3, https://matplotlib.org/\n", + " Matplotlib v3.10.7, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -4429,16 +6251,16 @@ " \n", " \n", + "\" clip-path=\"url(#p782c92fb58)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4475,11 +6297,11 @@ " \n", " \n", + "\" clip-path=\"url(#p782c92fb58)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4509,11 +6331,11 @@ " \n", " \n", + "\" clip-path=\"url(#p782c92fb58)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4553,11 +6375,11 @@ " \n", " \n", + "\" clip-path=\"url(#p782c92fb58)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4605,11 +6427,11 @@ " \n", " \n", + "\" clip-path=\"url(#p782c92fb58)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4646,16 +6468,16 @@ " \n", " \n", + "\" clip-path=\"url(#p782c92fb58)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4671,9 +6493,9 @@ "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -4681,11 +6503,11 @@ " \n", " \n", + "\" clip-path=\"url(#p782c92fb58)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4719,9 +6541,9 @@ "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -4729,20 +6551,20 @@ " \n", " \n", + "\" clip-path=\"url(#p782c92fb58)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -4750,20 +6572,20 @@ " \n", " \n", + "\" clip-path=\"url(#p782c92fb58)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -4771,20 +6593,20 @@ " \n", " \n", + "\" clip-path=\"url(#p782c92fb58)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -4792,20 +6614,20 @@ " \n", " \n", + "\" clip-path=\"url(#p782c92fb58)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -4816,7 +6638,7 @@ "L 134.115625 79.249219 \n", "L 178.501989 47.749219 \n", "L 222.888352 16.249219 \n", - "\" clip-path=\"url(#pb9563135c2)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n", + "\" clip-path=\"url(#p782c92fb58)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4862,7 +6684,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 16, "id": "05973299", "metadata": {}, "outputs": [ @@ -4870,7 +6692,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "train loss 66452015380.343, train acc 0.100, test acc 0.100\n" + "train loss 0.381, train acc 0.861, test acc 0.862\n" ] }, { @@ -4884,11 +6706,11 @@ " \n", " \n", " \n", - " 2023-02-22T23:05:52.549844\n", + " 2025-12-08T19:02:32.165744\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.6.3, https://matplotlib.org/\n", + " Matplotlib v3.10.7, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -4920,16 +6742,16 @@ " \n", " \n", + "\" clip-path=\"url(#pb5ea5a90ae)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4966,11 +6788,11 @@ " \n", " \n", + "\" clip-path=\"url(#pb5ea5a90ae)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5000,11 +6822,11 @@ " \n", " \n", + "\" clip-path=\"url(#pb5ea5a90ae)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5044,11 +6866,11 @@ " \n", " \n", + "\" clip-path=\"url(#pb5ea5a90ae)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5096,11 +6918,11 @@ " \n", " \n", + "\" clip-path=\"url(#pb5ea5a90ae)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5135,11 +6957,11 @@ " \n", " \n", + "\" clip-path=\"url(#pb5ea5a90ae)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5294,10 +7116,10 @@ "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -5306,16 +7128,16 @@ " \n", " \n", + "\" clip-path=\"url(#pb5ea5a90ae)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5331,8 +7153,8 @@ "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -5340,19 +7162,19 @@ " \n", " \n", + "\" clip-path=\"url(#pb5ea5a90ae)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -5360,19 +7182,19 @@ " \n", " \n", + "\" clip-path=\"url(#pb5ea5a90ae)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -5380,19 +7202,19 @@ " \n", " \n", + "\" clip-path=\"url(#pb5ea5a90ae)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -5400,61 +7222,73 @@ " \n", " \n", + "\" clip-path=\"url(#pb5ea5a90ae)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -5665,14 +7499,14 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -5685,20 +7519,20 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5723,9 +7557,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3.10", "language": "python", - "name": "python3" + "name": "py310" }, "language_info": { "codemirror_mode": { @@ -5737,7 +7571,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.5" + "version": "3.10.14" } }, "nbformat": 4, diff --git a/chapter_11_optimization/minibatch-sgd.ipynb b/chapter_11_optimization/minibatch-sgd.ipynb index dba542f..1be7424 100644 --- a/chapter_11_optimization/minibatch-sgd.ipynb +++ b/chapter_11_optimization/minibatch-sgd.ipynb @@ -23,6 +23,9 @@ "metadata": {}, "outputs": [], "source": [ + "import sys\n", + "sys.path.append('..')\n", + "\n", "%matplotlib inline\n", "from d2l import mindspore as d2l\n", "import mindspore\n", @@ -5042,9 +5045,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3.10", "language": "python", - "name": "python3" + "name": "py310" }, "language_info": { "codemirror_mode": { @@ -5056,7 +5059,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.10" + "version": "3.10.14" }, "toc": { "base_numbering": 1, diff --git a/chapter_11_optimization/momentum.ipynb b/chapter_11_optimization/momentum.ipynb index 3373291..667cd37 100644 --- a/chapter_11_optimization/momentum.ipynb +++ b/chapter_11_optimization/momentum.ipynb @@ -923,6 +923,9 @@ } ], "source": [ + "import sys\n", + "sys.path.append('..')\n", + "\n", "%matplotlib inline\n", "import mindspore\n", "from d2l import mindspore as d2l\n", @@ -8229,9 +8232,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3.10", "language": "python", - "name": "python3" + "name": "py310" }, "language_info": { "codemirror_mode": { @@ -8243,7 +8246,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.10" + "version": "3.10.14" }, "toc": { "base_numbering": 1, diff --git a/chapter_11_optimization/optimization-intro.ipynb b/chapter_11_optimization/optimization-intro.ipynb index ce841a5..5daebaf 100644 --- a/chapter_11_optimization/optimization-intro.ipynb +++ b/chapter_11_optimization/optimization-intro.ipynb @@ -15,6 +15,9 @@ "metadata": {}, "outputs": [], "source": [ + "import sys\n", + "sys.path.append('..')\n", + "\n", "%matplotlib inline\n", "import numpy as np\n", "import mindspore\n", @@ -6194,9 +6197,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3.10", "language": "python", - "name": "python3" + "name": "py310" }, "language_info": { "codemirror_mode": { @@ -6208,7 +6211,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.10" + "version": "3.10.14" }, "toc": { "base_numbering": 1, diff --git a/chapter_11_optimization/rmsprop.ipynb b/chapter_11_optimization/rmsprop.ipynb index 4320ffa..bad1969 100644 --- a/chapter_11_optimization/rmsprop.ipynb +++ b/chapter_11_optimization/rmsprop.ipynb @@ -649,6 +649,9 @@ } ], "source": [ + "import sys\n", + "sys.path.append('..')\n", + "\n", "import math\n", "import mindspore\n", "from d2l import mindspore as d2l\n", @@ -3000,9 +3003,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3.10", "language": "python", - "name": "python3" + "name": "py310" }, "language_info": { "codemirror_mode": { @@ -3014,7 +3017,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.10" + "version": "3.10.14" }, "toc": { "base_numbering": 1, diff --git a/chapter_11_optimization/sgd.ipynb b/chapter_11_optimization/sgd.ipynb index e3ac6e5..fc53b0f 100644 --- a/chapter_11_optimization/sgd.ipynb +++ b/chapter_11_optimization/sgd.ipynb @@ -15,6 +15,9 @@ "metadata": {}, "outputs": [], "source": [ + "import sys\n", + "sys.path.append('..')\n", + "\n", "%matplotlib inline\n", "import math\n", "import mindspore\n", @@ -3381,9 +3384,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3.10", "language": "python", - "name": "python3" + "name": "py310" }, "language_info": { "codemirror_mode": { @@ -3395,7 +3398,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.10" + "version": "3.10.14" }, "toc": { "base_numbering": 1, From 10022498d7f109515f04d46e650fb53d28c0ef26 Mon Sep 17 00:00:00 2001 From: Y-yyyyq <648203301@qq.com> Date: Sat, 13 Dec 2025 00:46:37 +0800 Subject: [PATCH 19/20] =?UTF-8?q?=E5=B0=86=E9=83=A8=E5=88=86d2l=E7=AE=97?= =?UTF-8?q?=E5=AD=90=E6=9B=B4=E6=94=B9=E4=B8=BAmint?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../0_nadaraya-waston.ipynb | 46 +- .../1_attention-scoring-functions.ipynb | 549 +- .../2_bahdanau-attention.ipynb | 1281 +--- .../3_multihead-attention.ipynb | 6 +- ...lf-attention-and-positional-encoding.ipynb | 123 +- .../5_transformer.ipynb | 644 +- chapter_11_optimization/adadelta.ipynb | 187 +- chapter_11_optimization/adagrad.ipynb | 363 +- chapter_11_optimization/adam.ipynb | 257 +- chapter_11_optimization/convexity.ipynb | 1605 ++-- chapter_11_optimization/gd.ipynb | 1229 ++-- chapter_11_optimization/minibatch-sgd.ipynb | 1905 +++-- chapter_11_optimization/momentum.ipynb | 6494 ++++++++--------- .../optimization-intro.ipynb | 6474 ++++++++-------- chapter_11_optimization/rmsprop.ipynb | 2061 +++--- chapter_11_optimization/sgd.ipynb | 4564 ++++++------ 16 files changed, 13095 insertions(+), 14693 deletions(-) diff --git a/chapter_10_attention_mechanisms/0_nadaraya-waston.ipynb b/chapter_10_attention_mechanisms/0_nadaraya-waston.ipynb index 471343a..0c752e7 100644 --- a/chapter_10_attention_mechanisms/0_nadaraya-waston.ipynb +++ b/chapter_10_attention_mechanisms/0_nadaraya-waston.ipynb @@ -51,7 +51,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": { "origin_pos": 9, "tab": [ @@ -72,12 +72,12 @@ ], "source": [ "n_train = 50 # 训练样本数\n", - "x_train, _ = d2l.sort(d2l.rand(n_train) * 5) # 排序后的训练样本\n", + "x_train, _ = mint.sort(mint.rand(n_train) * 5) # 排序后的训练样本\n", "\n", "def f(x):\n", - " return 2 * d2l.sin(x) + x**0.8\n", + " return 2 * mint.sin(x) + x**0.8\n", "\n", - "y_train = f(x_train) + d2l.normal((n_train,), 0.0, 0.5) # 训练样本的输出\n", + "y_train = f(x_train) + mint.normal(0.0, 0.5, (n_train,))\n", "x_test = d2l.arange(0, 5, 0.1) # 测试样本\n", "y_truth = f(x_test) # 测试样本的真实输出\n", "n_test = len(x_test) # 测试样本数\n", @@ -1036,7 +1036,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": { "origin_pos": 19, "tab": [ @@ -1971,7 +1971,7 @@ "# 每一行都包含着要在给定的每个查询的值(y_train)之间分配的注意力权重\n", "attention_weights = nn.Softmax(axis=1)(-(X_repeat - x_train)**2 / 2)\n", "# y_hat的每个元素都是值的加权平均值,其中的权重是注意力权重\n", - "y_hat = d2l.matmul(attention_weights, y_train)\n", + "y_hat = mint.matmul(attention_weights, y_train)\n", "plot_kernel_reg(y_hat)" ] }, @@ -2836,7 +2836,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": { "origin_pos": 27, "tab": [ @@ -2856,9 +2856,9 @@ } ], "source": [ - "X = d2l.ones((2, 1, 4))\n", - "Y = d2l.ones((2, 4, 6))\n", - "d2l.bmm(X, Y).shape" + "X = mint.ones((2, 1, 4))\n", + "Y = mint.ones((2, 4, 6))\n", + "mint.bmm(X, Y).shape" ] }, { @@ -2874,7 +2874,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": { "origin_pos": 31, "tab": [ @@ -2896,9 +2896,9 @@ } ], "source": [ - "weights = d2l.ones((2, 10)) * 0.1\n", + "weights = mint.ones((2, 10)) * 0.1\n", "values = d2l.arange(20.0).reshape((2, 10))\n", - "d2l.bmm(d2l.expand_dims(weights, 1), d2l.expand_dims(values, -1))" + "mint.bmm(d2l.expand_dims(weights, 1), d2l.expand_dims(values, -1))" ] }, { @@ -2914,7 +2914,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": { "origin_pos": 35, "tab": [ @@ -2926,7 +2926,7 @@ "class NWKernelRegression(nn.Cell):\n", " def __init__(self, **kwargs):\n", " super().__init__(**kwargs)\n", - " self.w = Parameter(d2l.rand((1,)))\n", + " self.w = Parameter(mint.rand((1,)))\n", "\n", " def construct(self, queries, keys, values):\n", " # queries和attention_weights的形状为(查询个数,“键-值”对个数)\n", @@ -2934,7 +2934,7 @@ " self.attention_weights = nn.Softmax(axis=1)(\n", " -((queries - keys) * self.w)**2 / 2)\n", " # values的形状为(查询个数,“键-值”对个数)\n", - " return d2l.bmm(d2l.expand_dims(self.attention_weights, 1),\n", + " return mint.bmm(d2l.expand_dims(self.attention_weights, 1),\n", " d2l.expand_dims(values, -1)).reshape(-1)" ] }, @@ -2951,7 +2951,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": { "origin_pos": 39, "tab": [ @@ -2961,9 +2961,9 @@ "outputs": [], "source": [ "# X_tile的形状:(n_train,n_train),每一行都包含着相同的训练输入\n", - "X_tile = d2l.tile(x_train, (n_train, 1))\n", + "X_tile = mint.tile(x_train, (n_train, 1))\n", "# Y_tile的形状:(n_train,n_train),每一行都包含着相同的训练输出\n", - "Y_tile = d2l.tile(y_train, (n_train, 1))\n", + "Y_tile = mint.tile(y_train, (n_train, 1))\n", "# keys的形状:('n_train','n_train'-1)\n", "keys = d2l.reshape(X_tile[(1 - d2l.eye(n_train)).astype(mindspore.int32)],\n", " (n_train, -1))\n", @@ -3671,7 +3671,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": { "origin_pos": 47, "tab": [ @@ -4600,9 +4600,9 @@ ], "source": [ "# keys的形状:(n_test,n_train),每一行包含着相同的训练输入(例如,相同的键)\n", - "keys = d2l.tile(x_train, (n_test, 1))\n", + "keys = mint.tile(x_train, (n_test, 1))\n", "# value的形状:(n_test,n_train)\n", - "values = d2l.tile(y_train, (n_test, 1))\n", + "values = mint.tile(y_train, (n_test, 1))\n", "y_hat = d2l.expand_dims(net(x_test, keys, values), 1)\n", "plot_kernel_reg(y_hat)" ] @@ -5528,4 +5528,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} \ No newline at end of file +} diff --git a/chapter_10_attention_mechanisms/1_attention-scoring-functions.ipynb b/chapter_10_attention_mechanisms/1_attention-scoring-functions.ipynb index 07212f3..1674542 100644 --- a/chapter_10_attention_mechanisms/1_attention-scoring-functions.ipynb +++ b/chapter_10_attention_mechanisms/1_attention-scoring-functions.ipynb @@ -24,7 +24,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 12, "metadata": { "origin_pos": 2, "tab": [ @@ -36,7 +36,8 @@ "from d2l import mindspore as d2l\n", "import math\n", "import mindspore\n", - "from mindspore import nn" + "from mindspore import nn\n", + "from mindspore import mint" ] }, { @@ -103,10 +104,10 @@ "data": { "text/plain": [ "Tensor(shape=[2, 2, 4], dtype=Float32, value=\n", - "[[[ 3.28483313e-01, 6.71516716e-01, 0.00000000e+00, 0.00000000e+00],\n", - " [ 4.44708079e-01, 5.55291951e-01, 0.00000000e+00, 0.00000000e+00]],\n", - " [[ 2.75162101e-01, 4.66832906e-01, 2.58005083e-01, 0.00000000e+00],\n", - " [ 3.29636276e-01, 3.50261986e-01, 3.20101738e-01, 0.00000000e+00]]])" + "[[[ 4.67752010e-01, 5.32247961e-01, 0.00000000e+00, 0.00000000e+00],\n", + " [ 3.64496917e-01, 1.82933047e-01, 4.52570021e-01, 0.00000000e+00]],\n", + " [[ 4.12169427e-01, 5.87830603e-01, 0.00000000e+00, 0.00000000e+00],\n", + " [ 3.52052450e-01, 4.05383736e-01, 2.42563769e-01, 0.00000000e+00]]])" ] }, "execution_count": 4, @@ -115,7 +116,7 @@ } ], "source": [ - "masked_softmax(d2l.rand((2, 2, 4)), d2l.tensor([2, 3], mindspore.int32))" + "masked_softmax(mint.rand((2, 2, 4)), d2l.tensor([2, 3], mindspore.int32))" ] }, { @@ -133,9 +134,9 @@ "text/plain": [ "Tensor(shape=[2, 2, 4], dtype=Float32, value=\n", "[[[ 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [ 3.22775692e-01, 3.86722207e-01, 2.90502131e-01, 0.00000000e+00]],\n", - " [[ 3.08231175e-01, 6.91768825e-01, 0.00000000e+00, 0.00000000e+00],\n", - " [ 2.92420477e-01, 1.94799751e-01, 2.19975904e-01, 2.92803943e-01]]])" + " [ 3.82911474e-01, 2.51087517e-01, 3.66000980e-01, 0.00000000e+00]],\n", + " [[ 4.44058746e-01, 5.55941284e-01, 0.00000000e+00, 0.00000000e+00],\n", + " [ 2.15905502e-01, 1.88567668e-01, 2.31928229e-01, 3.63598555e-01]]])" ] }, "execution_count": 5, @@ -144,7 +145,7 @@ } ], "source": [ - "masked_softmax(d2l.rand((2, 2, 4)), d2l.tensor([[1, 3], [2, 4]], mindspore.int32))" + "masked_softmax(mint.rand((2, 2, 4)), d2l.tensor([[1, 3], [2, 4]], mindspore.int32))" ] }, { @@ -185,13 +186,13 @@ " # key的形状:(batch_size,1,“键-值”对的个数,num_hiddens)\n", " # 使用广播方式进行求和\n", " features = d2l.expand_dims(queries, 2) + d2l.expand_dims(keys, 1)\n", - " features = d2l.tanh(features)\n", + " features = mint.tanh(features)\n", " # self.w_v仅有一个输出,因此从形状中移除最后那个维度。\n", " # scores的形状:(batch_size,查询的个数,“键-值”对的个数)\n", " scores = self.w_v(features).squeeze(-1)\n", " self.attention_weights = masked_softmax(scores, valid_lens)\n", " # values的形状:(batch_size,“键-值”对的个数,值的维度)\n", - " return d2l.bmm(self.dropout(self.attention_weights), values)" + " return mint.bmm(self.dropout(self.attention_weights), values)" ] }, { @@ -215,12 +216,19 @@ ] }, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[WARNING] ME(17509:281473843242560,MainProcess):2025-12-12-23:10:10.654.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n" + ] + }, { "data": { "text/plain": [ "Tensor(shape=[2, 1, 4], dtype=Float32, value=\n", "[[[ 2.00000000e+00, 3.00000000e+00, 4.00000000e+00, 5.00000000e+00]],\n", - " [[ 1.00000000e+01, 1.10000000e+01, 1.20000000e+01, 1.30000000e+01]]])" + " [[ 1.00000000e+01, 1.10000010e+01, 1.20000000e+01, 1.30000000e+01]]])" ] }, "execution_count": 7, @@ -229,9 +237,9 @@ } ], "source": [ - "queries, keys = d2l.normal((2, 1, 20), 0, 1), d2l.ones((2, 10, 2))\n", + "queries, keys = mint.normal(0, 1, (2, 1, 20)), mint.ones((2, 10, 2))\n", "# values的小批量,两个值矩阵是相同的\n", - "values = d2l.tile(d2l.arange(40, dtype=mindspore.float32).reshape(1, 10, 4), (2, 1, 1))\n", + "values = mint.tile(d2l.arange(40, dtype=mindspore.float32).reshape(1, 10, 4), (2, 1, 1))\n", "valid_lens = d2l.tensor([2, 6])\n", "\n", "attention = AdditiveAttention(key_size=2, query_size=20, num_hiddens=8,\n", @@ -267,63 +275,63 @@ "\n", "\n", - "\n", + "\n", " \n", - " \n", + " \n", " \n", " \n", - " 2021-11-24T11:42:11.398227\n", + " 2025-12-12T23:10:11.053723\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.4.3, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -352,14 +360,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -391,9 +399,9 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -492,17 +500,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -510,14 +518,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -538,9 +546,9 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -858,9 +847,9 @@ " def construct(self, queries, keys, values, valid_lens=None):\n", " d = queries.shape[-1]\n", " # 设置transpose_b=True为了交换keys的最后两个维度\n", - " scores = d2l.bmm(queries, keys.swapaxes(1,2)) / math.sqrt(d)\n", + " scores = mint.bmm(queries, keys.swapaxes(1,2)) / math.sqrt(d)\n", " self.attention_weights = masked_softmax(scores, valid_lens)\n", - " return d2l.bmm(self.dropout(self.attention_weights), values)" + " return mint.bmm(self.dropout(self.attention_weights), values)" ] }, { @@ -884,12 +873,19 @@ ] }, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[WARNING] ME(17509:281473843242560,MainProcess):2025-12-12-23:10:11.128.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n" + ] + }, { "data": { "text/plain": [ "Tensor(shape=[2, 1, 4], dtype=Float32, value=\n", "[[[ 2.00000000e+00, 3.00000000e+00, 4.00000000e+00, 5.00000000e+00]],\n", - " [[ 1.00000000e+01, 1.10000000e+01, 1.20000000e+01, 1.30000000e+01]]])" + " [[ 1.00000000e+01, 1.10000010e+01, 1.20000000e+01, 1.30000000e+01]]])" ] }, "execution_count": 10, @@ -898,7 +894,7 @@ } ], "source": [ - "queries = d2l.normal((2, 1, 2), 0, 1)\n", + "queries = mint.normal(0, 1, (2, 1, 2))\n", "attention = DotProductAttention(dropout=0.5)\n", "attention.set_train(False)\n", "attention(queries, keys, values, valid_lens)" @@ -931,63 +927,63 @@ "\n", "\n", - "\n", + "\n", " \n", - " \n", + " \n", " \n", " \n", - " 2021-11-24T11:42:12.091315\n", + " 2025-12-12T23:10:11.311310\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.4.3, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -1016,14 +1012,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -1055,9 +1051,9 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1156,17 +1152,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1174,14 +1170,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -1202,9 +1198,9 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -1491,9 +1468,9 @@ "metadata": { "celltoolbar": "Slideshow", "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3.10", "language": "python", - "name": "python3" + "name": "py310" }, "language_info": { "codemirror_mode": { @@ -1505,7 +1482,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.5" + "version": "3.10.14" }, "rise": { "autolaunch": true, @@ -1516,4 +1493,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} \ No newline at end of file +} diff --git a/chapter_10_attention_mechanisms/2_bahdanau-attention.ipynb b/chapter_10_attention_mechanisms/2_bahdanau-attention.ipynb index dda68da..2da7531 100644 --- a/chapter_10_attention_mechanisms/2_bahdanau-attention.ipynb +++ b/chapter_10_attention_mechanisms/2_bahdanau-attention.ipynb @@ -24,7 +24,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": { "origin_pos": 2, "tab": [ @@ -35,7 +35,8 @@ "source": [ "from d2l import mindspore as d2l\n", "import mindspore\n", - "from mindspore import nn" + "from mindspore import nn\n", + "from mindspore import mint" ] }, { @@ -51,7 +52,16 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "#@save\n", @@ -63,13 +73,7 @@ " @property\n", " def attention_weights(self):\n", " raise NotImplementedError" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } + ] }, { "cell_type": "markdown", @@ -84,7 +88,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": { "origin_pos": 8, "tab": [ @@ -127,12 +131,13 @@ " context = self.attention(\n", " query, enc_outputs, enc_outputs, enc_valid_lens)\n", " # 在特征维度上连结\n", - " x = d2l.concat((context, d2l.expand_dims(x, axis=1)), axis=-1)\n", + " x = mint.concat((context, d2l.expand_dims(x, axis=1)), dim=-1)\n", " # 将x变形为(1,batch_size,embed_size+num_hiddens)\n", " out, hidden_state = self.rnn(x.transpose(1, 0, 2), hidden_state)\n", " outputs.append(out)\n", " self._attention_weights.append(self.attention.attention_weights)\n", - " outputs = self.dense(d2l.concat(outputs, axis=0))\n", + " \n", + " outputs = self.dense(mint.concat(outputs, dim=0))\n", " return outputs.transpose(1, 0, 2), (enc_outputs, hidden_state,\n", " enc_valid_lens)\n", "\n", @@ -154,7 +159,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": { "origin_pos": 12, "tab": [ @@ -162,13 +167,20 @@ ] }, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[WARNING] ME(38944:281473359906368,MainProcess):2025-12-12-23:31:57.457.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n" + ] + }, { "data": { "text/plain": [ - "((4, 7, 10), 2, (4, 7, 16), 2, (4, 16))" + "((4, 7, 10), 3, (4, 7, 16), 2, (4, 16))" ] }, - "execution_count": 4, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -180,7 +192,7 @@ "decoder = Seq2SeqAttentionDecoder(vocab_size=10, embed_size=8, num_hiddens=16,\n", " num_layers=2)\n", "decoder.set_train(False)\n", - "X = d2l.zeros((4, 7), dtype=mindspore.int32)\n", + "X = mint.zeros((4, 7), dtype=mindspore.int32)\n", "state = decoder.init_state(encoder(X), None)\n", "output, state = decoder(X, state)\n", "output.shape, len(state), state[0].shape, len(state[1]), state[1][0].shape" @@ -199,14 +211,22 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": { "origin_pos": 15, "tab": [ "pytorch" ] }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[WARNING] ME(38944:281473359906368,MainProcess):2025-12-12-23:32:21.188.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n" + ] + } + ], "source": [ "embed_size, num_hiddens, num_layers, dropout = 32, 32, 2, 0.1\n", "batch_size, num_steps = 64, 10\n", @@ -233,14 +253,14 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "loss 0.018, 4419.3 tokens/sec\n" + "loss 0.010, 1650.2 tokens/sec\n" ] }, { @@ -249,64 +269,64 @@ "\n", "\n", - "\n", + "\n", " \n", - " \n", + " \n", " \n", " \n", - " 2021-11-28T01:01:11.104809\n", + " 2025-12-12T23:38:38.566133\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.4.3, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pa1133affde)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pa1133affde)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pa1133affde)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pa1133affde)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pa1133affde)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", - " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -848,7 +960,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": { "origin_pos": 17, "tab": [ @@ -860,10 +972,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "go . => va !, bleu 1.000\n", - "i lost . => j'ai perdu ., bleu 1.000\n", - "he's calm . => il est riche ., bleu 0.658\n", - "i'm home . => je suis chez moi ., bleu 1.000\n" + "...." ] } ], @@ -879,7 +988,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": { "origin_pos": 19, "tab": [ @@ -889,7 +998,7 @@ "outputs": [], "source": [ "attention_weights = d2l.reshape(\n", - " d2l.concat([step[0][0][0] for step in dec_attention_weight_seq], 0),\n", + " mint.concat([step[0][0][0] for step in dec_attention_weight_seq], 0),\n", " (1, 1, -1, num_steps))" ] }, @@ -906,794 +1015,14 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": { "origin_pos": 22, "tab": [ "pytorch" ] }, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " 2021-11-28T01:01:29.069649\n", - " image/svg+xml\n", - " \n", - " \n", - " Matplotlib v3.4.3, https://matplotlib.org/\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n" - ], - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "d2l.show_heatmaps(\n", " attention_weights[:, :, :, :len(engs[-1].split()) + 1],\n", @@ -1704,9 +1033,9 @@ "metadata": { "celltoolbar": "Slideshow", "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3.10", "language": "python", - "name": "python3" + "name": "py310" }, "language_info": { "codemirror_mode": { @@ -1718,7 +1047,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.5" + "version": "3.10.14" }, "rise": { "autolaunch": true, @@ -1729,4 +1058,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} \ No newline at end of file +} diff --git a/chapter_10_attention_mechanisms/3_multihead-attention.ipynb b/chapter_10_attention_mechanisms/3_multihead-attention.ipynb index 0a161d0..37a31d0 100644 --- a/chapter_10_attention_mechanisms/3_multihead-attention.ipynb +++ b/chapter_10_attention_mechanisms/3_multihead-attention.ipynb @@ -208,7 +208,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": { "origin_pos": 16, "tab": [ @@ -230,8 +230,8 @@ "source": [ "batch_size, num_queries = 2, 4\n", "num_kvpairs, valid_lens = 6, d2l.tensor([3, 2], mindspore.int32)\n", - "X = d2l.ones((batch_size, num_queries, num_hiddens))\n", - "Y = d2l.ones((batch_size, num_kvpairs, num_hiddens))\n", + "X = mint.ones((batch_size, num_queries, num_hiddens))\n", + "Y = mint.ones((batch_size, num_kvpairs, num_hiddens))\n", "attention(X, Y, Y, valid_lens).shape" ] } diff --git a/chapter_10_attention_mechanisms/4_self-attention-and-positional-encoding.ipynb b/chapter_10_attention_mechanisms/4_self-attention-and-positional-encoding.ipynb index f753962..7953b30 100644 --- a/chapter_10_attention_mechanisms/4_self-attention-and-positional-encoding.ipynb +++ b/chapter_10_attention_mechanisms/4_self-attention-and-positional-encoding.ipynb @@ -36,6 +36,7 @@ "from d2l import mindspore as d2l\n", "import mindspore\n", "from mindspore import nn\n", + "from mindspore import mint\n", "\n", "def repeat(x, repeats, axis=0):\n", " # 针对 d2l 中 valid_lens 的场景 (输入通常是 1D 张量)\n", @@ -77,8 +78,8 @@ "name": "stderr", "output_type": "stream", "text": [ - "[WARNING] ME(68893:281473780467264,MainProcess):2025-12-08-18:32:50.255.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", - "[WARNING] ME(68893:281473780467264,MainProcess):2025-12-08-18:32:50.268.000 [mindspore/nn/layer/basic.py:200] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n" + "[WARNING] ME(54062:281473877907008,MainProcess):2025-12-12-23:44:06.732.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", + "[WARNING] ME(54062:281473877907008,MainProcess):2025-12-12-23:44:06.744.000 [mindspore/nn/layer/basic.py:200] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n" ] }, { @@ -162,12 +163,12 @@ " super(PositionalEncoding, self).__init__()\n", " self.dropout = nn.Dropout(p = dropout)\n", " # 创建一个足够长的P\n", - " self.P = d2l.zeros((1, max_len, num_hiddens))\n", + " self.P = mint.zeros((1, max_len, num_hiddens))\n", " X = d2l.arange(max_len, dtype=mindspore.float32).reshape(\n", - " -1, 1) / d2l.pow(10000, d2l.arange(\n", + " -1, 1) / mint.pow(10000, d2l.arange(\n", " 0, num_hiddens, 2, dtype=mindspore.float32) / num_hiddens)\n", - " self.P[:, :, 0::2] = d2l.sin(X)\n", - " self.P[:, :, 1::2] = d2l.cos(X)\n", + " self.P[:, :, 0::2] = mint.sin(X)\n", + " self.P[:, :, 1::2] = mint.cos(X)\n", "\n", " def construct(self, X):\n", " X = X + self.P[:, :X.shape[1], :]\n", @@ -206,11 +207,11 @@ " \n", " \n", " \n", - " 2025-12-08T18:33:03.600222\n", + " 2025-12-12T23:44:20.337792\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.10.7, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -242,16 +243,16 @@ " \n", " \n", + "\" clip-path=\"url(#p1ad407b9ac)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -288,11 +289,11 @@ " \n", " \n", + "\" clip-path=\"url(#p1ad407b9ac)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -323,11 +324,11 @@ " \n", " \n", + "\" clip-path=\"url(#p1ad407b9ac)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -368,11 +369,11 @@ " \n", " \n", + "\" clip-path=\"url(#p1ad407b9ac)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -421,11 +422,11 @@ " \n", " \n", + "\" clip-path=\"url(#p1ad407b9ac)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -461,11 +462,11 @@ " \n", " \n", + "\" clip-path=\"url(#p1ad407b9ac)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -507,11 +508,11 @@ " \n", " \n", + "\" clip-path=\"url(#p1ad407b9ac)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -783,16 +784,16 @@ " \n", " \n", + "\" clip-path=\"url(#p1ad407b9ac)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -825,11 +826,11 @@ " \n", " \n", + "\" clip-path=\"url(#p1ad407b9ac)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -846,11 +847,11 @@ " \n", " \n", + "\" clip-path=\"url(#p1ad407b9ac)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -866,11 +867,11 @@ " \n", " \n", + "\" clip-path=\"url(#p1ad407b9ac)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -886,11 +887,11 @@ " \n", " \n", + "\" clip-path=\"url(#p1ad407b9ac)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -964,7 +965,7 @@ "L 347.747219 117.633107 \n", "L 352.905925 125.425496 \n", "L 358.064631 131.674804 \n", - "\" clip-path=\"url(#p352a3df0b8)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n", + "\" clip-path=\"url(#p1ad407b9ac)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p1ad407b9ac)\" style=\"fill: none; stroke-dasharray: 5.55,2.4; stroke-dashoffset: 0; stroke: #bf00bf; stroke-width: 1.5\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p1ad407b9ac)\" style=\"fill: none; stroke-dasharray: 9.6,2.4,1.5,2.4; stroke-dashoffset: 0; stroke: #008000; stroke-width: 1.5\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p1ad407b9ac)\" style=\"fill: none; stroke-dasharray: 1.5,2.475; stroke-dashoffset: 0; stroke: #ff0000; stroke-width: 1.5\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1390,7 +1391,7 @@ "encoding_dim, num_steps = 32, 60\n", "pos_encoding = PositionalEncoding(encoding_dim, 0.)\n", "pos_encoding.set_train(False)\n", - "X = pos_encoding(d2l.zeros((1, num_steps, encoding_dim)))\n", + "X = pos_encoding(mint.zeros((1, num_steps, encoding_dim)))\n", "P = pos_encoding.P[:, :X.shape[1], :]\n", "d2l.plot(d2l.arange(num_steps), P[0, :, 6:10].T, xlabel='Row (position)',\n", " figsize=(6, 2.5), legend=[\"Col %d\" % d for d in d2l.arange(6, 10)])" @@ -1469,11 +1470,11 @@ " \n", " \n", " \n", - " 2025-12-08T18:33:03.884133\n", + " 2025-12-12T23:44:20.611841\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.10.7, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -1500,20 +1501,20 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAKUAAAE0CAYAAABNZvOIAAAUb0lEQVR4nO2da5DW5XnG793973mBXZblJCALImJcWREFRBQwmpiqDXamYmzqwGpErCXORJk2oWmjtDWNGWFGNAVPNeKMnQoGnA5pCyhGQBC1oogc5KAI7AJ7fg97oB/6jet6zfPysu69y/X7ePXx+b+TufYZrt73cz9Z5Xe/ctrO4L0nvn+mZJfctBC0Xy75MWipeGTBk6AdfvMJ0D490gTayUQCtDvuW0K/80//fC9o902pBK3/1J+A9uwzD4FW85N/A21IdTVoiTj+RjOzk3v3gVZ9w1WgffDaWtC+XfPnoP33b34L2qwfz6HfXvXrFaDdufA+0F55/Deg/fBv54H20j8+A9rdP72ffvvFxU+DNudn80F7/rFloGXTHYXoRmRK4Q6ZUrhDphTuiFo+fBvEhWvH4sq8QpBe2HCAbrp0djWKfStAak20g9avKBe0jtOQxcxyC+i3m5OdoGVlZeFCsmdbB/63Rv7bzs7Ab5iZnSZ7iq9FJ6Vwh0wp3CFTCnfIlMIdUeXNt4H4+opVoPW7bCJon2z+iG46+L7JoOUPHQlaUxyDTklBBFqirQM/kl9Mv92SJGsZJIAkO0igysK/29OduC5l0CGErs0O3DKNT/cIdFIKd8iUwh0ypXCHTCncET1fczWI07e+B9p3ZlwM2qv/spFu2r8kD7RhlYNAa4ph0Knomw9aczwHP5Ii6DQlAisopKKTyKCik52d4u+bfKe3BZNzjU5K4Q6ZUrhDphTukCmFO2RK4Y5o/IWlIN59P5Ye76waAtqrpEfSzKwwD9Ny1cUDQDvSEgNtXNQHtIJc/NuJiorot2NJTPQUVmZsDysz0vSdkyp9p9F7GcI31J+ZZd33/yLQSSncIVMKd8iUwh0ypXBHtPNwA4g/v3EMaDmkuW/IlTjpwcysk/QbTh1dCtqhBgw6uSQw5EWo5RdiOdLMLBbaT0mg/ZTZGNoy7aeknOtAlIKeUOLUSSncIVMKd8iUwh0ypXBHVPPCdhDfXDgdtAJSpbl9xii6aQuZfDFhYCloK3ceBS2bBCoWdAqK+YSMGPn2aTZhg/VTtnfFhIwuCEW9HJ2Uwh0ypXCHTCncIVMKd0SfrVkN4oqZOCP8B+OHgXZn1VC6aV1TErTBpRhMDtc1g8aqQXmkylOUKuiQig7ZktIlEzJopSbs94TGoexubDPrCnRSCnfIlMIdMqVwh0wp3BHlXzoJxEVLN4B26T/cCto1o8rppls+PwnapMr+oB053gIamzuek4P/kC8uxikcZmZxckeHVnQItKLDWtc09aJL0Ukp3CFTCnfIlMIdMqVwR7RkwXUgzpv/JGjLt4wHbcZYPoxg65f1oE0na2trsaLDwkYRaZvr04cHnQRtXaNLgdCKjlrXuhadlMIdMqVwh0wp3CFTCndEf3Y5tqQtv2MWaBvf3A3a0e9fRjfdvBcrOp3T8R/8jScbQWtJYOtZST4++NSvhA8j+OKrJtDoK7iEJKvo5IQOIwj6ROq1PTQQZXfBb9RJKdwhUwp3yJTCHTKlcEd0ohnv0zwz+wrQrnp1NWh/OHg93XT3njrQmkmlJXYKJ741k5dth5D7PaVFvKKzn7SusXs/DNY2l/kwgq4fB90D8lBa6KQU7pAphTtkSuEOmVK4Q6YU7ogWrt0F4gt3YfpmZbAVmw7STY8exBF/bGqGNWFKb2hto3ueSRl5vtnMLEHKlKETMtroxTEyIYP8b8FGGP7/4rOfZZ5qy96OTkrhDplSuEOmFO6QKYU7otdXrALx7auHg5Y/dgJoWzd9ync9th+kAydxGobFsJ/yq1Z88MmsDJSK4lz66TZSZuzIoMzIQkmX9FN+Q/SIHs3u/gFCnIlMKdwhUwp3yJTCHZHlF4NY8/Rm0KZPvwS0dcte5LuSiscWMjXD2uIg7T+FQYf1Q5YX42UyM7O2JFaE2lnQIf/gZxWdbFLRyXRChvh6dFIKd8iUwh0ypXCHTCncEd097xYQX1z8NGg19y4Cbd1zJXzXJIaVrWRqBgsB++sw/LCKTP/CVBUdDDq0okNG/IVWdCwsN6WE73n2LW69DZ2Uwh0ypXCHTCncIVMKd0Q/v3EMiGvW3wDahOHYPlZaNZFuWr/3M9DY1Az2cNIh8rItCyr98njQaW/D1rV2NvmCwEYBZpGLMh3teA+oK16xDaWnBKLQn6mTUrhDphTukCmFO2RK4Y6oMBfDxooHpoJWTi7/3zzjYrrp6lgCtGMHv8KF+UUgHQ182bZvGkGHV3RI6xr5Dmtdaz+N30gnbITOCe8h+eWco5NSuEOmFO6QKYU7ZErhjmjFNpyc9sA1laA1xbAlrOZKfBjKzGzHp8dB2/1f63FhUSlIJ0hFh70uywKaWaqKTljrWjubuka7zNIYRtBD7+h0Z8jSSSncIVMKd8iUwh0ypXCHTCncES1asgHEPxkzCDT2MtklQ/vQTS8fMwC03a/j62I2eBRI7Lll1ueYn5vi7ymJvzN0QgZL36zMyHokU848J5yn1cNgdFIKd8iUwh0ypXCHTCncEdnhj0G8/9UPQBs1uC9oy0ZV0U2njS4F7d9zcHRf3zLcs/ErfBiKBx1eZmTjBenFMXJpLTjodGZ6cSz0cSdW4yQPS6WRnHrCg1E6KYU7ZErhDplSuEOmFO6IJs6+HcStK18DbfcV14B24rtj6aaXV/RDsR9WiUrLsSLUuOcT0BJtGCzKivkrttaOFZ22wH7Ktrawfkr2LG7G/Yc9tO+yK9BJKdwhUwp3yJTCHTKlcEf0zOxqECduwrBR/9F20HYcvpZuWjUEg07RsJGgDRyIM9MPkZdtY0kMOoP6pfh76sALbmzyBavodAROyLDONCZkkAATGoo0IUMIJ8iUwh0ypXCHTCncEY0aiK/YLnpwJmiPPrwEtBVbDtFNX/yLCaCNGIUVnQsG4Le3t+EYwWYy9SLKSZECSEUn3oFBKbM7OplVdEJHAZ6v6KQU7pAphTtkSuEOmVK4I3p7Lz66NG/ySNAerawG7c2Nu+mmBXOuAo0NKBjSL/+P/0Iza0hglSZKddmEVHTi5DGm0Ds67HGntIYRkLXnmp7yuFMoOimFO2RK4Q6ZUrhDphTuiO55eguI7z72XdAmTbsEtK0v/wfdtKPzLtCmjSb3dhhkaEFDEsNLTqpgQQYFxGjQwe+Et67hfmlNXQtuXetdASYUnZTCHTKlcIdMKdwhUwp3RMc3rQNx8fqLQLtn2oWgbV3J/yHeHMdWs6oBGHROxrHNzPKxne1EK+6XedDJpKKT2eNO52uACUUnpXCHTCncIVMKd8iUwh0ypXBHVH7Nt0FcvuwN0B5a+VegFYzFC2JmZrWNePlrcGkBaDmNJIUWl4FU14xlxpQJlqTvOHsymaTvztAyYwZzzM3C546fryFdJ6Vwh0wp3CFTCnfIlMId0fL5OMv89h9tA20wueQ1Yzr2WJqZ7T/VDNp15RWgJciM8ZxSvGBW14JBJyUk6DQlQsuMZBJHhH2X/HGnsJ+Xkm/ggpmZWVYPeENXJ6Vwh0wp3CFTCnfIlMId0fSLMYDcPBcffGKh5J5Jw+mmbx08BdpN4waDVpyPYaNPGT74VN+MFaLTqR5DInpL8uwrOll5gS/JssqPWcbVnxB6W+VHJ6Vwh0wp3CFTCnfIlMId0ee1rSD+6rZLQdt3vAW06mGldNNfrd8LWjsJEYV5GDbKyMu29a14wYw8JJuSFvI4FJvEkVnrWvjvCV2a3QOqL12BTkrhDplSuEOmFO6QKYU7ovmvfgDi2vungPbU5oOgLf4eb13b81ktaGxqRkkBho1Bg/Bl2+ZmDDodaSSdZlrRIaMAySQNOuIvnakXqSpPIiU6KYU7ZErhDplSuEOmFO6Itq58DcTfXYdj/17bsA+0hTNG003rDh4BrbYJw0ppcR5ow8pxFOCOXcdAYxWiVMSSGLKM3L3pIK/d8qCTYUUncHF3tqR150u7OimFO2RK4Q6ZUrhDphTuiGzoWBAfXLIJtNYDn4G26whWfszMrA6rP/tP4oCCMYOxelNZUQjapu0Ykto6wislMdK6lpUTOnUtw1dsCWksDaK3zVDXSSncIVMKd8iUwh0ypXCHTCncES16cCaIjz68BFeSvsBntx/mu8Yxaf/hUANoN4wdCNro/jgbPd4SB60tVZmRJNHWBHmxLKP0nU4/ZddPyOht6KQU7pAphTtkSuEOmVK4I5o3eSSIL998K2j73/8UtN9v3JNiV+yT3LbvBGhJ0o95QUkRaPFWDDpJ9mCTGR3xFyNBhz2ZzC6O5eSc+wkZofSEQNQVP1EnpXCHTCncIVMKd8iUwh0R60t8vmYSaPNX5oL28Rvr+K6lON98z2fHQYuROerlRRiSEjGcec5msJuZWRb+ncVJP2U2CTBtCXxEKrSik85Fq+7MLz0gO+mkFP6QKYU7ZErhDplSuCNaTOaT//KWcaDdPX0kaI+sitFNS4bjhI0TB78ErSVwPKDFmkCKt5E55mZ0lnmSTMhgrWvWERp0SItbGgmCrqXhKXjLXoVOSuEOmVK4Q6YU7pAphTui5U+tAfEvxw8F7cbReJ8mq3I83XTk6EGg7dz1PmiNMQwWF/THCRmWwAeo4qkqOqR1LR4nLWkRCzqZzDznP+ebmHne2wKRTkrhDplSuEOmFO6QKYU7Ios1gjjnuW2gbf4ZDi2Ycj1WfszMKgfhS7Q7yYCC2lZsSbuIPO5kSQw6TUkMSWZmloMtdglyR4e1rgVXdAg9pXWtJ6CTUrhDphTukCmFO2RK4Y7o5jmzQPzPp14A7fRPMejce+0IummSTC97mQwo+LIZW99yI/J30oaBqCGNoJMkd3Ro61onW9edjzudn4lIJ6Vwh0wp3CFTCnfIlMId0RN/+i0QN2ycDNqhE1hVmTKinG5a24jBxMqwHW5vHU5Ty2EVFFJpqY+nCDokULWxOzqsdY0EndDWNfq7U3Ce5pdgdFIKd8iUwh0ypXCHTCncIVMKd0QVfTCtLl1wHWhrdh8DbcG0UXRTVh7rMxxLkgfqMNFTSCqubUknfePavAJcF56+03iwiawNJTSlZ1nvivM6KYU7ZErhDplSuEOmFO6IVu88AuKsqgtAm/zo/4B2H3kYysystAh7GkeSCRtf1rWA1s5epyVlvdoWLB2aWXDQKSzG13J5P2XY3206USO7lwWTc41OSuEOmVK4Q6YU7pAphTuiv17yFojX/vp20Pa9+yFqx66mm142vB9oV4ypAG3j9sOgpXy06QxONif5/yEPAwwLOhG7oJZBP2U6l7y6s58ynUke3YVOSuEOmVK4Q6YU7pAphTui2M7NID685hJcWXsApN/+L1aDzMweG4qjAKeNwvCzet0noLWSaRYsGTS08qAT5eLjTh3kIajMgg6GsXQujoWiCRlCOEGmFO6QKYU7ZErhjmj0924Dce2zr+HK/tjOtoq8gGtm9sj1o0EbV94XtMZTOG+9hcwnZ+P96pvJFA4zy8nFyRcJMludtqSx1rXAANMVowDD9zun23XZnqHopBTukCmFO2RK4Q6ZUrgjem4utp9dv2UHaBdOrAbt4Dvv0E1rG6eDNrBvPi5sqAOpMUaCDrl309TEKzq5eeRxp4Ym3JJVdEilhrZ6kda1lC1hdC1ferbrehs6KYU7ZErhDplSuEOmFO6ILh+BLWVz598KWkUxBojH162hm+45icHipoGDcWFrPUjHWnAOuuViSGpOUdFhrWvWhnuGtq5F7HEnQndWdHobOimFO2RK4Q6ZUrhDphTukCmFO6KPDjWAuOiGi0A7Tl4Re3zoWLrp2wdxz1suwxfHLIEzzw834XPLll8MUmsLT9+szGjtWJLMzWVlxrN/SYxeMBNnhU5K4Q6ZUrhDphTukCmFO6K5z28D8a2/mQHayAoMG1VTq+im7+09ARqdZU7KenvIc8ss6MRbyToz61uG0znY08wRe1o5uJ+SrEtjjvn5+mhTKDophTtkSuEOmVK4Q6YU7oj2vvE6iP86sxK0B6fii7VzZ4ykm/7iRbx41sAuhJF/8R8mDz7lFIUHnYrBZSiSik4O65PMoKLTnf2UPWGOeTropBTukCmFO2RK4Q6ZUrgjKvjWZBD/ful60G6/dAhoMyvxZVozs4cOfQFaLWl9s1x8iOkICTr5hXhxrJVMvTAzy8sjlRpS0cllowBJpSai684+EKVDbxvxF4pOSuEOmVK4Q6YU7pAphTuipQuuA/FH858EbePntaD9YMIIvusJfJ2WTc2wQpyDfvw4Bp2CIgxErUf5w1IFBWRCBmmRy6WjAMnYvuCKTniC0HWer0cnpXCHTCncIVMKd8iUwh3RrCp8tGn57FmgPffmAdBmVw/nuyZxoMCmAzigwPoMAKn+BK4rLcdxhWyQgZlZfn5g0Ams6OQEBpi0WtfO07s3oeikFO6QKYU7ZErhDplSuCOqJY8kPX1HNWgT570E2oG7ruS7khnlO/biQ06FZRhgWuqx8jPswgr8BpljbmZWwFrXQis6hK6o6IQuDb170xPa0dJBJ6Vwh0wp3CFTCnfIlMId0cO/+xjEl344AVd+getW7zrKd+0/DKR9e46D1rc/tq7FvjgAWp8+4/AbKYJOYWhFJ7B1LfRxp9DKj/jj6KQU7pAphTtkSuEOmVK4Q6YU7ojeeG4ViJsmkwthJf1BemXDfrppvxHYZ1l/CC+TXXZtNWjHYo2g9S3Ow490kNGCZlbIyowkVeexfkpCV4wCPF/Lh6HopBTukCmFO2RK4Q6ZUrgjYlMqapa9A1pF9UTQPn/3fbrphO9MAW3Hh1tBGzpwKmg7yaWz0hISdEjp0MysMI+UGQnB/ZSBaSOduePna4AJRSelcIdMKdwhUwp3yJTCHVHN/FtBfPYXT4FW83cP4Lq3f083veKi20DbQQLM8AEl+B+TAFNWjBfRUlHE+ikJeewVWwKdeU4IvWBmFn7J7Fyv6ynf1kkp3CFTCnfIlMIdMqVwx/8BoZK3aGWytYIAAAAASUVORK5CYII=\" id=\"image856d703a29\" transform=\"scale(1 -1) translate(0 -221.76)\" x=\"40.603125\" y=\"-9.151219\" width=\"118.8\" height=\"221.76\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1549,7 +1550,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1922,12 +1923,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1940,7 +1941,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1970,7 +1971,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1984,7 +1985,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2032,7 +2033,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2067,7 +2068,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2249,18 +2250,18 @@ "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAAkAAAC5CAYAAAD6WxVlAAAA+ElEQVR4nO2YMQ4DMQgEHcn/f26KKOA8gSlGyJxyNWLwrgHrXu/POav49lllzNogZu0kQTfiapVwEMGhwqEE5HR1onYcVNzCocKRBM24sS317A4WcVNbqhkXKJNmsIdjmbRLN1YnNDOzTgQvnYdLMMXEtWHqBIKCnA7VFKConVojfJEtogQgEwryWsqTgBnsPSF7bWGZ6kRw9CAcs0VrTraDWeGtBjPFvaXYazDL5D0ephrMdrBmMMSNLfw+XGY9f80OBrtMHNFeSyGd2I8OZjCyhZxO1KkVd6Pif4NNHFMcBZEfZxkajgQxXHPhvbiYWngzzrsqAPcDIkusk8oTmTgAAAAASUVORK5CYII=\" id=\"imagecaff4c36d7\" transform=\"scale(1 -1) translate(0 -133.2)\" x=\"168.48\" y=\"-52.56\" width=\"6.48\" height=\"133.2\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2292,7 +2293,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2307,7 +2308,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2322,7 +2323,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2350,7 +2351,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", diff --git a/chapter_10_attention_mechanisms/5_transformer.ipynb b/chapter_10_attention_mechanisms/5_transformer.ipynb index 7c6644d..c58d551 100644 --- a/chapter_10_attention_mechanisms/5_transformer.ipynb +++ b/chapter_10_attention_mechanisms/5_transformer.ipynb @@ -24,20 +24,37 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": { "origin_pos": 2, "tab": [ "pytorch" ] }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[WARNING] CORE(55660,ffffb715a640,python):2025-12-12-23:48:04.993.873 [mindspore/core/utils/ms_context.cc:533] GetJitLevel] Set jit level to O2 for rank table startup method.\n", + "/usr/local/python3.10.14/lib/python3.10/site-packages/numpy/core/getlimits.py:549: UserWarning: The value of the smallest subnormal for type is zero.\n", + " setattr(self, word, getattr(machar, word).flat[0])\n", + "/usr/local/python3.10.14/lib/python3.10/site-packages/numpy/core/getlimits.py:89: UserWarning: The value of the smallest subnormal for type is zero.\n", + " return self._float_to_str(self.smallest_subnormal)\n", + "/usr/local/python3.10.14/lib/python3.10/site-packages/numpy/core/getlimits.py:549: UserWarning: The value of the smallest subnormal for type is zero.\n", + " setattr(self, word, getattr(machar, word).flat[0])\n", + "/usr/local/python3.10.14/lib/python3.10/site-packages/numpy/core/getlimits.py:89: UserWarning: The value of the smallest subnormal for type is zero.\n", + " return self._float_to_str(self.smallest_subnormal)\n" + ] + } + ], "source": [ "from d2l import mindspore as d2l\n", "import math\n", "import pandas as pd\n", "import mindspore\n", "from mindspore import nn\n", + "from mindspore import mint\n", "\n", "def repeat(x, repeats, axis=0):\n", " # 针对 d2l 中 valid_lens 的场景 (输入通常是 1D 张量)\n", @@ -114,9 +131,9 @@ "data": { "text/plain": [ "Tensor(shape=[3, 8], dtype=Float32, value=\n", - "[[-1.48463145e-01, 1.95487887e-01, 7.43701577e-01 ... -3.76396596e-01, 1.50113985e-01, -4.48696584e-01],\n", - " [-1.48463145e-01, 1.95487887e-01, 7.43701577e-01 ... -3.76396596e-01, 1.50113985e-01, -4.48696584e-01],\n", - " [-1.48463145e-01, 1.95487887e-01, 7.43701577e-01 ... -3.76396596e-01, 1.50113985e-01, -4.48696584e-01]])" + "[[-2.45818973e-01, 2.77521491e-01, -1.40089273e-01 ... -4.56788331e-01, 5.70217893e-02, 5.48839271e-01],\n", + " [-2.45818973e-01, 2.77521491e-01, -1.40089273e-01 ... -4.56788331e-01, 5.70217893e-02, 5.48839271e-01],\n", + " [-2.45818973e-01, 2.77521491e-01, -1.40089273e-01 ... -4.56788331e-01, 5.70217893e-02, 5.48839271e-01]])" ] }, "execution_count": 4, @@ -127,7 +144,7 @@ "source": [ "ffn = PositionWiseFFN(4, 4, 8)\n", "ffn.set_train(False)\n", - "ffn(d2l.ones((2, 3, 4)))[0]" + "ffn(mint.ones((2, 3, 4)))[0]" ] }, { @@ -238,7 +255,7 @@ "source": [ "add_norm = AddNorm((3, 4), 0.5)\n", "add_norm.set_train(False)\n", - "add_norm(d2l.ones((2, 3, 4)), d2l.ones((2, 3, 4))).shape" + "add_norm(mint.ones((2, 3, 4)), mint.ones((2, 3, 4))).shape" ] }, { @@ -307,7 +324,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "[WARNING] ME(58166:281473280181824,MainProcess):2025-12-08-18:20:23.590.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n" + "[WARNING] ME(55660:281473753392704,MainProcess):2025-12-12-23:48:25.106.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n" ] }, { @@ -322,7 +339,7 @@ } ], "source": [ - "X = d2l.ones((2, 100, 24))\n", + "X = mint.ones((2, 100, 24))\n", "valid_lens = d2l.tensor([3, 2])\n", "encoder_blk = EncoderBlock(24, 24, 24, 24, [100, 24], 24, 48, 8, 0.5)\n", "encoder_blk.set_train(False)\n", @@ -391,7 +408,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 16, "metadata": { "origin_pos": 38, "tab": [ @@ -403,9 +420,16 @@ "name": "stderr", "output_type": "stream", "text": [ - "[WARNING] ME(58166:281473280181824,MainProcess):2025-12-08-18:20:24.448.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", - "[WARNING] ME(58166:281473280181824,MainProcess):2025-12-08-18:20:24.463.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", - "[WARNING] ME(58166:281473280181824,MainProcess):2025-12-08-18:20:24.478.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n" + "[WARNING] ME(55660:281473753392704,MainProcess):2025-12-12-23:50:27.233.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", + "[WARNING] ME(55660:281473753392704,MainProcess):2025-12-12-23:50:27.238.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", + "[WARNING] ME(55660:281473753392704,MainProcess):2025-12-12-23:50:27.252.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "." ] }, { @@ -414,7 +438,7 @@ "(2, 100, 24)" ] }, - "execution_count": 11, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -423,7 +447,7 @@ "encoder = TransformerEncoder(\n", " 200, 24, 24, 24, 24, [100, 24], 24, 48, 8, 2, 0.5)\n", "encoder.set_train(False)\n", - "encoder(d2l.ones((2, 100), mindspore.int32), valid_lens).shape" + "encoder(mint.ones((2, 100), dtype=mindspore.int32), valid_lens).shape" ] }, { @@ -439,7 +463,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 17, "metadata": { "origin_pos": 42, "tab": [ @@ -474,13 +498,13 @@ " if state[2][self.i] is None:\n", " key_values = X\n", " else:\n", - " key_values = d2l.concat((state[2][self.i], X), axis=1)\n", + " key_values = mint.concat((state[2][self.i], X), dim=1)\n", " state[2][self.i] = key_values\n", " if self.training:\n", " batch_size, num_steps, _ = X.shape\n", " # dec_valid_lens的开头:(batch_size,num_steps),\n", " # 其中每一行是[1,2,...,num_steps]\n", - " dec_valid_lens = d2l.tile(d2l.arange(1, num_steps + 1), (batch_size, 1))\n", + " dec_valid_lens = mint.tile(d2l.arange(1, num_steps + 1), (batch_size, 1))\n", " else:\n", " dec_valid_lens = None\n", "\n", @@ -507,7 +531,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 18, "metadata": { "origin_pos": 46, "tab": [ @@ -519,8 +543,8 @@ "name": "stderr", "output_type": "stream", "text": [ - "[WARNING] ME(58166:281473280181824,MainProcess):2025-12-08-18:20:25.710.00 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", - "[WARNING] ME(58166:281473280181824,MainProcess):2025-12-08-18:20:25.790.00 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n" + "[WARNING] ME(55660:281473753392704,MainProcess):2025-12-12-23:50:31.301.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", + "[WARNING] ME(55660:281473753392704,MainProcess):2025-12-12-23:50:31.311.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n" ] }, { @@ -529,7 +553,7 @@ "(2, 100, 24)" ] }, - "execution_count": 13, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -537,7 +561,7 @@ "source": [ "decoder_blk = DecoderBlock(24, 24, 24, 24, [100, 24], 24, 48, 8, 0.5, 0)\n", "decoder_blk.set_train(False)\n", - "X = d2l.ones((2, 100, 24))\n", + "X = mint.ones((2, 100, 24))\n", "state = [encoder_blk(X, valid_lens), valid_lens, [None]]\n", "decoder_blk(X, state)[0].shape" ] @@ -555,7 +579,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 19, "metadata": { "origin_pos": 49, "tab": [ @@ -614,7 +638,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 20, "metadata": { "origin_pos": 53, "tab": [ @@ -626,7 +650,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "loss 0.013, 2696.6 tokens/sec\n" + "loss 0.013, 2630.5 tokens/sec\n" ] }, { @@ -640,11 +664,11 @@ " \n", " \n", " \n", - " 2025-12-08T18:23:35.791889\n", + " 2025-12-12T23:54:15.462440\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.10.7, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -676,16 +700,16 @@ " \n", " \n", + "\" clip-path=\"url(#pc7ca4116a7)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -748,11 +772,11 @@ " \n", " \n", + "\" clip-path=\"url(#pc7ca4116a7)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -784,11 +808,11 @@ " \n", " \n", + "\" clip-path=\"url(#pc7ca4116a7)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -804,11 +828,11 @@ " \n", " \n", + "\" clip-path=\"url(#pc7ca4116a7)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -974,23 +998,23 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1237,26 +1261,26 @@ " \n", " \n", " \n", + "\" clip-path=\"url(#pc7ca4116a7)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1329,7 +1353,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 21, "metadata": { "origin_pos": 56, "tab": [ @@ -1343,7 +1367,7 @@ "text": [ ".go . => va !, bleu 1.000\n", "i lost . => j'ai perdu ., bleu 1.000\n", - "he's calm . => il est paresseux ., bleu 0.658\n", + "he's calm . => il est calme ., bleu 1.000\n", "i'm home . => je suis chez moi ., bleu 1.000\n" ] } @@ -1371,7 +1395,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 22, "metadata": { "origin_pos": 59, "tab": [ @@ -1385,7 +1409,7 @@ "(2, 4, 10, 10)" ] }, - "execution_count": 17, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -1399,7 +1423,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 23, "metadata": { "origin_pos": 62, "tab": [ @@ -1418,11 +1442,11 @@ " \n", " \n", " \n", - " 2025-12-08T18:23:37.923167\n", + " 2025-12-12T23:55:01.262310\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.10.7, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -1449,27 +1473,27 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAABfCAYAAACOTBv1AAABTElEQVR4nO3dsUnEYBiA4UvuOrWzdAFxAMHeCW4IHck5HMIN3MBWsPAqkThCggYeJO9Tf/z5efnKkAwPu/NpN+Pp9DY3kl8Y9QW2rPhQ8aHiQ8WHig8VHyo+VHzocLy8WO2w79eX2Zn9zd1qz/vv2nyo+FDxoeJDxYeKDxUfKj50eH7/nB26X3jYeH37t9tsTJsPFR8qPlR8qPhQ8aHiQ8WHig8dvqbZ92QXG8b9amdtQZsPFR8qPlR8qPhQ8aHiQ8WHig8VHyo+VHyo+FDxoeJDxYeKDxUfKj5UfKj4UPGh4kPFh4oPFR8qPlR8qPhQ8aHiQ8WHig8VHyo+VHyo+FDxoeJDxYeKDxUfKj5UfKj4UPGhYTp9rPfNlwUez64WzW3hf4xtPlR8qPhQ8aHiQ8WHig8VHyo+VHyo+FDxoeJDxYeKDxUfKj5UfOgHBEwVNohllJEAAAAASUVORK5CYII=\" id=\"image35d08f709c\" transform=\"scale(1 -1) translate(0 -68.4)\" x=\"34.240625\" y=\"-21.84856\" width=\"68.4\" height=\"68.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1478,12 +1502,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1519,7 +1543,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1949,22 +1973,22 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAABfCAYAAACOTBv1AAABGUlEQVR4nO3dsQ3CMBRAQQfRwQjsF0ZiQAagSR1GSJCCnhB3tSVbT27cfE/r8lrHQe6X2+aax/I8arufd6oP8M/ED4kfEj8kfkj8kPgh8UPih8QPiR8SPyR+SPyQ+CHxQ+KHxA+JHxI/JH5I/JD4IfFD4ofED4kfEj8kfkj8kPgh8UPih8QPiR8SPyR+SPyQ+CHxQ+KHxA+JHxI/JH5I/JD4IfFD4ofED4kfEj8kfkj8kPgh8UPnPYv2DCsdw8DST7n5IfFD4ofED4kfEj8kfkj8kPihaR7XzW87vFy/w80PiR8SPyR+SPyQ+CHxQ+KHxA+JHxI/JH5I/JD4IfFD4ofED4kfEj8kfkj8kPgh8UPih8QPiR8SP/QGbXcOhSo6cvAAAAAASUVORK5CYII=\" id=\"imaged0f0be0d1b\" transform=\"scale(1 -1) translate(0 -68.4)\" x=\"115.757147\" y=\"-21.84856\" width=\"68.4\" height=\"68.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1973,14 +1997,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2052,22 +2076,22 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAABfCAYAAACOTBv1AAABRElEQVR4nO3cPUoDQQCA0d1gIZgDWHgED5Zj6C08nkUauxQGBAPrEXbFgc+Q9+phZviYZtifeTmflmmQw8PT6pi383HUcldvV2/glokfEj8kfkj8kPgh8UPih8QPiR8SPyR+SPyQ+CHxQ+KHxA+JHxI/JH5I/JD4IfFD4ofED4kfEj8kfmge+aLs8vW5Oubl8XnTXK+n9z/u5v9z8kPih8QPiR8SPyR+SPyQ+KG7kZPN9/vVMR/fl5FLXjUnPyR+SPyQ+CHxQ+KHxA+JHxI/JH5I/JD4IfFD4ofED4kfEj8kfmjoY0Q/Nf0dJz8kfkj8kPgh8UPih8QPiR8SPzT0a8QtttyCp+k2bsJOfkj8kPgh8UPih8QPiR8SPyR+SPyQ+CHxQ+KHxA+JHxI/JH5I/JD4IfFD4ofED4kfEj8kfkj8kPihHz87Hl5How0SAAAAAElFTkSuQmCC\" id=\"image18dd45c3fa\" transform=\"scale(1 -1) translate(0 -68.4)\" x=\"197.273668\" y=\"-21.84856\" width=\"68.4\" height=\"68.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2076,14 +2100,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2163,22 +2187,22 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAABfCAYAAACOTBv1AAABI0lEQVR4nO3dIQ7CMBiA0Y7g4AjcD47EATkAZnoIBHITI5/Ye7ppmi+/qWmnZX4vY8XjcltbMsYY4zm/Nq3j61Qf4MjED4kfEj8kfkj8kPgh8UPih8QPiR8SPyR+SPyQ+CHxQ+KHxA+JHxI/JH5I/JD4IfFD4ofED4kfEj8kfkj8kPgh8UPih8QPiR8SPyR+SPyQ+CHxQ+KHxA+JHxI/JH5I/JD4IfFD4ofED4kfEj8kfkj8kPgh8UPTfVxXHzX1WOl/mPyQ+CHxQ+KHxA+JHxI/JH5I/JD4IfFD4ofED4kfEj8kfkj8kPihacvfiHvyz+KPyQ+JHxI/JH5I/JD4IfFD4ofED5333GzL7fUIN9etTH5I/JD4IfFD4ofED4kfEj/0AUwRFWeRlfFbAAAAAElFTkSuQmCC\" id=\"imageff61545313\" transform=\"scale(1 -1) translate(0 -68.4)\" x=\"278.79019\" y=\"-21.84856\" width=\"68.4\" height=\"68.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2187,14 +2211,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2261,15 +2285,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAABfCAYAAACOTBv1AAABxElEQVR4nO3cMUoDURRA0f8zk0SD0bgDyR5sbNPY2LsDq2xB3IWduCV7C0ERMYgWamESxsrC6j9RvAxzT/14GW5+M2QyeTk/alLJdFocSSml6nheHqoHoV15tB2aa7MefQFdZnyQ8UHGBxkfZHyQ8UHGBxkfVKfxuDy1WMS25cB32fP7/mIJkPFBxgcZH2R8kPFBxgcZH1Sn9bo8NZnEtq1X5Zmqiu3qAE8+yPgg44OMDzI+yPgg44OMDzI+qP64visODWd7sW2DjcAn9mO7OsCTDzI+yPgg44OMDzI+yPgg44Pq1fN7cWi4OYptizyHGXmesyMsATI+yPgg44OMDzI+yPgg44OMD6pTlctTTfmVPGF/uavlPPkg44OMDzI+yPgg44OMDzI+KJ/2J8W7nrP7q9iy0c6vL6hLPPkg44OMDzI+yPgg44OMDzI+yPig+nEZeN/OIPigrH7Ekw8yPsj4IOODjA8yPsj4IOODcvP2UvwZ8Wl2EFq2e3lRnGkebkK7qv3D0FybefJBxgcZH2R8kPFBxgcZH2R8kPFB+SRtFe9wz19v/+Navsk58C/JlvPkg4wPMj7I+CDjg4wPMj7I+KBP1Agpkps+/KIAAAAASUVORK5CYII=\" id=\"imagec7f311394f\" transform=\"scale(1 -1) translate(0 -68.4)\" x=\"34.240625\" y=\"-127.68856\" width=\"68.4\" height=\"68.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2282,7 +2306,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2331,7 +2355,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2344,7 +2368,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2416,15 +2440,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAABfCAYAAACOTBv1AAABf0lEQVR4nO3bMYrCQBhA4ZlkWi1t11IQPJi1x7D0IB5pWRYsRbQ0iUeYX5A8ZN5XD5Pw+JthkrxPiylVnB5/tSUfl3Oe/Zlz6+gXaJnxQcYHGR9kfJDxQcYHGR9kfFAZUvWA28Rpk+Dkg4wPMj7I+CDjg4wPMj7I+KCS0+cOUNPkge0dTj7I+CDjg4wPMj7I+CDjg4wPMj7I+CDjg4wPMj7I+CDjg4wPMj7I+KAyd/3IVWNKbVw3Ovkg44OMDzI+yPgg44OMDzI+yPgg44OMDzI+yPgg44OMDzI+yPgg44Py+LhW7/UOy5/QZsfbb2BV8Bqx60PrvpmTDzI+yPgg44OMDzI+yPgg44OMDyppHKqLuug3q5GPW2MH3CY4+SDjg4wPMj7I+CDjg4wPMj6o5L5UF92HMbRZ6A/CBv4yjHLyQcYHGR9kfJDxQcYHGR9kfJDxQfl5PtUv9i7/sd02u/oD19vQVt0q9nHuN3PyQcYHGR9kfJDxQcYHGR9kfNALNhUgbLbihQgAAAAASUVORK5CYII=\" id=\"imagef58b625fe2\" transform=\"scale(1 -1) translate(0 -68.4)\" x=\"115.757147\" y=\"-127.68856\" width=\"68.4\" height=\"68.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2437,7 +2461,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2470,14 +2494,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2523,15 +2547,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAABfCAYAAACOTBv1AAAByElEQVR4nO3cPUpDQRRA4TvJREHNDlyFraUbsAvuQNyMjWBt4150AdoJYiNYqMS/BJJn4QLmBoRjfOerL1dzMs2Q5JXl030XDdPJYWskIiLGF5fNmeXtVWrXcD/3N9fZgP4H+sz4IOODjA8yPsj4IOODjA8yPqjGYtEc6rrmJfjHIPFejjZyu3rAkw8yPsj4IOODjA8yPsj4IOODapR2/8FmzW1bti9sMZ/ldvWAJx9kfJDxQcYHGR9kfJDxQcYHGR9Uo7SHvp4/Ust2BsP20NY4tasPPPkg44OMDzI+yPgg44OMDzI+qEbiYjSfJT4ejIjI3NjqKLnr//Pkg4wPMj7I+CDjg4wPMj7I+CDjg1LfgM3+GFGr8eSDjA8yPsj4IOODjA8yPsj4oNK9vzSvUMfbu6ll528P7aHkja1kHh+z5v7/K/zDjA8yPsj4IOODjA8yPsj4IOODavqBpb+lJL5M2xOefJDxQcYHGR9kfJDxQcYHGR9U43PaHDqd7KWWdY937Zmb69Su4cFRam6defJBxgcZH2R8kPFBxgcZH2R8kPFB5STGzc8Rz17bN9eIiOKzdFbiyQcZH2R8kPFBxgcZH2R8kPFB3+fWNH76lr4FAAAAAElFTkSuQmCC\" id=\"image98c0b4f9b1\" transform=\"scale(1 -1) translate(0 -68.4)\" x=\"197.273668\" y=\"-127.68856\" width=\"68.4\" height=\"68.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2544,7 +2568,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2577,14 +2601,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2630,15 +2654,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAABfCAYAAACOTBv1AAABpUlEQVR4nO3bMUoEMRhA4WSM7ICCWAieyRt4AsVreAi9gJ1Yewk7SwVtLEUQYcVxxmrr/DIDT8n76pANb/8mZDdf7R1MqeL44a62JK7bCi3L/c5yn/lHdfQBWmZ8kPFBxgcZH2R8kPFBxgcZH1RyZFUOrUppql6WU0qRNW1w8kHGBxkfZHyQ8UHGBxkfZHxQ6bsF+38P9TWT3/eGJUDGBxkfZHyQ8UHGBxkfZHyQ8UFlWvJZL/LcGH2SbICTDzI+yPgg44OMDzI+yPgg44PKsORPJ0MXKC9ZG04+yPgg44OMDzI+yPgg44OMDzI+qIyhfxAG+Yz4K04+yPgg44OMDzI+yPgg44OMDyrPn4F/EK4/Qpvl/cOZx2mLkw8yPsj4IOODjA8yPsj4IOODjA/KX2dH1XfE4X0d2qy/vJl9oJY4+SDjg4wPMj7I+CDjg4wPMj4on6Td6iXr4u0xttn2avaBWuLkg4wPMj7I+CDjg4wPMj7I+CDjg/L4+lK94U5P96HNxtvr+qJV7BZcTs9D6/4zJx9kfJDxQcYHGR9kfJDxQcYH/QCs8ytGQ9nb5QAAAABJRU5ErkJggg==\" id=\"image84f8f33fe3\" transform=\"scale(1 -1) translate(0 -68.4)\" x=\"278.79019\" y=\"-127.68856\" width=\"68.4\" height=\"68.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2651,7 +2675,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2684,14 +2708,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2738,18 +2762,18 @@ "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAAgAAACiCAYAAAB8iIwDAAAA7klEQVR4nN2XSw4DIQxDUyn3P2s33ZWkN8iLZGCgsx1kP8cwn1d+3mnF5ZZR3Te3LAU6CkELjCyCFrACxoQFqc9BV5gQExkOiBmDFsgKBJkbGBiSLIYakxnYgg6OHpMnKcc8YMvxqOUutkzy+S13xbmYADkh5g2QqCC/9fKEmFd0QZA58BGEXehtygx3xFw/h7/oAp7E5oEMFBMVBluU980D60YFYgg5Jk9S7mIHpNwFODRSgEBDARjNk34noatOTLRYr4CTHHoXBNnogixkSIxZfxx0Rv2VIVGhwSBb1AJzFGQLUsC6dUjck+u7+AE+P2IIsbjxbAAAAABJRU5ErkJggg==\" id=\"imagec2c3a25ff6\" transform=\"scale(1 -1) translate(0 -116.64)\" x=\"366.48\" y=\"-50.4\" width=\"5.76\" height=\"116.64\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2773,12 +2797,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2788,12 +2812,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2803,12 +2827,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2974,7 +2998,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 24, "metadata": { "origin_pos": 65, "tab": [ @@ -2988,7 +3012,7 @@ "((2, 4, 6, 10), (2, 4, 6, 10))" ] }, - "execution_count": 19, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -3008,7 +3032,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 25, "metadata": { "origin_pos": 68, "tab": [ @@ -3027,11 +3051,11 @@ " \n", " \n", " \n", - " 2025-12-08T18:23:39.204629\n", + " 2025-12-12T23:55:05.607894\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.10.7, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -3058,27 +3082,27 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAABfCAYAAACOTBv1AAABF0lEQVR4nO3asQkCQRBA0Tsx0xLsT0uyQAswufjs4UZ4iP/lA8tnomXWfXvvSw55XG6j+dOX3pEDig8VHyo+VHyo+FDxoeJDxYeKDxUfKj5UfKj4UPGhs36ANP2Pf26v0XybDxUfKj5UfKj4UPGh4kPFh4oPFR8qPlR8qPhQ8aHiQ+v0Pl//if+yNh8qPlR8qPhQ8aHiQ8WHig8VHyo+VHyo+FDxoeJDxYeKDxUfKj5UfKj4UPGh4kPFh4oPFR8qPlR8qPhQ8aHiQ+t9uY5OxP/5xHuqzYeKDxUfKj5UfKj4UPGh4kPFh4oPFR8qPlR8qPhQ8aHiQ8WHig8VHyo+VHyo+FDxoeJDxYeKDxUfKj5UfKj4UPGhD3h6EvavJdooAAAAAElFTkSuQmCC\" id=\"image746d0a217c\" transform=\"scale(1 -1) translate(0 -68.4)\" x=\"34.240625\" y=\"-21.84856\" width=\"68.4\" height=\"68.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3087,12 +3111,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3128,7 +3152,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3167,7 +3191,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3591,22 +3615,22 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAABfCAYAAACOTBv1AAABPUlEQVR4nO3cIU4DURRA0RmQdAkYNLIayVraJbGXymokGtMFYCpJ2UOfOCFzj3/Jz81TP39mPSy72zLwcb1MxjftQR9gy4oPFR8qPlR8qPhQ8aHiQ8WHig8VHyo+VHyo+FDxofV2/Rnd559fXkcHePv+Gs1P/H6eRvOP+/fRfJsPFR8qPlR8qPhQ8aHiQ8WHig8VHyo+VHyo+FDxoeJD4/v8qePT892z//3bgDYfKj5UfKj4UPGh4kPFh4oPFR8qPlR8qPhQ8aHiQ8WH1v6347T5UPGh4kPFh4oPFR8qPlR8qPhQ8aHiQ8WHig8VHxo/EZ888V6WbV9Jt/lQ8aHiQ8WHig8VHyo+VHyo+FDxoeJDxYeKDxUfKj7UE3GozYeKDxUfKj5UfKj4UPGh4kPFh4oPFR8qPlR8qPhQ8aE/hq0kC+t0H00AAAAASUVORK5CYII=\" id=\"imagec44bfa4e8d\" transform=\"scale(1 -1) translate(0 -68.4)\" x=\"115.757147\" y=\"-21.84856\" width=\"68.4\" height=\"68.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3615,21 +3639,21 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3675,22 +3699,22 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAABfCAYAAACOTBv1AAABGklEQVR4nO3dsQ3CMBBAURvRwQjsByMxIAPQpA474OIpyn+9LevrqkuR+Rz3fSx4b5+V46d20Q84s+JDxYeKDxUfKj5UfKj4UPGh4kPFh4oPFR8qPlR8aO7bd2mfv+p1e/x99ujfEpp8qPhQ8aHiQ8WHig8VHyo+VHyo+FDxoeJDxYeKDxUfuq5esLKPH+P4O/kVTT5UfKj4UPGh4kPFh4oPFR8qPlR8qPhQ8aHiQ8WHig8VHyo+VHyo+FDxoeJDxYeKDxUfKj5UfKj4UPGh4kPFh4oPFR8qPlR8qPhQ8aHiQ8WHig8VHyo+VHyo+FDxoeJDxYdmv2R1mnyo+FDxoeJDxYeKDxUfKj5UfKj4UPGh4kPFh4oPFR/6AdzVEmdFEcZmAAAAAElFTkSuQmCC\" id=\"image59360b312d\" transform=\"scale(1 -1) translate(0 -68.4)\" x=\"197.273668\" y=\"-21.84856\" width=\"68.4\" height=\"68.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3699,21 +3723,21 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3793,22 +3817,22 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAABfCAYAAACOTBv1AAABFklEQVR4nO3csQ3CQBAAQRuRQQn0ByVRIAWQODY9+JBGlnbyk16riy74dd+++5JDXrfHaP7yp3fkgOJDxYeKDxUfKj5UfKj4UPGh4kPFh4oPFR8qPlR86KofIE3v8e/tM5pv86HiQ8WHig8VHyo+VHyo+FDxoeJDxYeKDxUfKj5UfOjU93x9j59q86HiQ8WHig8VHyo+VHyo+FDxoeJDxYeKDxUfKj5UfGh9LvfRfzv6Jn5mbT5UfKj4UPGh4kPFh4oPFR8qPlR8qPhQ8aHiQ8WHig8VHyo+VHyo+FDxoeJDxYeKDxUfKj5UfKj4UPGh4kPFh4oPFR8qPlR8qPhQ8aHiQ8WHig8VHyo+VHyo+FDxoeJDxYd+WIsPFjU7DusAAAAASUVORK5CYII=\" id=\"imagefb44f0a811\" transform=\"scale(1 -1) translate(0 -68.4)\" x=\"278.79019\" y=\"-21.84856\" width=\"68.4\" height=\"68.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3817,21 +3841,21 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3877,15 +3901,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAABfCAYAAACOTBv1AAABTklEQVR4nO3asUlEQRRA0f8XMwWzDRbByLZMtSQ7sAV72MgKTCzAZMPl24NPvCyek79huLxomPX88b4tA7v9/WR8ZNtGV1/WdR3Nvx4eRvO70TQj4ofED4kfEj8kfkj8kPgh8UPih8QPiR8SPyR+SPzQup2+Zo/iQ8/Xdz+efTl9/uJN/p7ND4kfEj8kfkj8kPgh8UPih8QPiR8SPyR+SPyQ+CHxQ1fTA87Ht9H84/52eoWLZfND4ofED4kfEj8kfkj8kPgh8UPih8QPiR8SPyR+SPyQ//khmx8SPyR+SPyQ+CHxQ+KHxA+JHxI/JH5I/JD4IfFD4y/ikyfhZbn8Z+EJmx8SPyR+SPyQ+CHxQ+KHxA+JHxI/JH5I/JD4IfFD4ofWp+Vm9EX8P7/HT9n8kPgh8UPih8QPiR8SPyR+SPyQ+CHxQ+KHxA+JHxI/9A1J7SA01aOrOQAAAABJRU5ErkJggg==\" id=\"imaged6d1b69322\" transform=\"scale(1 -1) translate(0 -68.4)\" x=\"34.240625\" y=\"-127.68856\" width=\"68.4\" height=\"68.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3898,7 +3922,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3974,7 +3998,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3987,7 +4011,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4000,7 +4024,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4072,15 +4096,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAABfCAYAAACOTBv1AAABgklEQVR4nO3aMUoDQQBG4Z3NSDCQ3EFsBHuvpScQLAJWlp7CyspKBCu7FIKdaGslxECK7Ogd9hce4vv6f3bzmGpJaR9v312gvTwl825zcTl6O7+9j57dbb+yfemjebZWxPgg44OMDzI+yPgg44OMDzI+yPgg44OMDzI+yPgg44PK7vEm+p7fTWfRvD84Hr0dlqfRsyfn19G+pL89WitifJDxQcYHGR9kfJDxQcYHGR9kfJDxQcYHGR9kfJDxQbU/OokOaKuH7A32F6On73fP0aMPl9n3+JQ3H2R8kPFBxgcZH2R8kPFBxgcZH2R8kPFBxgcZH2R8kPFB5axfRP/Pv/p8zV5gUqP9X+bNBxkfZHyQ8UHGBxkfZHyQ8UHGBxkfZHyQ8UHGBxkfVGsJT2hDtveTsgjGBxkfZHyQ8UHGBxkfZHyQ8UHGBxkfZHyQ8UHGBxkfVNdDiw4oe9NfepX/x5sPMj7I+CDjg4wPMj7I+CDjg4wPMj7I+CDjg4wPMj7I+KAf2HoifVI5CNYAAAAASUVORK5CYII=\" id=\"image960bcf3114\" transform=\"scale(1 -1) translate(0 -68.4)\" x=\"115.757147\" y=\"-127.68856\" width=\"68.4\" height=\"68.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4093,7 +4117,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4126,21 +4150,21 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4186,15 +4210,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAABfCAYAAACOTBv1AAABdUlEQVR4nO3cIW4CQRhH8ZkGs0kXTVJBU9ED9RKAwaI4BCDaQ9T3Er1FK3AgWAnTO+xfvJC+n/92Z19GfSHUZelbCbwPP8k4qrXo00utNZp/iKYVMT7I+CDjg4wPMj7I+CDjg4wPMj7I+CDjg4wPMj7I+KDahnO01P58eo0O8Pb9NXq2zl6id6f7+JQ3H2R8kPFBxgcZH2R8kPFBxgcZH2R8kPFBxgcZH2R8kPFB8T6/nY7RAa677fjhrovePdnso/mUNx9kfJDxQcYHGR9kfJDxQcYHGR9kfJDxQcYHGR9kfJDxQfk+/3aNDrCePo+ePVzu979+SvHmo4wPMj7I+CDjg4wPMj7I+CDjg4wPMj7I+CDjg4wPmqQPWPXzaP5j+E2PcLe8+SDjg4wPMj7I+CDjg4wPMj7I+CDjg4wPMj7I+CDjg4wPqovyGP1E/D/v41PefJDxQcYHGR9kfJDxQcYHGR9kfJDxQcYHGR9kfJDxQcYH/QGuAikxkvZivAAAAABJRU5ErkJggg==\" id=\"image2a11fc65b7\" transform=\"scale(1 -1) translate(0 -68.4)\" x=\"197.273668\" y=\"-127.68856\" width=\"68.4\" height=\"68.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4207,7 +4231,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4240,21 +4264,21 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4300,15 +4324,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAABfCAYAAACOTBv1AAABkElEQVR4nO3aMUoDUQBF0fyZUdBCSKeVEGxS2NhZpLIKrsTGVbiArMPSRuwEU0YQsgAtJWChEqKiSfYwr7iK9/Rv/nD51TDlZ3q76gSW15fJvFOfXbQff7xHZy/HV9G+Oj7N9tFaEeODjA8yPsj4IOODjA8yPsj4IOODjA8yPsj4IOODjA8q3/c30ff8aq8XvcDjybD1tjeZRGevvhbRvmxuRXtvPsj4IOODjA8yPsj4IOODjA8yPsj4IOODjA8yPsj4IOODmurgKHtCVUfz55f239T3p3fR2fXhINqnvPkg44OMDzI+yPgg44OMDzI+yPgg44OMDzI+yPgg44OMDyrnZSf6P3/09hS+QQmm7be/gTcfZHyQ8UHGBxkfZHyQ8UHGBxkfZHyQ8UHGBxkfZHxQ09/eyJ7wOovmpbubnf+HefNBxgcZH2R8kPFBxgcZH2R8kPFBxgcZH2R8kPFBxgcZH9Q8zD+jB/zn7/Epbz7I+CDjg4wPMj7I+CDjg4wPMj7I+CDjg4wPMj7I+CDjg9angSS7GZe2sAAAAABJRU5ErkJggg==\" id=\"imagea894ecee03\" transform=\"scale(1 -1) translate(0 -68.4)\" x=\"278.79019\" y=\"-127.68856\" width=\"68.4\" height=\"68.4\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4321,7 +4345,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4354,21 +4378,21 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4415,18 +4439,18 @@ "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAAgAAACiCAYAAAB8iIwDAAAA7klEQVR4nN2XSw4DIQxDUyn3P2s33ZWkN8iLZGCgsx1kP8cwn1d+3mnF5ZZR3Te3LAU6CkELjCyCFrACxoQFqc9BV5gQExkOiBmDFsgKBJkbGBiSLIYakxnYgg6OHpMnKcc8YMvxqOUutkzy+S13xbmYADkh5g2QqCC/9fKEmFd0QZA58BGEXehtygx3xFw/h7/oAp7E5oEMFBMVBluU980D60YFYgg5Jk9S7mIHpNwFODRSgEBDARjNk34noatOTLRYr4CTHHoXBNnogixkSIxZfxx0Rv2VIVGhwSBb1AJzFGQLUsC6dUjck+u7+AE+P2IIsbjxbAAAAABJRU5ErkJggg==\" id=\"image67800c5b9c\" transform=\"scale(1 -1) translate(0 -116.64)\" x=\"366.48\" y=\"-50.4\" width=\"5.76\" height=\"116.64\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4450,7 +4474,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4465,7 +4489,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4480,7 +4504,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4527,7 +4551,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4583,7 +4607,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4611,28 +4635,28 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4666,7 +4690,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 26, "metadata": { "origin_pos": 70, "tab": [ @@ -4685,11 +4709,11 @@ " \n", " \n", " \n", - " 2025-12-08T18:23:40.964900\n", + " 2025-12-12T23:55:08.755404\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.10.7, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -4716,27 +4740,27 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAAA5CAYAAABQ4feyAAABS0lEQVR4nO3XPUoDYRRG4W/GEUVDimCrFhZB3IQb0dZdWGQBFoJrMBYuwFJBC2EWYBftrEWR/Dgu4d7uMOQ89ctlOHzNVIvL864EZnfP0aSUUsrRy1O46T5nqVv14Ulq12c1/QHrzPgg44OMDzI+yPgg44OMDzI+qLoog/AP96a9Tx2rD47j0XKeulUN91K7PvPlg4wPMj7I+CDjg4wPMj7I+KBq2T6EP1nVcJQ69nc9CTfdfJG6tXk1Te36zJcPMj7I+CDjg4wPMj7I+CDjg4wPaur9cbz6/U4de7xtw83p5Cx1ax348kHGBxkfZHyQ8UHGBxkfZHxQU7YH8WprN3Xsa7UKN93He+rWOvDlg4wPMj7I+CDjg4wPMj7I+CDjg5pqowlH3WqZOjYe7YSbn9e31K1hatVvvnyQ8UHGBxkfZHyQ8UHGBxkf9A9GtytlrU2jSwAAAABJRU5ErkJggg==\" id=\"image29f5d86fbe\" transform=\"scale(1 -1) translate(0 -41.04)\" x=\"34.240625\" y=\"-22.036386\" width=\"68.4\" height=\"41.04\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4745,12 +4769,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4786,7 +4810,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5216,22 +5240,22 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAAA5CAYAAABQ4feyAAABI0lEQVR4nO3ZwWkCURRA0f/HAcHERXDhRpC04CY2YR9pJRXEEmwhPWgB6iKbkJ0hIBIxJpMS3gchF5l71o/H5/I2w+T97KFJgdvFSzSSUkrpd7sKZ5rde9GuznRWNHfNKvoBbWZ8kPFBxgcZH2R8kPFBxgcZH1Svl/EX5+T0VbatfxeOVMNx2a4W8PJBxgcZH2R8kPFBxgcZH2R8UG4On+FvxMebUdGy+eHt4ge1iZcPMj7I+CDjg4wPMj7I+CDjg4wPMj7I+CDjg4wPMj7I+CDjg4wPMj6ofhrch0PPH5uiZc3POR6qOkW7cs5Fc9fMywcZH2R8kPFBxgcZH2R8kPFBxgfVr8fvcCh3e//wlPbx8kHGBxkfZHyQ8UHGBxkfZHzQH4PcH0G8xwf/AAAAAElFTkSuQmCC\" id=\"imagea356f5f690\" transform=\"scale(1 -1) translate(0 -41.04)\" x=\"115.757147\" y=\"-22.036386\" width=\"68.4\" height=\"41.04\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5240,14 +5264,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5319,22 +5343,22 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAAA5CAYAAABQ4feyAAABQElEQVR4nO3ZMUoDYRBA4Uw2haASFCNio4X38CieQ3vbVPZaCV4hjYewEkUFK7WJhUIw7Fp4gJlGHkveVw+z8Jhm+eN2st8NEsdPd9nIn/lbPhPD0qrY2qt9s8dqJfQvjA8yPsj4IOODjA8yPsj4IOODYjm7Sv9wv6cXpWUblzf5UNeWdsV4UprrMy8fZHyQ8UHGBxkfZHyQ8UHGB0X7+Z7+ZLXX09q2g6N85uWhtKo5Oa19s8e8fJDxQcYHGR9kfJDxQcYHGR9kfNBoMGzyqZ3d2rbn+3xmc1zbtQK8fJDxQcYHGR9kfJDxQcYHGR8U3dc8fUY83z4sLTv7eMyHfhalXbG2XprrMy8fZHyQ8UHGBxkfZHyQ8UHGBxkfNKoMvS6WpWXR5Ou6yrPlivDyQcYHGR9kfJDxQcYHGR9kfNAvqWom5k5hCV4AAAAASUVORK5CYII=\" id=\"image852c663d37\" transform=\"scale(1 -1) translate(0 -41.04)\" x=\"197.273668\" y=\"-22.036386\" width=\"68.4\" height=\"41.04\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5343,14 +5367,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5430,22 +5454,22 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAAA5CAYAAABQ4feyAAABMUlEQVR4nO3bMUoDQRSA4dnNVIL2VjG1N/BMooewsw22gdS24hlEC8EipY29CJomuDs5wnto8RP2/+rHY/mZZtjd7vf5sZXA7PwiGimllDLcL8OZ9vaa2lVvVqm5Q9bTDzBlxgcZH2R8kPFBxgcZH2R8kPFBtT89C4faOKaWtZeneGixSO2aAk8+yPgg44OMDzI+yPgg44OMD+rG78/wNeLl8Ty17G778e8HmhJPPsj4IOODjA8yPsj4IOODjA8yPqh2fdx/KOElWH/gyQcZH2R8kPFBxgcZH2R8kPFBXdt+hTeo1nKXrOH2OpzZbd5Tu47WD6m5Q+bJBxkfZHyQ8UHGBxkfZHyQ8UHGB9XMn4ZXJ7kPZZc/8YeyNbVpGjz5IOODjA8yPsj4IOODjA8yPmgPYQwsLuZ9yNIAAAAASUVORK5CYII=\" id=\"image6a75d7f26a\" transform=\"scale(1 -1) translate(0 -41.04)\" x=\"278.79019\" y=\"-22.036386\" width=\"68.4\" height=\"41.04\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5454,14 +5478,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5528,15 +5552,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAAA5CAYAAABQ4feyAAABRUlEQVR4nO3boUqDURiHcV+DDgWHk6HBGzKYvQVvx7RqGxZhQTBYRbELGrUapjiDKPu8hPMPwuOHzy+/vGc8O+UwVhejvW6l4eDxrjWS+/qMxmo4/r0z/6hV+gP8Z8YHGR9kfJDxQcYHGR9kfJDxQbVczJsv3O7lOVrWXU6bM9832Wt5fXIezfWZNx9kfJDxQcYHGR9kfJDxQcYH1Wx7t/nIOny6z7Yt5sGJ2fddWzvZmT3mzQcZH2R8kPFBxgcZH2R8kPFBxgdV9/HafOEeb+5Hyybvwc+NVdGuCuf6zJsPMj7I+CDjg4wPMj7I+CDjg6JHVhf+g3B5dtKceTudRbtGV9fRXJ9580HGBxkfZHyQ8UHGBxkfZHyQ8UE1HY6bL9yjh9ts22AjOTJaVWuD7Mwe8+aDjA8yPsj4IOODjA8yPsj4oB9v8zC/zAXb6wAAAABJRU5ErkJggg==\" id=\"imagec1086bd9a5\" transform=\"scale(1 -1) translate(0 -41.04)\" x=\"34.240625\" y=\"-127.876386\" width=\"68.4\" height=\"41.04\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5549,7 +5573,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5598,7 +5622,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5611,7 +5635,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5683,15 +5707,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAAA5CAYAAABQ4feyAAABR0lEQVR4nO3ZsS4EYRRH8W9mx1pZ0YtCYQvVhlIEj+ORlKLTL/EEGo0HoBM0yyaUu5nxCPc2cjLZ86tv/uTkayZbtV/vXQm8nJxHJ6WUUib3t+FNN/9IbQ2mF6m7Pqvpf2CdGR9kfJDxQcYHGR9kfJDxQcYHVZdlO/zCvVq8JufCqVLqQWqpaobJv9lfvnyQ8UHGBxkfZHyQ8UHGBxkf1BxuJT5mNjZza4vP+GY0zm35kaX/ZHyQ8UHGBxkfZHyQ8UHGBxkfVLXzt/C3v+fpaWrs6HEWH/18p7bqyXHqrs98+SDjg4wPMj7I+CDjg4wPMj6oKatlePS7XKXGquEovOnGO6mtdeDLBxkfZHyQ8UHGBxkfZHyQ8UHGBzXt7Do8Ont6SI21dzfx0d5+aqvsHuTuesyXDzI+yPgg44OMDzI+yPgg44P+AI/kJzR16+raAAAAAElFTkSuQmCC\" id=\"image8c6e1ae327\" transform=\"scale(1 -1) translate(0 -41.04)\" x=\"115.757147\" y=\"-127.876386\" width=\"68.4\" height=\"41.04\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5704,7 +5728,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5737,14 +5761,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5790,15 +5814,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAAA5CAYAAABQ4feyAAABTklEQVR4nO3ZsS4EURSA4b0TQVaikmispVEgU4mEXkHhOfZRvAHvIlsKnQ0FJZFQrYhQmlF4gHMa+TPZ/6tPzkz+uc3NlMlg2PYC9cMkGvnz/hqOtJ/T1Kpqs849s8Mq+gVmmfFBxgcZH2R8kPFBxgcZH2R8UGme7sIb7vX+cWrZwf1VPFTlvnfpL6fmusyTDzI+yPgg44OMDzI+yPgg44Pmegv9cGjvdCe1rLkdhzNluJ3aVda9ZOkfGR9kfJDxQcYHGR9kfJDxQcYHlfb7I/yNOFpaSy07/3qJH1hKatcs8OSDjA8yPsj4IOODjA8yPsj4oPLzeBNespqLs9yyo5Nwpto9zO1ayV3susyTDzI+yPgg44OMDzI+yPgg44OMDyrP9VZ4wx2ML1PL2ulbPDS/mNpVrW6k5rrMkw8yPsj4IOODjA8yPsj4IOODfgG2Vyieby7BKQAAAABJRU5ErkJggg==\" id=\"image8bcadeaf3c\" transform=\"scale(1 -1) translate(0 -41.04)\" x=\"197.273668\" y=\"-127.876386\" width=\"68.4\" height=\"41.04\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5811,7 +5835,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5844,14 +5868,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5897,15 +5921,15 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAF8AAAA5CAYAAABQ4feyAAABQElEQVR4nO3ZoUpEURCA4XPuXlDUZvUdNCxocxEEk2D2OXwMX0Owixs1ahHcZDCYFAymtcm5PsJMEH6X+395mF1+plxOXZ4eDCWwcTWPRkoppbTnu9RcxmTv6M92/Vcd/QfGzPgg44OMDzI+yPgg44OMDzI+qLa3RfiFez89SS2bvTwmfrGmdtX1rdTcKvPyQcYHGR9kfJDxQcYHGR9kfFBftnfCoZuvZWrZbG0zMRV+042Glw8yPsj4IOODjA8yPsj4IOODjA/qaxf3/24tty31RJh7RhwDLx9kfJDxQcYHGR9kfJDxQcYH1Z/ry/Bdrzs8Sy1rD7fx0OdHatfk/CI1t8q8fJDxQcYHGR9kfJDxQcYHGR9kfFDf7R+HQ8P7a2rZsHgKZ+ruNLVrDLx8kPFBxgcZH2R8kPFBxgcZH/QLCuskcNi/5SQAAAAASUVORK5CYII=\" id=\"image37284f4207\" transform=\"scale(1 -1) translate(0 -41.04)\" x=\"278.79019\" y=\"-127.876386\" width=\"68.4\" height=\"41.04\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5918,7 +5942,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5951,14 +5975,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6005,18 +6029,18 @@ "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAAAgAAACiCAYAAAB8iIwDAAAA60lEQVR4nOWXMQ7DMAwDVcD/f2uWbpHUH+gM0BZstGsE6kjaSPrJ75NW/IZlVM9tWJYCPQpBCkYDQStIIVGhIYf9NjnqjgNDA+4wEDRAkIkKGDUzyAqYA3ahQxIDJ6nngId2v039yE20uR9ST/KELhruhX79dcgFNtGFPHCDzbwB8ogumIFerI5dqB8YrICQd9hUv+X+pIugoAIZyOaEQvnchssucAVCxn6behcdkPqJwhV4cWqBmRw6FGgA/1bjvSAFZMAkXe9igU1aIUPqNl9y8S5YodaNkFiWbhMvDkPSClTAuk+AnGCoJX6MlWEIAYuDfgAAAABJRU5ErkJggg==\" id=\"image06476a881c\" transform=\"scale(1 -1) translate(0 -116.64)\" x=\"366.48\" y=\"-36.72\" width=\"5.76\" height=\"116.64\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6040,12 +6064,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6055,12 +6079,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6070,12 +6094,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", diff --git a/chapter_11_optimization/adadelta.ipynb b/chapter_11_optimization/adadelta.ipynb index f4a66e3..374ee65 100644 --- a/chapter_11_optimization/adadelta.ipynb +++ b/chapter_11_optimization/adadelta.ipynb @@ -18,7 +18,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "id": "7c4d517b", "metadata": {}, "outputs": [], @@ -28,19 +28,20 @@ "\n", "%matplotlib inline\n", "import mindspore\n", + "from mindspore import mint\n", "from d2l import mindspore as d2l\n", "\n", "\n", "def init_adadelta_states(feature_dim):\n", - " s_w, s_b = d2l.zeros((feature_dim, 1)), d2l.zeros(1)\n", - " delta_w, delta_b = d2l.zeros((feature_dim, 1)), d2l.zeros(1)\n", + " s_w, s_b = mint.zeros((feature_dim, 1)), mint.zeros(1)\n", + " delta_w, delta_b = mint.zeros((feature_dim, 1)), mint.zeros(1)\n", " return ((s_w, delta_w), (s_b, delta_b))\n", "\n", "def adadelta(params, grads, states, hyperparams):\n", " rho, eps = hyperparams['rho'], 1e-5\n", " for p, (s, delta), grad in zip(params, states, grads):\n", - " s[:] = rho * s + (1 - rho) * d2l.square(grad)\n", - " g = (d2l.sqrt(delta + eps) / d2l.sqrt(s + eps)) * grad\n", + " s[:] = rho * s + (1 - rho) * mint.square(grad)\n", + " g = (mint.sqrt(delta + eps) / mint.sqrt(s + eps)) * grad\n", " mindspore.ops.assign_sub(p, g)\n", " delta[:] = rho * delta + (1 - rho) * g * g" ] @@ -55,7 +56,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "loss: 0.139, 0.604 sec/epoch\n" + "loss: 0.140, 1.196 sec/epoch\n" ] }, { @@ -69,11 +70,11 @@ " \n", " \n", " \n", - " 2025-12-08T18:44:15.964346\n", + " 2025-12-12T23:57:48.355549\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.10.7, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -105,16 +106,16 @@ " \n", " \n", + "\" clip-path=\"url(#p0265732b8f)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -160,11 +161,11 @@ " \n", " \n", + "\" clip-path=\"url(#p0265732b8f)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -207,11 +208,11 @@ " \n", " \n", + "\" clip-path=\"url(#p0265732b8f)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -243,11 +244,11 @@ " \n", " \n", + "\" clip-path=\"url(#p0265732b8f)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -263,11 +264,11 @@ " \n", " \n", + "\" clip-path=\"url(#p0265732b8f)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -435,16 +436,16 @@ " \n", " \n", + "\" clip-path=\"url(#p0265732b8f)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -462,11 +463,11 @@ " \n", " \n", + "\" clip-path=\"url(#p0265732b8f)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -484,11 +485,11 @@ " \n", " \n", + "\" clip-path=\"url(#p0265732b8f)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -518,11 +519,11 @@ " \n", " \n", + "\" clip-path=\"url(#p0265732b8f)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -574,11 +575,11 @@ " \n", " \n", + "\" clip-path=\"url(#p0265732b8f)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -596,11 +597,11 @@ " \n", " \n", + "\" clip-path=\"url(#p0265732b8f)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -665,7 +666,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -720,7 +721,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "loss: 0.216, 0.141 sec/epoch\n" + "loss: 0.211, 0.477 sec/epoch\n" ] }, { @@ -734,11 +735,11 @@ " \n", " \n", " \n", - " 2025-12-08T18:44:32.184719\n", + " 2025-12-12T23:58:14.998350\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.10.7, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -770,16 +771,16 @@ " \n", " \n", + "\" clip-path=\"url(#p67bd30bbb7)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -816,11 +817,11 @@ " \n", " \n", + "\" clip-path=\"url(#p67bd30bbb7)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -850,11 +851,11 @@ " \n", " \n", + "\" clip-path=\"url(#p67bd30bbb7)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -894,11 +895,11 @@ " \n", " \n", + "\" clip-path=\"url(#p67bd30bbb7)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -946,11 +947,11 @@ " \n", " \n", + "\" clip-path=\"url(#p67bd30bbb7)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1111,16 +1112,16 @@ " \n", " \n", + "\" clip-path=\"url(#p67bd30bbb7)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1172,11 +1173,11 @@ " \n", " \n", + "\" clip-path=\"url(#p67bd30bbb7)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1194,11 +1195,11 @@ " \n", " \n", + "\" clip-path=\"url(#p67bd30bbb7)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1228,11 +1229,11 @@ " \n", " \n", + "\" clip-path=\"url(#p67bd30bbb7)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1250,11 +1251,11 @@ " \n", " \n", + "\" clip-path=\"url(#p67bd30bbb7)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1272,11 +1273,11 @@ " \n", " \n", + "\" clip-path=\"url(#p67bd30bbb7)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1341,37 +1342,37 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", diff --git a/chapter_11_optimization/adagrad.ipynb b/chapter_11_optimization/adagrad.ipynb index 59e1e1e..795b3c5 100644 --- a/chapter_11_optimization/adagrad.ipynb +++ b/chapter_11_optimization/adagrad.ipynb @@ -18,7 +18,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "id": "1a64f376", "metadata": {}, "outputs": [ @@ -40,11 +40,11 @@ " \n", " \n", " \n", - " 2025-12-08T18:50:16.529756\n", + " 2025-12-13T00:01:22.236836\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.10.7, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -75,12 +75,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -122,7 +122,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -162,7 +162,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -238,12 +238,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -291,7 +291,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -305,7 +305,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -319,7 +319,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -359,9 +359,9 @@ "L 133.794049 46.22802 \n", "L 135.811474 45.484772 \n", "L 137.750856 44.82068 \n", - "\" clip-path=\"url(#p29170f48d1)\" style=\"fill: none; stroke: #ff7f0e; stroke-width: 1.5; stroke-linecap: square\"/>\n", + "\" clip-path=\"url(#padc0e7f7b6)\" style=\"fill: none; stroke: #ff7f0e; stroke-width: 1.5; stroke-linecap: square\"/>\n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", + "\" clip-path=\"url(#padc0e7f7b6)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n", " \n", + "\" clip-path=\"url(#padc0e7f7b6)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n", " \n", + "\" clip-path=\"url(#padc0e7f7b6)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n", " \n", + "\" clip-path=\"url(#padc0e7f7b6)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n", " \n", + "\" clip-path=\"url(#padc0e7f7b6)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n", " \n", + "\" clip-path=\"url(#padc0e7f7b6)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n", " \n", - " \n", + "\" clip-path=\"url(#padc0e7f7b6)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -900,6 +900,7 @@ "%matplotlib inline\n", "import math\n", "import mindspore\n", + "from mindspore import mint\n", "from d2l import mindspore as d2l\n", "\n", "def adagrad_2d(x1, x2, s1, s2):\n", @@ -942,11 +943,11 @@ " \n", " \n", " \n", - " 2025-12-08T18:49:25.524295\n", + " 2025-12-13T00:00:45.898250\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.10.7, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -977,12 +978,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1024,7 +1025,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1064,7 +1065,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1140,12 +1141,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1193,7 +1194,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1207,7 +1208,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1221,7 +1222,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1261,9 +1262,9 @@ "L 210.308472 39.184616 \n", "L 210.354509 39.184616 \n", "L 210.386204 39.184616 \n", - "\" clip-path=\"url(#p0af9c09422)\" style=\"fill: none; stroke: #ff7f0e; stroke-width: 1.5; stroke-linecap: square\"/>\n", + "\" clip-path=\"url(#pe51be7b2c2)\" style=\"fill: none; stroke: #ff7f0e; stroke-width: 1.5; stroke-linecap: square\"/>\n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", + "\" clip-path=\"url(#pe51be7b2c2)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n", " \n", + "\" clip-path=\"url(#pe51be7b2c2)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n", " \n", + "\" clip-path=\"url(#pe51be7b2c2)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n", " \n", + "\" clip-path=\"url(#pe51be7b2c2)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n", " \n", + "\" clip-path=\"url(#pe51be7b2c2)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n", " \n", + "\" clip-path=\"url(#pe51be7b2c2)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n", " \n", - " \n", + "\" clip-path=\"url(#pe51be7b2c2)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1816,8 +1817,8 @@ "outputs": [], "source": [ "def init_adagrad_states(feature_dim):\n", - " s_w = d2l.zeros((feature_dim, 1))\n", - " s_b = d2l.zeros(1)\n", + " s_w = mint.zeros((feature_dim, 1))\n", + " s_b = mint.zeros(1)\n", " return (s_w, s_b)\n", "\n", "def adagrad(params, grads, states, hyperparams):\n", @@ -1837,7 +1838,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "loss: 0.139, 0.052 sec/epoch\n" + "loss: 0.139, 0.059 sec/epoch\n" ] }, { @@ -1851,11 +1852,11 @@ " \n", " \n", " \n", - " 2025-12-08T18:49:31.656775\n", + " 2025-12-13T00:00:52.293931\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.10.7, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -1887,16 +1888,16 @@ " \n", " \n", + "\" clip-path=\"url(#pd9f880f63b)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1942,11 +1943,11 @@ " \n", " \n", + "\" clip-path=\"url(#pd9f880f63b)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1989,11 +1990,11 @@ " \n", " \n", + "\" clip-path=\"url(#pd9f880f63b)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2025,11 +2026,11 @@ " \n", " \n", + "\" clip-path=\"url(#pd9f880f63b)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2045,11 +2046,11 @@ " \n", " \n", + "\" clip-path=\"url(#pd9f880f63b)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2217,16 +2218,16 @@ " \n", " \n", + "\" clip-path=\"url(#pd9f880f63b)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2244,11 +2245,11 @@ " \n", " \n", + "\" clip-path=\"url(#pd9f880f63b)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2266,11 +2267,11 @@ " \n", " \n", + "\" clip-path=\"url(#pd9f880f63b)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2300,11 +2301,11 @@ " \n", " \n", + "\" clip-path=\"url(#pd9f880f63b)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2356,11 +2357,11 @@ " \n", " \n", + "\" clip-path=\"url(#pd9f880f63b)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2378,11 +2379,11 @@ " \n", " \n", + "\" clip-path=\"url(#pd9f880f63b)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2447,7 +2448,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2510,7 +2511,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "loss: 0.217, 0.723 sec/epoch\n" + "loss: 0.213, 0.473 sec/epoch\n" ] }, { @@ -2524,11 +2525,11 @@ " \n", " \n", " \n", - " 2025-12-08T18:50:05.312757\n", + " 2025-12-13T00:01:18.628903\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.10.7, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -2560,16 +2561,16 @@ " \n", " \n", + "\" clip-path=\"url(#p9d3e965463)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2606,11 +2607,11 @@ " \n", " \n", + "\" clip-path=\"url(#p9d3e965463)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2640,11 +2641,11 @@ " \n", " \n", + "\" clip-path=\"url(#p9d3e965463)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2684,11 +2685,11 @@ " \n", " \n", + "\" clip-path=\"url(#p9d3e965463)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2736,11 +2737,11 @@ " \n", " \n", + "\" clip-path=\"url(#p9d3e965463)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2901,16 +2902,16 @@ " \n", " \n", + "\" clip-path=\"url(#p9d3e965463)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2962,11 +2963,11 @@ " \n", " \n", + "\" clip-path=\"url(#p9d3e965463)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2984,11 +2985,11 @@ " \n", " \n", + "\" clip-path=\"url(#p9d3e965463)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3018,11 +3019,11 @@ " \n", " \n", + "\" clip-path=\"url(#p9d3e965463)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3040,11 +3041,11 @@ " \n", " \n", + "\" clip-path=\"url(#p9d3e965463)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3062,11 +3063,11 @@ " \n", " \n", + "\" clip-path=\"url(#p9d3e965463)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3131,37 +3132,37 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", diff --git a/chapter_11_optimization/adam.ipynb b/chapter_11_optimization/adam.ipynb index 240119b..d8a49e5 100644 --- a/chapter_11_optimization/adam.ipynb +++ b/chapter_11_optimization/adam.ipynb @@ -18,7 +18,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 5, "id": "be011b8e", "metadata": {}, "outputs": [], @@ -29,27 +29,28 @@ "%matplotlib inline\n", "import mindspore\n", "from d2l import mindspore as d2l\n", + "from mindspore import mint\n", "\n", "\n", "def init_adam_states(feature_dim):\n", - " v_w, v_b = d2l.zeros((feature_dim, 1)), d2l.zeros(1)\n", - " s_w, s_b = d2l.zeros((feature_dim, 1)), d2l.zeros(1)\n", + " v_w, v_b = mint.zeros((feature_dim, 1)), mint.zeros(1)\n", + " s_w, s_b = mint.zeros((feature_dim, 1)), mint.zeros(1)\n", " return ((v_w, s_w), (v_b, s_b))\n", "\n", "def adam(params, grads, states, hyperparams):\n", " beta1, beta2, eps = 0.9, 0.999, 1e-6\n", " for p, (v, s), grad in zip(params, states, grads):\n", " v[:] = beta1 * v + (1 - beta1) * grad\n", - " s[:] = beta2 * s + (1 - beta2) * d2l.square(grad)\n", + " s[:] = beta2 * s + (1 - beta2) * mint.square(grad)\n", " v_bias_corr = v / (1 - beta1 ** hyperparams['t'])\n", " s_bias_corr = s / (1 - beta2 ** hyperparams['t'])\n", - " p[:] -= hyperparams['lr'] * v_bias_corr / (d2l.sqrt(s_bias_corr) + eps)\n", + " p[:] -= hyperparams['lr'] * v_bias_corr / (mint.sqrt(s_bias_corr) + eps)\n", " hyperparams['t'] += 1" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "id": "1823c8ac", "metadata": {}, "outputs": [ @@ -57,7 +58,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "loss: 0.142, 0.063 sec/epoch\n" + "loss: 0.141, 0.068 sec/epoch\n" ] }, { @@ -71,11 +72,11 @@ " \n", " \n", " \n", - " 2025-12-08T18:51:29.985810\n", + " 2025-12-13T00:03:58.093493\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.10.7, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -107,16 +108,16 @@ " \n", " \n", + "\" clip-path=\"url(#pae94a346c9)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -162,11 +163,11 @@ " \n", " \n", + "\" clip-path=\"url(#pae94a346c9)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -209,11 +210,11 @@ " \n", " \n", + "\" clip-path=\"url(#pae94a346c9)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -245,11 +246,11 @@ " \n", " \n", + "\" clip-path=\"url(#pae94a346c9)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -265,11 +266,11 @@ " \n", " \n", + "\" clip-path=\"url(#pae94a346c9)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -437,16 +438,16 @@ " \n", " \n", + "\" clip-path=\"url(#pae94a346c9)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -464,11 +465,11 @@ " \n", " \n", + "\" clip-path=\"url(#pae94a346c9)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -486,11 +487,11 @@ " \n", " \n", + "\" clip-path=\"url(#pae94a346c9)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -520,11 +521,11 @@ " \n", " \n", + "\" clip-path=\"url(#pae94a346c9)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -576,11 +577,11 @@ " \n", " \n", + "\" clip-path=\"url(#pae94a346c9)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -598,11 +599,11 @@ " \n", " \n", + "\" clip-path=\"url(#pae94a346c9)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -667,7 +668,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -714,7 +715,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "id": "7e7b9fea", "metadata": {}, "outputs": [ @@ -722,7 +723,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "loss: 0.218, 0.752 sec/epoch\n" + "loss: 0.205, 0.752 sec/epoch\n" ] }, { @@ -736,11 +737,11 @@ " \n", " \n", " \n", - " 2025-12-08T18:52:07.338991\n", + " 2025-12-13T00:04:32.623103\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.10.7, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -772,16 +773,16 @@ " \n", " \n", + "\" clip-path=\"url(#p359ecc9f40)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -818,11 +819,11 @@ " \n", " \n", + "\" clip-path=\"url(#p359ecc9f40)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -852,11 +853,11 @@ " \n", " \n", + "\" clip-path=\"url(#p359ecc9f40)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -896,11 +897,11 @@ " \n", " \n", + "\" clip-path=\"url(#p359ecc9f40)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -948,11 +949,11 @@ " \n", " \n", + "\" clip-path=\"url(#p359ecc9f40)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1113,16 +1114,16 @@ " \n", " \n", + "\" clip-path=\"url(#p359ecc9f40)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1174,11 +1175,11 @@ " \n", " \n", + "\" clip-path=\"url(#p359ecc9f40)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1196,11 +1197,11 @@ " \n", " \n", + "\" clip-path=\"url(#p359ecc9f40)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1230,11 +1231,11 @@ " \n", " \n", + "\" clip-path=\"url(#p359ecc9f40)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1252,11 +1253,11 @@ " \n", " \n", + "\" clip-path=\"url(#p359ecc9f40)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1274,11 +1275,11 @@ " \n", " \n", + "\" clip-path=\"url(#p359ecc9f40)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1343,37 +1344,37 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1427,7 +1428,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "id": "fbbe624f", "metadata": {}, "outputs": [ @@ -1435,7 +1436,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "loss: 0.139, 0.060 sec/epoch\n" + "loss: 0.139, 0.064 sec/epoch\n" ] }, { @@ -1449,11 +1450,11 @@ " \n", " \n", " \n", - " 2025-12-08T18:52:51.850765\n", + " 2025-12-13T00:04:38.621586\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.10.7, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -1485,16 +1486,16 @@ " \n", " \n", + "\" clip-path=\"url(#pa2b65e72dd)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1540,11 +1541,11 @@ " \n", " \n", + "\" clip-path=\"url(#pa2b65e72dd)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1587,11 +1588,11 @@ " \n", " \n", + "\" clip-path=\"url(#pa2b65e72dd)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1623,11 +1624,11 @@ " \n", " \n", + "\" clip-path=\"url(#pa2b65e72dd)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1643,11 +1644,11 @@ " \n", " \n", + "\" clip-path=\"url(#pa2b65e72dd)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1815,16 +1816,16 @@ " \n", " \n", + "\" clip-path=\"url(#pa2b65e72dd)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1842,11 +1843,11 @@ " \n", " \n", + "\" clip-path=\"url(#pa2b65e72dd)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1864,11 +1865,11 @@ " \n", " \n", + "\" clip-path=\"url(#pa2b65e72dd)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1898,11 +1899,11 @@ " \n", " \n", + "\" clip-path=\"url(#pa2b65e72dd)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1954,11 +1955,11 @@ " \n", " \n", + "\" clip-path=\"url(#pa2b65e72dd)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1976,11 +1977,11 @@ " \n", " \n", + "\" clip-path=\"url(#pa2b65e72dd)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2045,7 +2046,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2090,11 +2091,11 @@ " for p, (v, s), grad in zip(params, states, grads):\n", "\n", " v[:] = beta1 * v + (1 - beta1) * grad\n", - " s[:] = s + (1 - beta2) * d2l.sign(\n", - " d2l.square(grad) - s) * d2l.square(grad)\n", + " s[:] = s + (1 - beta2) * mint.sign(\n", + " mint.square(grad) - s) * mint.square(grad)\n", " v_bias_corr = v / (1 - beta1 ** hyperparams['t'])\n", " s_bias_corr = s / (1 - beta2 ** hyperparams['t'])\n", - " p[:] -= hyperparams['lr'] * v_bias_corr / (d2l.sqrt(s_bias_corr)\n", + " p[:] -= hyperparams['lr'] * v_bias_corr / (mint.sqrt(s_bias_corr)\n", " + eps)\n", " hyperparams['t'] += 1\n", "\n", diff --git a/chapter_11_optimization/convexity.ipynb b/chapter_11_optimization/convexity.ipynb index c42b401..4d6bacc 100644 --- a/chapter_11_optimization/convexity.ipynb +++ b/chapter_11_optimization/convexity.ipynb @@ -13,8 +13,27 @@ "execution_count": 1, "id": "81ce8052", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[WARNING] CORE(79494,ffff96252640,python):2025-12-13-00:19:32.843.856 [mindspore/core/utils/ms_context.cc:533] GetJitLevel] Set jit level to O2 for rank table startup method.\n", + "/usr/local/python3.10.14/lib/python3.10/site-packages/numpy/core/getlimits.py:549: UserWarning: The value of the smallest subnormal for type is zero.\n", + " setattr(self, word, getattr(machar, word).flat[0])\n", + "/usr/local/python3.10.14/lib/python3.10/site-packages/numpy/core/getlimits.py:89: UserWarning: The value of the smallest subnormal for type is zero.\n", + " return self._float_to_str(self.smallest_subnormal)\n", + "/usr/local/python3.10.14/lib/python3.10/site-packages/numpy/core/getlimits.py:549: UserWarning: The value of the smallest subnormal for type is zero.\n", + " setattr(self, word, getattr(machar, word).flat[0])\n", + "/usr/local/python3.10.14/lib/python3.10/site-packages/numpy/core/getlimits.py:89: UserWarning: The value of the smallest subnormal for type is zero.\n", + " return self._float_to_str(self.smallest_subnormal)\n" + ] + } + ], "source": [ + "import sys\n", + "sys.path.append('..')\n", + "\n", "%matplotlib inline\n", "import numpy as np\n", "import mindspore\n", @@ -44,22 +63,34 @@ "id": "3fd8dd8d", "metadata": {}, "outputs": [ + { + "ename": "NameError", + "evalue": "name 'mint' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[2], line 9\u001b[0m\n\u001b[1;32m 7\u001b[0m _, axes \u001b[38;5;241m=\u001b[39m d2l\u001b[38;5;241m.\u001b[39mplt\u001b[38;5;241m.\u001b[39msubplots(\u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m3\u001b[39m, figsize\u001b[38;5;241m=\u001b[39m(\u001b[38;5;241m9\u001b[39m, \u001b[38;5;241m3\u001b[39m))\n\u001b[1;32m 8\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m ax, func \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mzip\u001b[39m(axes, [f, g, h]):\n\u001b[0;32m----> 9\u001b[0m d2l\u001b[38;5;241m.\u001b[39mplot([x, segment], [\u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[43mx\u001b[49m\u001b[43m)\u001b[49m, func(segment)], axes\u001b[38;5;241m=\u001b[39max)\n", + "Cell \u001b[0;32mIn[2], line 2\u001b[0m, in \u001b[0;36m\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 1\u001b[0m f \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mlambda\u001b[39;00m x: \u001b[38;5;241m0.5\u001b[39m \u001b[38;5;241m*\u001b[39m x\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m2\u001b[39m \u001b[38;5;66;03m# 凸函数\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m g \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mlambda\u001b[39;00m x: \u001b[43mmint\u001b[49m\u001b[38;5;241m.\u001b[39mcos(np\u001b[38;5;241m.\u001b[39mpi \u001b[38;5;241m*\u001b[39m x) \u001b[38;5;66;03m# 非凸函数\u001b[39;00m\n\u001b[1;32m 3\u001b[0m h \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mlambda\u001b[39;00m x: mint\u001b[38;5;241m.\u001b[39mexp(\u001b[38;5;241m0.5\u001b[39m \u001b[38;5;241m*\u001b[39m x) \u001b[38;5;66;03m# 凸函数\u001b[39;00m\n\u001b[1;32m 5\u001b[0m x, segment \u001b[38;5;241m=\u001b[39m d2l\u001b[38;5;241m.\u001b[39marange(\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m2\u001b[39m, \u001b[38;5;241m2\u001b[39m, \u001b[38;5;241m0.01\u001b[39m), d2l\u001b[38;5;241m.\u001b[39mtensor([\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1.5\u001b[39m, \u001b[38;5;241m1\u001b[39m])\n", + "\u001b[0;31mNameError\u001b[0m: name 'mint' is not defined" + ] + }, { "data": { "image/svg+xml": [ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T00:34:37.647184\n", + " 2025-12-13T00:19:52.592175\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.6.3, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -70,42 +101,42 @@ " \n", " \n", " \n", - " \n", " \n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -207,23 +238,23 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", + " \n", + " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "
\n" @@ -993,8 +1008,8 @@ ], "source": [ "f = lambda x: 0.5 * x**2 # 凸函数\n", - "g = lambda x: d2l.cos(np.pi * x) # 非凸函数\n", - "h = lambda x: d2l.exp(0.5 * x) # 凸函数\n", + "g = lambda x: mint.cos(np.pi * x) # 非凸函数\n", + "h = lambda x: mint.exp(0.5 * x) # 凸函数\n", "\n", "x, segment = d2l.arange(-2, 2, 0.01), d2l.tensor([-1.5, 1])\n", "d2l.use_svg_display()\n", @@ -1021,602 +1036,22 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "id": "788c1b32", "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " 2023-03-03T00:34:38.069026\n", - " image/svg+xml\n", - " \n", - " \n", - " Matplotlib v3.6.3, https://matplotlib.org/\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n" - ], - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "f = lambda x: (x - 1) ** 2\n", "d2l.set_figsize()\n", "d2l.plot([x, segment], [f(x), f(segment)], 'x', 'f(x)')" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "eb71705e", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { "kernelspec": { - "display_name": "d2l_mindspore", + "display_name": "Python 3.10", "language": "python", - "name": "mindspore2.0" + "name": "py310" }, "language_info": { "codemirror_mode": { @@ -1628,7 +1063,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.16" + "version": "3.10.14" }, "toc": { "base_numbering": 1, diff --git a/chapter_11_optimization/gd.ipynb b/chapter_11_optimization/gd.ipynb index e8cb8a9..086daf4 100644 --- a/chapter_11_optimization/gd.ipynb +++ b/chapter_11_optimization/gd.ipynb @@ -18,7 +18,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "42c3c9fa", "metadata": {}, "outputs": [], @@ -30,6 +30,7 @@ "import numpy as np\n", "import mindspore\n", "from d2l import mindspore as d2l\n", + "from mindspore import mint\n", "\n", "def f(x): # 目标函数\n", " return x ** 2\n", @@ -40,7 +41,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "id": "6aa6fb7e", "metadata": {}, "outputs": [ @@ -67,7 +68,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "id": "bafdaef9", "metadata": {}, "outputs": [ @@ -82,11 +83,11 @@ " \n", " \n", " \n", - " 2025-12-08T18:55:09.465661\n", + " 2025-12-13T00:24:30.608098\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.10.7, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -118,16 +119,16 @@ " \n", " \n", + "\" clip-path=\"url(#pe300d1a3b3)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -187,11 +188,11 @@ " \n", " \n", + "\" clip-path=\"url(#pe300d1a3b3)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -233,11 +234,11 @@ " \n", " \n", + "\" clip-path=\"url(#pe300d1a3b3)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -251,11 +252,11 @@ " \n", " \n", + "\" clip-path=\"url(#pe300d1a3b3)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -269,11 +270,11 @@ " \n", " \n", + "\" clip-path=\"url(#pe300d1a3b3)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -313,16 +314,16 @@ " \n", " \n", + "\" clip-path=\"url(#pe300d1a3b3)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -336,11 +337,11 @@ " \n", " \n", + "\" clip-path=\"url(#pe300d1a3b3)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -381,11 +382,11 @@ " \n", " \n", + "\" clip-path=\"url(#pe300d1a3b3)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -421,11 +422,11 @@ " \n", " \n", + "\" clip-path=\"url(#pe300d1a3b3)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -472,11 +473,11 @@ " \n", " \n", + "\" clip-path=\"url(#pe300d1a3b3)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -532,11 +533,11 @@ " \n", " \n", + "\" clip-path=\"url(#pe300d1a3b3)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -663,7 +664,7 @@ "L 231.879215 17.747588 \n", "L 233.299578 13.751881 \n", "L 233.299578 13.751881 \n", - "\" clip-path=\"url(#pe4a52bddc9)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n", + "\" clip-path=\"url(#pe300d1a3b3)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pe300d1a3b3)\" style=\"fill: none; stroke: #ff7f0e; stroke-width: 1.5; stroke-linecap: square\"/>\n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -728,7 +729,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -745,7 +746,7 @@ "source": [ "def show_trace(results, f):\n", " n = max(abs(min(results)), abs(max(results)))\n", - " f_line = d2l.arange(-n, n, 0.01)\n", + " f_line = mint.arange(-n, n, 0.01)\n", " d2l.set_figsize()\n", " d2l.plot([f_line, results], [[f(x) for x in f_line], [\n", " f(x) for x in results]], 'x', 'f(x)', fmts=['-', '-o'])\n", @@ -763,7 +764,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "id": "0649400b", "metadata": {}, "outputs": [ @@ -785,11 +786,11 @@ " \n", " \n", " \n", - " 2025-12-08T18:55:11.799913\n", + " 2025-12-13T00:24:31.279066\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.10.7, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -821,16 +822,16 @@ " \n", " \n", + "\" clip-path=\"url(#p8611aef481)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -890,11 +891,11 @@ " \n", " \n", + "\" clip-path=\"url(#p8611aef481)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -936,11 +937,11 @@ " \n", " \n", + "\" clip-path=\"url(#p8611aef481)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -954,11 +955,11 @@ " \n", " \n", + "\" clip-path=\"url(#p8611aef481)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -972,11 +973,11 @@ " \n", " \n", + "\" clip-path=\"url(#p8611aef481)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1016,16 +1017,16 @@ " \n", " \n", + "\" clip-path=\"url(#p8611aef481)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1039,11 +1040,11 @@ " \n", " \n", + "\" clip-path=\"url(#p8611aef481)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1084,11 +1085,11 @@ " \n", " \n", + "\" clip-path=\"url(#p8611aef481)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1124,11 +1125,11 @@ " \n", " \n", + "\" clip-path=\"url(#p8611aef481)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1175,11 +1176,11 @@ " \n", " \n", + "\" clip-path=\"url(#p8611aef481)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1235,11 +1236,11 @@ " \n", " \n", + "\" clip-path=\"url(#p8611aef481)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1366,7 +1367,7 @@ "L 231.879215 17.747588 \n", "L 233.299578 13.751881 \n", "L 233.299578 13.751881 \n", - "\" clip-path=\"url(#p16cd1ec465)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n", + "\" clip-path=\"url(#p8611aef481)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p8611aef481)\" style=\"fill: none; stroke: #ff7f0e; stroke-width: 1.5; stroke-linecap: square\"/>\n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1431,7 +1432,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1451,7 +1452,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "id": "17830037", "metadata": {}, "outputs": [ @@ -1473,11 +1474,11 @@ " \n", " \n", " \n", - " 2025-12-08T18:55:16.627889\n", + " 2025-12-13T00:24:34.385328\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.10.7, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -1509,16 +1510,16 @@ " \n", " \n", + "\" clip-path=\"url(#p87fd25f33c)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1589,11 +1590,11 @@ " \n", " \n", + "\" clip-path=\"url(#p87fd25f33c)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1635,11 +1636,11 @@ " \n", " \n", + "\" clip-path=\"url(#p87fd25f33c)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1653,11 +1654,11 @@ " \n", " \n", + "\" clip-path=\"url(#p87fd25f33c)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1672,11 +1673,11 @@ " \n", " \n", + "\" clip-path=\"url(#p87fd25f33c)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1716,16 +1717,16 @@ " \n", " \n", + "\" clip-path=\"url(#p87fd25f33c)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1739,11 +1740,11 @@ " \n", " \n", + "\" clip-path=\"url(#p87fd25f33c)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1776,11 +1777,11 @@ " \n", " \n", + "\" clip-path=\"url(#p87fd25f33c)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1797,11 +1798,11 @@ " \n", " \n", + "\" clip-path=\"url(#p87fd25f33c)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1852,11 +1853,11 @@ " \n", " \n", + "\" clip-path=\"url(#p87fd25f33c)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2005,7 +2006,7 @@ "L 238.252988 20.678974 \n", "L 239.744062 16.48212 \n", "L 239.744062 16.48212 \n", - "\" clip-path=\"url(#pd4fba787b0)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n", + "\" clip-path=\"url(#p87fd25f33c)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p87fd25f33c)\" style=\"fill: none; stroke: #ff7f0e; stroke-width: 1.5; stroke-linecap: square\"/>\n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -2070,7 +2071,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2098,7 +2099,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "id": "69b4bad2", "metadata": {}, "outputs": [ @@ -2120,11 +2121,11 @@ " \n", " \n", " \n", - " 2025-12-08T18:55:19.040572\n", + " 2025-12-13T00:24:35.202784\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.10.7, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -2156,16 +2157,16 @@ " \n", " \n", + "\" clip-path=\"url(#p119f7e4b2e)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2225,11 +2226,11 @@ " \n", " \n", + "\" clip-path=\"url(#p119f7e4b2e)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2271,11 +2272,11 @@ " \n", " \n", + "\" clip-path=\"url(#p119f7e4b2e)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2289,11 +2290,11 @@ " \n", " \n", + "\" clip-path=\"url(#p119f7e4b2e)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2307,11 +2308,11 @@ " \n", " \n", + "\" clip-path=\"url(#p119f7e4b2e)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2351,16 +2352,16 @@ " \n", " \n", + "\" clip-path=\"url(#p119f7e4b2e)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2375,11 +2376,11 @@ " \n", " \n", + "\" clip-path=\"url(#p119f7e4b2e)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2393,11 +2394,11 @@ " \n", " \n", + "\" clip-path=\"url(#p119f7e4b2e)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2561,7 +2562,7 @@ "L 227.533903 83.601975 \n", "L 228.954265 76.925029 \n", "L 228.954265 76.925029 \n", - "\" clip-path=\"url(#p738167f629)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n", + "\" clip-path=\"url(#p119f7e4b2e)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p119f7e4b2e)\" style=\"fill: none; stroke: #ff7f0e; stroke-width: 1.5; stroke-linecap: square\"/>\n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -2626,7 +2627,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2644,10 +2645,10 @@ "c = d2l.tensor(0.15 * np.pi)\n", "\n", "def f(x): # 目标函数\n", - " return x * d2l.cos(c * x)\n", + " return x * mint.cos(c * x)\n", "\n", "def f_grad(x): # 目标函数的梯度\n", - " return d2l.cos(c * x) - c * x * d2l.sin(c * x)\n", + " return mint.cos(c * x) - c * x * mint.sin(c * x)\n", "\n", "show_trace(gd(2, f_grad), f)" ] @@ -2662,7 +2663,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "id": "082aa2f4", "metadata": {}, "outputs": [], @@ -2685,8 +2686,8 @@ " \"\"\"显示优化过程中2D变量的轨迹\"\"\"\n", " d2l.set_figsize()\n", " d2l.plt.plot(*zip(*results), '-o', color='#ff7f0e')\n", - " x1, x2 = d2l.meshgrid(d2l.arange(-5.5, 1.0, 0.1),\n", - " d2l.arange(-3.0, 1.0, 0.1))\n", + " x1, x2 = mint.meshgrid(mint.arange(-5.5, 1.0, 0.1),\n", + " mint.arange(-3.0, 1.0, 0.1))\n", " d2l.plt.contour(x1, x2, f(x1, x2), colors='#1f77b4')\n", " d2l.plt.xlabel('x1')\n", " d2l.plt.ylabel('x2')" @@ -2694,7 +2695,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "id": "6f173199", "metadata": {}, "outputs": [ @@ -2716,11 +2717,11 @@ " \n", " \n", " \n", - " 2025-12-08T18:55:22.915557\n", + " 2025-12-13T00:24:35.399209\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.10.7, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -2751,12 +2752,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2798,7 +2799,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2838,7 +2839,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2914,12 +2915,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2967,7 +2968,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2981,7 +2982,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2995,7 +2996,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3035,9 +3036,9 @@ "L 207.707644 39.191835 \n", "L 208.257365 39.188948 \n", "L 208.697142 39.187215 \n", - "\" clip-path=\"url(#p89888d3f33)\" style=\"fill: none; stroke: #ff7f0e; stroke-width: 1.5; stroke-linecap: square\"/>\n", + "\" clip-path=\"url(#p8e51aecfd8)\" style=\"fill: none; stroke: #ff7f0e; stroke-width: 1.5; stroke-linecap: square\"/>\n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", - " \n", - " \n", + "L 45.671872 121.906051 \n", + "L 47.611182 124.476927 \n", + "L 48.723432 125.891204 \n", + "L 50.438124 128.030769 \n", + "L 51.774991 129.633479 \n", + "L 53.434099 131.584612 \n", + "L 54.826565 133.160378 \n", + "L 56.609163 135.138463 \n", + "L 57.878125 136.495381 \n", + "L 59.974143 138.692306 \n", + "L 60.929684 139.658706 \n", + "L 63.540815 142.246157 \n", + "L 63.981244 142.667798 \n", + "L 67.032818 145.528954 \n", + "L 67.328119 145.8 \n", + "\" clip-path=\"url(#p8e51aecfd8)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3441,7 +3442,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "id": "68087a46", "metadata": {}, "outputs": [ @@ -3463,11 +3464,11 @@ " \n", " \n", " \n", - " 2025-12-08T18:55:26.748427\n", + " 2025-12-13T00:24:36.053398\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.10.7, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -3499,16 +3500,16 @@ " \n", " \n", + "\" clip-path=\"url(#p087dc9e928)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3568,11 +3569,11 @@ " \n", " \n", + "\" clip-path=\"url(#p087dc9e928)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3614,11 +3615,11 @@ " \n", " \n", + "\" clip-path=\"url(#p087dc9e928)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3632,11 +3633,11 @@ " \n", " \n", + "\" clip-path=\"url(#p087dc9e928)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3650,11 +3651,11 @@ " \n", " \n", + "\" clip-path=\"url(#p087dc9e928)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3694,16 +3695,16 @@ " \n", " \n", + "\" clip-path=\"url(#p087dc9e928)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3717,11 +3718,11 @@ " \n", " \n", + "\" clip-path=\"url(#p087dc9e928)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3762,11 +3763,11 @@ " \n", " \n", + "\" clip-path=\"url(#p087dc9e928)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3802,11 +3803,11 @@ " \n", " \n", + "\" clip-path=\"url(#p087dc9e928)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3973,7 +3974,7 @@ "L 226.226896 19.11954 \n", "L 226.937078 14.136987 \n", "L 226.937078 14.136987 \n", - "\" clip-path=\"url(#p3191f2749e)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n", + "\" clip-path=\"url(#p087dc9e928)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p087dc9e928)\" style=\"fill: none; stroke: #ff7f0e; stroke-width: 1.5; stroke-linecap: square\"/>\n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -4038,7 +4039,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4056,13 +4057,13 @@ "c = d2l.tensor(0.5)\n", "\n", "def f(x): # O目标函数\n", - " return d2l.cosh(c * x)\n", + " return mint.cosh(c * x)\n", "\n", "def f_grad(x): # 目标函数的梯度\n", - " return c * d2l.sinh(c * x)\n", + " return c * mint.sinh(c * x)\n", "\n", "def f_hess(x): # 目标函数的Hessian\n", - " return c**2 * d2l.cosh(c * x)\n", + " return c**2 * mint.cosh(c * x)\n", "\n", "def newton(eta=1):\n", " x = 10.0\n", @@ -4078,7 +4079,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 10, "id": "a2d4c26e", "metadata": {}, "outputs": [ @@ -4100,11 +4101,11 @@ " \n", " \n", " \n", - " 2025-12-08T18:55:31.466659\n", + " 2025-12-13T00:24:38.018136\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.10.7, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -4136,16 +4137,16 @@ " \n", " \n", + "\" clip-path=\"url(#p2eec673f3b)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4215,11 +4216,11 @@ " \n", " \n", + "\" clip-path=\"url(#p2eec673f3b)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4233,11 +4234,11 @@ " \n", " \n", + "\" clip-path=\"url(#p2eec673f3b)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4277,16 +4278,16 @@ " \n", " \n", + "\" clip-path=\"url(#p2eec673f3b)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4302,11 +4303,11 @@ " \n", " \n", + "\" clip-path=\"url(#p2eec673f3b)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4338,11 +4339,11 @@ " \n", " \n", + "\" clip-path=\"url(#p2eec673f3b)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4356,11 +4357,11 @@ " \n", " \n", + "\" clip-path=\"url(#p2eec673f3b)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4375,11 +4376,11 @@ " \n", " \n", + "\" clip-path=\"url(#p2eec673f3b)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4607,7 +4608,7 @@ "L 235.129946 18.80839 \n", "L 235.385562 19.833363 \n", "L 235.385562 19.833363 \n", - "\" clip-path=\"url(#p56c8c51dca)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n", + "\" clip-path=\"url(#p2eec673f3b)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p2eec673f3b)\" style=\"fill: none; stroke: #ff7f0e; stroke-width: 1.5; stroke-linecap: square\"/>\n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -4672,7 +4673,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4690,20 +4691,20 @@ "c = d2l.tensor(0.15 * np.pi)\n", "\n", "def f(x): # 目标函数\n", - " return x * d2l.cos(c * x)\n", + " return x * mint.cos(c * x)\n", "\n", "def f_grad(x): # 目标函数的梯度\n", - " return d2l.cos(c * x) - c * x * d2l.sin(c * x)\n", + " return mint.cos(c * x) - c * x * mint.sin(c * x)\n", "\n", "def f_hess(x): # 目标函数的Hessian\n", - " return - 2 * c * d2l.sin(c * x) - x * c**2 * d2l.cos(c * x)\n", + " return - 2 * c * mint.sin(c * x) - x * c**2 * mint.cos(c * x)\n", "\n", "show_trace(newton(), f)" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 11, "id": "ec273900", "metadata": {}, "outputs": [ @@ -4725,11 +4726,11 @@ " \n", " \n", " \n", - " 2025-12-08T18:55:33.835156\n", + " 2025-12-13T00:24:38.833635\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.10.7, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -4761,16 +4762,16 @@ " \n", " \n", + "\" clip-path=\"url(#pd77929b7b8)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4830,11 +4831,11 @@ " \n", " \n", + "\" clip-path=\"url(#pd77929b7b8)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4876,11 +4877,11 @@ " \n", " \n", + "\" clip-path=\"url(#pd77929b7b8)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4894,11 +4895,11 @@ " \n", " \n", + "\" clip-path=\"url(#pd77929b7b8)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4912,11 +4913,11 @@ " \n", " \n", + "\" clip-path=\"url(#pd77929b7b8)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4956,16 +4957,16 @@ " \n", " \n", + "\" clip-path=\"url(#pd77929b7b8)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4980,11 +4981,11 @@ " \n", " \n", + "\" clip-path=\"url(#pd77929b7b8)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4998,11 +4999,11 @@ " \n", " \n", + "\" clip-path=\"url(#pd77929b7b8)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5166,7 +5167,7 @@ "L 227.533903 83.601975 \n", "L 228.954265 76.925029 \n", "L 228.954265 76.925029 \n", - "\" clip-path=\"url(#p45c72b15f6)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n", + "\" clip-path=\"url(#pd77929b7b8)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pd77929b7b8)\" style=\"fill: none; stroke: #ff7f0e; stroke-width: 1.5; stroke-linecap: square\"/>\n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -5231,7 +5232,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", diff --git a/chapter_11_optimization/minibatch-sgd.ipynb b/chapter_11_optimization/minibatch-sgd.ipynb index 1be7424..edc36f8 100644 --- a/chapter_11_optimization/minibatch-sgd.ipynb +++ b/chapter_11_optimization/minibatch-sgd.ipynb @@ -18,7 +18,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "id": "f4ebd714", "metadata": {}, "outputs": [], @@ -31,11 +31,12 @@ "import mindspore\n", "from mindspore import nn\n", "import numpy as np\n", + "from mindspore import mint\n", "\n", "timer = d2l.Timer()\n", - "A = d2l.zeros((256, 256))\n", - "B = d2l.randn((256, 256))\n", - "C = d2l.randn((256, 256))" + "A = mint.zeros((256, 256))\n", + "B = mint.randn((256, 256))\n", + "C = mint.randn((256, 256))" ] }, { @@ -47,7 +48,7 @@ { "data": { "text/plain": [ - "3318.47824382782" + "21.104756355285645" ] }, "execution_count": 2, @@ -73,7 +74,7 @@ { "data": { "text/plain": [ - "32.03338050842285" + "0.06112217903137207" ] }, "execution_count": 3, @@ -99,14 +100,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "performance in Gigaflops: element 0.001, column 0.062, full 91.153\n" + "performance in Gigaflops: element 0.095, column 32.721, full 3305.204\n" ] } ], "source": [ "# 一次性计算A=BC\n", "timer.start()\n", - "A = d2l.mm(B, C)\n", + "A = mint.mm(B, C)\n", "timer.stop()\n", "\n", "# 乘法和加法作为单独的操作(在实践中融合)\n", @@ -133,14 +134,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "performance in Gigaflops: block 5.122\n" + "performance in Gigaflops: block 1257.662\n" ] } ], "source": [ "timer.start()\n", "for j in range(0, 256, 64):\n", - " A[:, j:j+64] = d2l.mm(B, C[:, j:j+64])\n", + " A[:, j:j+64] = mint.mm(B, C[:, j:j+64])\n", "timer.stop()\n", "print(f'performance in Gigaflops: block {2 / timer.times[3]:.3f}')" ] @@ -155,7 +156,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 6, "id": "5ba9cc25", "metadata": {}, "outputs": [], @@ -184,7 +185,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 7, "id": "f2c4a2aa", "metadata": {}, "outputs": [], @@ -196,7 +197,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 8, "id": "ff6911c4", "metadata": { "scrolled": true @@ -207,8 +208,8 @@ "def train_ch11(trainer_fn, states, hyperparams, data_iter,\n", " feature_dim, num_epochs=2):\n", " # 初始化模型, mindspore 张量不含梯度属性\n", - " w = mindspore.Parameter(d2l.normal(mean=0.0, stddev=0.01, shape=(feature_dim, 1)), name='w')\n", - " b = mindspore.Parameter(d2l.zeros((1)), name='b')\n", + " w = mindspore.Parameter(mint.normal(mean=0.0, std=0.01, size=(feature_dim, 1)), name='w')\n", + " b = mindspore.Parameter(mint.zeros((1)), name='b')\n", " net, loss = lambda X: d2l.linreg(X, w, b), d2l.squared_loss\n", " loss_fn = lambda x, y: loss(net(x), y).mean()\n", " grad_fn = mindspore.grad(loss_fn, None, [w, b])\n", @@ -233,7 +234,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 9, "id": "2ce35089", "metadata": {}, "outputs": [ @@ -241,7 +242,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "loss: 0.256, 0.113 sec/epoch\n" + "loss: 0.142, 1.750 sec/epoch\n" ] }, { @@ -250,16 +251,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T02:06:15.369489\n", + " 2025-12-13T00:32:33.075220\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -270,18 +271,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pa8e457e3cc)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pa8e457e3cc)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pa8e457e3cc)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pa8e457e3cc)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pa8e457e3cc)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pa8e457e3cc)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -886,27 +886,27 @@ " \n", " \n", + "\" clip-path=\"url(#pa8e457e3cc)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -985,19 +980,17 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -1012,7 +1005,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 10, "id": "b2d14587", "metadata": {}, "outputs": [ @@ -1020,7 +1013,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "loss: 0.244, 3.782 sec/epoch\n" + "loss: 0.139, 0.375 sec/epoch\n" ] }, { @@ -1029,16 +1022,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T02:14:00.306762\n", + " 2025-12-13T00:32:55.756046\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -1049,18 +1042,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p6a6fd121d1)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p6a6fd121d1)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p6a6fd121d1)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p6a6fd121d1)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p6a6fd121d1)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1562,27 +1554,27 @@ " \n", " \n", + "\" clip-path=\"url(#p6a6fd121d1)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -1671,19 +1648,17 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -1693,7 +1668,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 11, "id": "22341b89", "metadata": {}, "outputs": [ @@ -1701,7 +1676,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "loss: 0.248, 0.068 sec/epoch\n" + "loss: 0.140, 0.007 sec/epoch\n" ] }, { @@ -1710,16 +1685,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T02:14:07.140394\n", + " 2025-12-13T00:32:59.853133\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -1730,18 +1705,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p96f037af06)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p96f037af06)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p96f037af06)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p96f037af06)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p96f037af06)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -2243,27 +2217,27 @@ " \n", " \n", + "\" clip-path=\"url(#p96f037af06)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -2352,19 +2311,17 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -2374,7 +2331,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 12, "id": "d764aefa", "metadata": {}, "outputs": [ @@ -2382,7 +2339,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "loss: 0.245, 0.539 sec/epoch\n" + "loss: 0.141, 0.042 sec/epoch\n" ] }, { @@ -2391,16 +2348,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T02:15:05.858956\n", + " 2025-12-13T00:33:05.463428\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -2411,18 +2368,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pb309a862d9)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pb309a862d9)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pb309a862d9)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pb309a862d9)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pb309a862d9)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -2924,27 +2880,27 @@ " \n", " \n", + "\" clip-path=\"url(#pb309a862d9)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -3033,19 +2974,17 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -3055,7 +2994,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 13, "id": "aec27ed8", "metadata": {}, "outputs": [ @@ -3065,16 +3004,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T02:15:06.276925\n", + " 2025-12-13T00:33:05.982628\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -3085,18 +3024,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p8f6fb87bab)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p8f6fb87bab)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p8f6fb87bab)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p8f6fb87bab)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -3999,27 +3835,27 @@ " \n", " \n", " \n", - " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -4293,7 +4127,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 14, "id": "2566bdf2", "metadata": {}, "outputs": [], @@ -4335,7 +4169,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 15, "id": "352921f0", "metadata": {}, "outputs": [ @@ -4343,7 +4177,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "loss: 0.242, 0.050 sec/epoch\n" + "loss: 0.207, 0.395 sec/epoch\n" ] }, { @@ -4352,16 +4186,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T02:16:42.274828\n", + " 2025-12-13T00:33:30.273234\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -4372,18 +4206,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pfefca57924)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pfefca57924)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pfefca57924)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pfefca57924)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pfefca57924)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -4896,27 +4729,27 @@ " \n", " \n", + "\" clip-path=\"url(#pfefca57924)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -5020,19 +4853,17 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], diff --git a/chapter_11_optimization/momentum.ipynb b/chapter_11_optimization/momentum.ipynb index 667cd37..72dc691 100644 --- a/chapter_11_optimization/momentum.ipynb +++ b/chapter_11_optimization/momentum.ipynb @@ -18,7 +18,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 12, "id": "acc8a83f", "metadata": {}, "outputs": [ @@ -35,16 +35,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T02:05:20.331534\n", + " 2025-12-13T00:37:20.401103\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -55,18 +55,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -239,17 +238,17 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -333,49 +332,49 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -906,19 +892,17 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -929,6 +913,7 @@ "%matplotlib inline\n", "import mindspore\n", "from d2l import mindspore as d2l\n", + "from mindspore import mint\n", "\n", "eta = 0.4\n", "def f_2d(x1, x2):\n", @@ -958,16 +943,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T02:05:26.315910\n", + " 2025-12-13T00:36:40.175766\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -978,18 +963,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1162,34 +1146,34 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1197,52 +1181,52 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -1773,19 +1744,17 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -1821,16 +1790,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T02:05:40.007696\n", + " 2025-12-13T00:36:40.331206\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -1841,18 +1810,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2025,31 +1993,31 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2057,49 +2025,49 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -2630,19 +2585,17 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -2675,16 +2628,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T02:06:07.258690\n", + " 2025-12-13T00:36:40.480846\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -2695,18 +2648,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2879,31 +2831,31 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2911,49 +2863,49 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -3484,19 +3423,17 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -3525,16 +3462,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T02:06:07.357427\n", + " 2025-12-13T00:36:40.691309\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -3545,18 +3482,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -3862,17 +3798,17 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -4244,14 +4180,14 @@ "\" style=\"fill: #ffffff; opacity: 0.8; stroke: #cccccc; stroke-linejoin: miter\"/>\n", " \n", " \n", - " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -4403,18 +4339,18 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -4425,59 +4361,57 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -4485,7 +4419,7 @@ "d2l.set_figsize()\n", "betas = [0.95, 0.9, 0.6, 0]\n", "for beta in betas:\n", - " x = d2l.arange(40).asnumpy()\n", + " x = mint.arange(40).asnumpy()\n", " d2l.plt.plot(x, beta ** x, label=f'beta = {beta:.2f}')\n", "d2l.plt.xlabel('time')\n", "d2l.plt.legend();" @@ -4515,8 +4449,8 @@ "outputs": [], "source": [ "def init_momentum_states(feature_dim):\n", - " v_w = d2l.zeros((feature_dim, 1))\n", - " v_b = d2l.zeros(1)\n", + " v_w = mint.zeros((feature_dim, 1))\n", + " v_b = mint.zeros(1)\n", " return (v_w, v_b)\n", " \n", "def sgd_momentum(params, grads, states, hyperparams):\n", @@ -4535,7 +4469,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "loss: 0.246, 0.371 sec/epoch\n" + "loss: 0.141, 0.056 sec/epoch\n" ] }, { @@ -4544,16 +4478,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T02:06:17.110642\n", + " 2025-12-13T00:36:47.235063\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -4564,18 +4498,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p64fe56628e)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p64fe56628e)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p64fe56628e)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p64fe56628e)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p64fe56628e)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -5077,27 +5010,27 @@ " \n", " \n", + "\" clip-path=\"url(#p64fe56628e)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -5186,19 +5104,17 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -5222,7 +5138,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "loss: 0.243, 0.420 sec/epoch\n" + "loss: 0.143, 0.047 sec/epoch\n" ] }, { @@ -5231,16 +5147,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T02:06:27.877968\n", + " 2025-12-13T00:36:53.280206\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -5251,18 +5167,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p372093f664)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p372093f664)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p372093f664)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p372093f664)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p372093f664)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -5764,27 +5679,27 @@ " \n", " \n", + "\" clip-path=\"url(#p372093f664)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -5873,19 +5773,17 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -5903,7 +5801,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "loss: 0.248, 0.473 sec/epoch\n" + "loss: 0.140, 0.047 sec/epoch\n" ] }, { @@ -5912,16 +5810,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T02:06:39.917979\n", + " 2025-12-13T00:36:59.301066\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -5932,18 +5830,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pa626306c3f)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pa626306c3f)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pa626306c3f)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pa626306c3f)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pa626306c3f)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -6445,27 +6342,27 @@ " \n", " \n", + "\" clip-path=\"url(#pa626306c3f)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -6554,19 +6436,17 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -6592,7 +6472,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "loss: 0.254, 0.079 sec/epoch\n" + "loss: 0.205, 0.157 sec/epoch\n" ] }, { @@ -6601,16 +6481,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T02:06:54.117553\n", + " 2025-12-13T00:37:16.583386\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -6621,18 +6501,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p643153349c)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p643153349c)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p643153349c)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p643153349c)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p643153349c)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -7145,27 +7024,27 @@ " \n", " \n", + "\" clip-path=\"url(#p643153349c)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -7269,19 +7148,17 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -7310,16 +7187,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T02:06:54.236235\n", + " 2025-12-13T00:37:16.842026\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -7330,18 +7207,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -7691,17 +7567,17 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -7948,27 +7824,27 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -8223,7 +8097,7 @@ "eta = 0.1\n", "d2l.set_figsize((6, 4))\n", "for lam in lambdas:\n", - " t = d2l.arange(20).asnumpy()\n", + " t = mint.arange(20).asnumpy()\n", " d2l.plt.plot(t, (1 - eta * lam) ** t, label=f'lambda = {lam:.2f}')\n", "d2l.plt.xlabel('time')\n", "d2l.plt.legend();" diff --git a/chapter_11_optimization/optimization-intro.ipynb b/chapter_11_optimization/optimization-intro.ipynb index 5daebaf..3e76134 100644 --- a/chapter_11_optimization/optimization-intro.ipynb +++ b/chapter_11_optimization/optimization-intro.ipynb @@ -10,7 +10,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "id": "3fa5117d", "metadata": {}, "outputs": [], @@ -22,7 +22,8 @@ "import numpy as np\n", "import mindspore\n", "from mpl_toolkits import mplot3d\n", - "from d2l import mindspore as d2l" + "from d2l import mindspore as d2l\n", + "from mindspore import mint" ] }, { @@ -33,10 +34,10 @@ "outputs": [], "source": [ "def f(x):\n", - " return x * d2l.cos(np.pi * x)\n", + " return x * mint.cos(np.pi * x)\n", "\n", "def g(x):\n", - " return f(x) + 0.2 * d2l.cos(5 * np.pi * x)" + " return f(x) + 0.2 * mint.cos(5 * np.pi * x)" ] }, { @@ -51,16 +52,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T01:16:13.367011\n", + " 2025-12-13T00:35:02.712412\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -71,18 +72,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p0ed525311b)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p0ed525311b)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p0ed525311b)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p0ed525311b)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p0ed525311b)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -879,17 +879,17 @@ "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", - " \n", - " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -1207,16 +1205,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T01:16:13.839747\n", + " 2025-12-13T00:35:02.974101\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -1227,18 +1225,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p65298a230c)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -1658,17 +1658,17 @@ "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", - " \n", - " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -1991,16 +1989,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T01:16:14.433161\n", + " 2025-12-13T00:35:03.188423\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -2011,18 +2009,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p065d8542fc)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", - " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], "source": [ - "x = d2l.arange(-2.0, 2.0, 0.01)\n", + "x = mint.arange(-2.0, 2.0, 0.01)\n", "d2l.plot(x, [x**3], 'x', 'f(x)')\n", "annotate('saddle point', (0, -0.2), (-0.52, -5.0))" ] @@ -2730,16 +2725,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T01:17:34.413817\n", + " 2025-12-13T00:35:03.361051\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -2750,101 +2745,111 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", - " \n", " \n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", - " \n", - " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3073,2284 +3073,2282 @@ " \n", " \n", " \n", - " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], "source": [ - "x, y = d2l.meshgrid(\n", - " d2l.linspace(-1.0, 1.0, 101), d2l.linspace(-1.0, 1.0, 101))\n", + "x, y = mint.meshgrid(\n", + " mint.linspace(-1.0, 1.0, 101), mint.linspace(-1.0, 1.0, 101))\n", "z = x**2 - y**2\n", "\n", "ax = d2l.plt.figure().add_subplot(111, projection='3d')\n", @@ -5384,16 +5382,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T01:17:47.433012\n", + " 2025-12-13T00:35:03.576283\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -5404,18 +5402,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pfb147593c9)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", - " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], "source": [ - "x = d2l.arange(-2.0, 5.0, 0.01)\n", - "d2l.plot(x, [d2l.tanh(x)], 'x', 'f(x)')\n", + "x = mint.arange(-2.0, 5.0, 0.01)\n", + "d2l.plot(x, [mint.tanh(x)], 'x', 'f(x)')\n", "annotate('vanishing gradient', (4, 1), (2, 0.0))" ] } diff --git a/chapter_11_optimization/rmsprop.ipynb b/chapter_11_optimization/rmsprop.ipynb index bad1969..5049af2 100644 --- a/chapter_11_optimization/rmsprop.ipynb +++ b/chapter_11_optimization/rmsprop.ipynb @@ -18,7 +18,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 6, "id": "694fde76", "metadata": {}, "outputs": [ @@ -28,16 +28,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T02:27:09.556875\n", + " 2025-12-13T00:39:27.061304\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -48,18 +48,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -365,17 +364,17 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -632,19 +631,17 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -655,11 +652,12 @@ "import math\n", "import mindspore\n", "from d2l import mindspore as d2l\n", + "from mindspore import mint\n", "\n", "d2l.set_figsize()\n", "gammas = [0.95, 0.9, 0.8, 0.7]\n", "for gamma in gammas:\n", - " x = d2l.arange(40).asnumpy()\n", + " x = mint.arange(40).asnumpy()\n", " d2l.plt.plot(x, (1-gamma) * gamma ** x, label=f'gamma = {gamma:.2f}')\n", "d2l.plt.xlabel('time');" ] @@ -691,16 +689,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T02:27:12.355789\n", + " 2025-12-13T00:38:39.856228\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -711,18 +709,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -895,17 +892,17 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -1549,19 +1533,17 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -1589,8 +1571,8 @@ "outputs": [], "source": [ "def init_rmsprop_states(feature_dim):\n", - " s_w = d2l.zeros((feature_dim, 1))\n", - " s_b = d2l.zeros(1)\n", + " s_w = mint.zeros((feature_dim, 1))\n", + " s_b = mint.zeros(1)\n", " return (s_w, s_b)\n", "\n", "def rmsprop(params, grads, states, hyperparams):\n", @@ -1610,7 +1592,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "loss: 0.244, 0.178 sec/epoch\n" + "loss: 0.140, 0.058 sec/epoch\n" ] }, { @@ -1619,16 +1601,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T02:27:19.437636\n", + " 2025-12-13T00:38:46.233220\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -1639,18 +1621,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pab91ad3afc)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pab91ad3afc)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pab91ad3afc)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pab91ad3afc)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pab91ad3afc)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -2152,27 +2133,27 @@ " \n", " \n", + "\" clip-path=\"url(#pab91ad3afc)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -2261,19 +2227,17 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -2301,7 +2265,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "loss: 0.245, 0.069 sec/epoch\n" + "loss: 0.205, 0.743 sec/epoch\n" ] }, { @@ -2310,16 +2274,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T02:27:31.462390\n", + " 2025-12-13T00:39:20.426403\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -2330,18 +2294,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p79bcd79e88)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p79bcd79e88)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p79bcd79e88)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p79bcd79e88)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p79bcd79e88)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -2854,27 +2817,27 @@ " \n", " \n", + "\" clip-path=\"url(#p79bcd79e88)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -2978,19 +2941,17 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], diff --git a/chapter_11_optimization/sgd.ipynb b/chapter_11_optimization/sgd.ipynb index fc53b0f..fbaae9c 100644 --- a/chapter_11_optimization/sgd.ipynb +++ b/chapter_11_optimization/sgd.ipynb @@ -10,7 +10,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 5, "id": "2a581246", "metadata": {}, "outputs": [], @@ -21,7 +21,8 @@ "%matplotlib inline\n", "import math\n", "import mindspore\n", - "from d2l import mindspore as d2l" + "from d2l import mindspore as d2l\n", + "from mindspore import mint" ] }, { @@ -42,7 +43,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "epoch 50, x1: 0.258773, x2: 0.147647\n" + "epoch 50, x1: -0.221293, x2: 0.234049\n" ] }, { @@ -51,16 +52,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T01:31:11.555844\n", + " 2025-12-13T00:45:52.547236\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -71,18 +72,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -255,17 +255,17 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", - " \n", - " \n", - " \n", + " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\" clip-path=\"url(#p61201abcbf)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -803,19 +795,17 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -829,10 +819,10 @@ "def sgd(x1, x2, s1, s2, f_grad):\n", " g1, g2 = f_grad(x1, x2)\n", " # 模拟有噪声的梯度\n", - " g1 += d2l.normal((1,), 0.0, 1.)\n", - " g2 += d2l.normal((1,), 0.0, 1.)\n", + " g1 += mint.normal(0.0, 1.0, ())\n", + " g2 += mint.normal(0.0, 1.0, ())\n", " eta_t = eta * lr()\n", - " return (x1 - eta_t * g1[0], x2 - eta_t * g2[0], 0, 0)\n", + " return (x1 - eta_t * g1, x2 - eta_t * g2, 0, 0)\n", "\n", "\n", "def constant_lr():\n", @@ -861,7 +851,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "epoch 1000, x1: -0.831556, x2: -0.093116\n" + "epoch 1000, x1: -0.867394, x2: -0.036720\n" ] }, { @@ -870,16 +860,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T01:31:24.070889\n", + " 2025-12-13T00:45:53.756111\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -890,18 +880,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1074,17 +1063,17 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", - " \n", - " \n", - " \n", + " \n", + "\" clip-path=\"url(#p4bc2938cf8)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -2554,19 +2539,17 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -2592,7 +2575,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "epoch 50, x1: 0.002303, x2: -0.127476\n" + "epoch 50, x1: -0.082388, x2: -0.099709\n" ] }, { @@ -2601,16 +2584,16 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2023-03-03T01:31:49.251177\n", + " 2025-12-13T00:45:54.002171\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.5.1, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -2621,18 +2604,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2805,17 +2787,17 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", - " \n", - " \n", - " \n", + " \n", - " \n", - " \n", - " \n", + "\" clip-path=\"url(#pe392932cf7)\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5\"/>\n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -3353,19 +3327,17 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], From 60508cdcca7522a65e12e3532aadd94841bc602e Mon Sep 17 00:00:00 2001 From: Y-yyyyq <648203301@qq.com> Date: Wed, 31 Dec 2025 15:09:00 +0800 Subject: [PATCH 20/20] =?UTF-8?q?=E8=A1=A5=E9=BD=90mint=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../0_nadaraya-waston.ipynb | 3066 +++++++++-------- chapter_11_optimization/convexity.ipynb | 1545 ++++++--- 2 files changed, 2618 insertions(+), 1993 deletions(-) diff --git a/chapter_10_attention_mechanisms/0_nadaraya-waston.ipynb b/chapter_10_attention_mechanisms/0_nadaraya-waston.ipynb index 0c752e7..bb0c52d 100644 --- a/chapter_10_attention_mechanisms/0_nadaraya-waston.ipynb +++ b/chapter_10_attention_mechanisms/0_nadaraya-waston.ipynb @@ -24,7 +24,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": { "origin_pos": 2, "tab": [ @@ -35,7 +35,8 @@ "source": [ "from d2l import mindspore as d2l\n", "import mindspore\n", - "from mindspore import nn, Parameter, value_and_grad" + "from mindspore import nn, Parameter, value_and_grad\n", + "from mindspore import mint" ] }, { @@ -51,7 +52,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": { "origin_pos": 9, "tab": [ @@ -100,64 +101,64 @@ "\n", "\n", - "\n", + "\n", " \n", - " \n", + " \n", " \n", " \n", - " 2021-11-24T11:13:04.533472\n", + " 2025-12-31T15:04:12.236408\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.4.3, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p0a78d6d910)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -185,20 +186,20 @@ " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p0a78d6d910)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -219,20 +220,20 @@ " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p0a78d6d910)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -263,20 +264,20 @@ " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p0a78d6d910)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -315,20 +316,20 @@ " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p0a78d6d910)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -354,20 +355,20 @@ " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p0a78d6d910)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -399,9 +400,9 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -424,150 +425,150 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p0a78d6d910)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #ff7f0e; stroke-opacity: 0.5\"/>\n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", - " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", @@ -794,19 +795,19 @@ "L 171.58125 46.355469 \n", "Q 171.58125 48.355469 173.58125 48.355469 \n", "z\n", - "\" style=\"fill:#ffffff;opacity:0.8;stroke:#cccccc;stroke-linejoin:miter;\"/>\n", + "\" style=\"fill: #ffffff; opacity: 0.8; stroke: #cccccc; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", + "\" style=\"fill: none; stroke-dasharray: 5.55,2.4; stroke-dashoffset: 0; stroke: #bf00bf; stroke-width: 1.5\"/>\n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -1036,7 +1035,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": { "origin_pos": 19, "tab": [ @@ -1050,64 +1049,64 @@ "\n", "\n", - "\n", + "\n", " \n", - " \n", + " \n", " \n", " \n", - " 2021-11-24T11:13:04.879313\n", + " 2025-12-31T15:04:12.557082\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.4.3, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pc37bc463a7)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -1135,20 +1134,20 @@ " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pc37bc463a7)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -1169,20 +1168,20 @@ " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pc37bc463a7)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -1213,20 +1212,20 @@ " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pc37bc463a7)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -1265,20 +1264,20 @@ " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pc37bc463a7)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -1304,20 +1303,20 @@ " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pc37bc463a7)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -1349,9 +1348,9 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -1374,150 +1373,150 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pc37bc463a7)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #ff7f0e; stroke-opacity: 0.5\"/>\n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", - " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", @@ -1744,19 +1743,19 @@ "L 171.58125 46.355469 \n", "Q 171.58125 48.355469 173.58125 48.355469 \n", "z\n", - "\" style=\"fill:#ffffff;opacity:0.8;stroke:#cccccc;stroke-linejoin:miter;\"/>\n", + "\" style=\"fill: #ffffff; opacity: 0.8; stroke: #cccccc; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", + "\" style=\"fill: none; stroke-dasharray: 5.55,2.4; stroke-dashoffset: 0; stroke: #bf00bf; stroke-width: 1.5\"/>\n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -2002,32 +1999,32 @@ "\n", "\n", - "\n", + "\n", " \n", - " \n", + " \n", " \n", " \n", - " 2021-11-24T11:13:05.178476\n", + " 2025-12-31T15:04:12.802874\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.4.3, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", @@ -2036,29 +2033,29 @@ "L 152.203125 9.883219 \n", "L 40.603125 9.883219 \n", "z\n", - "\" style=\"fill:#ffffff;\"/>\n", + "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -2087,14 +2084,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", - " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -2513,17 +2510,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2531,14 +2528,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -2836,7 +2848,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": { "origin_pos": 27, "tab": [ @@ -2874,7 +2886,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": { "origin_pos": 31, "tab": [ @@ -2914,7 +2926,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": { "origin_pos": 35, "tab": [ @@ -2951,7 +2963,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "metadata": { "origin_pos": 39, "tab": [ @@ -2985,7 +2997,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 11, "metadata": { "origin_pos": 43, "tab": [ @@ -2999,64 +3011,64 @@ "\n", "\n", - "\n", + "\n", " \n", - " \n", + " \n", " \n", " \n", - " 2021-11-24T11:13:07.493513\n", + " 2025-12-31T15:04:30.815215\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.4.3, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -3077,20 +3089,20 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -3121,20 +3133,20 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -3173,20 +3185,20 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -3212,20 +3224,20 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -3257,9 +3269,9 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -3671,7 +3708,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 12, "metadata": { "origin_pos": 47, "tab": [ @@ -3685,64 +3722,64 @@ "\n", "\n", - "\n", + "\n", " \n", - " \n", + " \n", " \n", " \n", - " 2021-11-24T11:13:07.961575\n", + " 2025-12-31T15:04:31.046588\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.4.3, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p9684c78be4)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -3770,20 +3807,20 @@ " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p9684c78be4)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -3804,20 +3841,20 @@ " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p9684c78be4)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -3848,20 +3885,20 @@ " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p9684c78be4)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -3900,20 +3937,20 @@ " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p9684c78be4)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -3939,20 +3976,20 @@ " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p9684c78be4)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -3984,9 +4021,9 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -4009,150 +4046,150 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p9684c78be4)\" style=\"fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square\"/>\n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #ff7f0e; stroke-opacity: 0.5\"/>\n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", - " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", @@ -4379,19 +4416,19 @@ "L 171.58125 46.355469 \n", "Q 171.58125 48.355469 173.58125 48.355469 \n", "z\n", - "\" style=\"fill:#ffffff;opacity:0.8;stroke:#cccccc;stroke-linejoin:miter;\"/>\n", + "\" style=\"fill: #ffffff; opacity: 0.8; stroke: #cccccc; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #1f77b4; stroke-width: 1.5; stroke-linecap: square\"/>\n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", + "\" style=\"fill: none; stroke-dasharray: 5.55,2.4; stroke-dashoffset: 0; stroke: #bf00bf; stroke-width: 1.5\"/>\n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -4620,7 +4655,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 13, "metadata": { "origin_pos": 51, "tab": [ @@ -4634,32 +4669,32 @@ "\n", "\n", - "\n", + "\n", " \n", - " \n", + " \n", " \n", " \n", - " 2021-11-24T11:13:08.245674\n", + " 2025-12-31T15:04:31.297576\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.4.3, https://matplotlib.org/\n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", " \n", @@ -4668,29 +4703,29 @@ "L 152.203125 9.883219 \n", "L 40.603125 9.883219 \n", "z\n", - "\" style=\"fill:#ffffff;\"/>\n", + "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", " \n", @@ -4719,14 +4754,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", - " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -5145,17 +5180,17 @@ " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5163,14 +5198,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", + "\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + "\" transform=\"scale(0.015625)\"/>\n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + "M 1403 2484 \n", + "Q 997 2584 770 2862 \n", + "Q 544 3141 544 3541 \n", + "Q 544 4100 942 4425 \n", + "Q 1341 4750 2034 4750 \n", + "Q 2731 4750 3128 4425 \n", + "Q 3525 4100 3525 3541 \n", + "Q 3525 3141 3298 2862 \n", + "Q 3072 2584 2669 2484 \n", + "Q 3125 2378 3379 2068 \n", + "Q 3634 1759 3634 1313 \n", + "Q 3634 634 3220 271 \n", + "Q 2806 -91 2034 -91 \n", + "Q 1263 -91 848 271 \n", + "Q 434 634 434 1313 \n", + "Q 434 1759 690 2068 \n", + "Q 947 2378 1403 2484 \n", + "z\n", + "M 1172 3481 \n", + "Q 1172 3119 1398 2916 \n", + "Q 1625 2713 2034 2713 \n", + "Q 2441 2713 2670 2916 \n", + "Q 2900 3119 2900 3481 \n", + "Q 2900 3844 2670 4047 \n", + "Q 2441 4250 2034 4250 \n", + "Q 1625 4250 1398 4047 \n", + "Q 1172 3844 1172 3481 \n", + "z\n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -5503,9 +5567,9 @@ "metadata": { "celltoolbar": "Slideshow", "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3.10", "language": "python", - "name": "python3" + "name": "py310" }, "language_info": { "codemirror_mode": { @@ -5517,7 +5581,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.5" + "version": "3.10.14" }, "rise": { "autolaunch": true, diff --git a/chapter_11_optimization/convexity.ipynb b/chapter_11_optimization/convexity.ipynb index 4d6bacc..861243d 100644 --- a/chapter_11_optimization/convexity.ipynb +++ b/chapter_11_optimization/convexity.ipynb @@ -10,26 +10,10 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "id": "81ce8052", "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[WARNING] CORE(79494,ffff96252640,python):2025-12-13-00:19:32.843.856 [mindspore/core/utils/ms_context.cc:533] GetJitLevel] Set jit level to O2 for rank table startup method.\n", - "/usr/local/python3.10.14/lib/python3.10/site-packages/numpy/core/getlimits.py:549: UserWarning: The value of the smallest subnormal for type is zero.\n", - " setattr(self, word, getattr(machar, word).flat[0])\n", - "/usr/local/python3.10.14/lib/python3.10/site-packages/numpy/core/getlimits.py:89: UserWarning: The value of the smallest subnormal for type is zero.\n", - " return self._float_to_str(self.smallest_subnormal)\n", - "/usr/local/python3.10.14/lib/python3.10/site-packages/numpy/core/getlimits.py:549: UserWarning: The value of the smallest subnormal for type is zero.\n", - " setattr(self, word, getattr(machar, word).flat[0])\n", - "/usr/local/python3.10.14/lib/python3.10/site-packages/numpy/core/getlimits.py:89: UserWarning: The value of the smallest subnormal for type is zero.\n", - " return self._float_to_str(self.smallest_subnormal)\n" - ] - } - ], + "outputs": [], "source": [ "import sys\n", "sys.path.append('..')\n", @@ -38,7 +22,8 @@ "import numpy as np\n", "import mindspore\n", "from mpl_toolkits import mplot3d\n", - "from d2l import mindspore as d2l" + "from d2l import mindspore as d2l\n", + "from mindspore import mint" ] }, { @@ -63,30 +48,18 @@ "id": "3fd8dd8d", "metadata": {}, "outputs": [ - { - "ename": "NameError", - "evalue": "name 'mint' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[2], line 9\u001b[0m\n\u001b[1;32m 7\u001b[0m _, axes \u001b[38;5;241m=\u001b[39m d2l\u001b[38;5;241m.\u001b[39mplt\u001b[38;5;241m.\u001b[39msubplots(\u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m3\u001b[39m, figsize\u001b[38;5;241m=\u001b[39m(\u001b[38;5;241m9\u001b[39m, \u001b[38;5;241m3\u001b[39m))\n\u001b[1;32m 8\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m ax, func \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mzip\u001b[39m(axes, [f, g, h]):\n\u001b[0;32m----> 9\u001b[0m d2l\u001b[38;5;241m.\u001b[39mplot([x, segment], [\u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[43mx\u001b[49m\u001b[43m)\u001b[49m, func(segment)], axes\u001b[38;5;241m=\u001b[39max)\n", - "Cell \u001b[0;32mIn[2], line 2\u001b[0m, in \u001b[0;36m\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 1\u001b[0m f \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mlambda\u001b[39;00m x: \u001b[38;5;241m0.5\u001b[39m \u001b[38;5;241m*\u001b[39m x\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m2\u001b[39m \u001b[38;5;66;03m# 凸函数\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m g \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mlambda\u001b[39;00m x: \u001b[43mmint\u001b[49m\u001b[38;5;241m.\u001b[39mcos(np\u001b[38;5;241m.\u001b[39mpi \u001b[38;5;241m*\u001b[39m x) \u001b[38;5;66;03m# 非凸函数\u001b[39;00m\n\u001b[1;32m 3\u001b[0m h \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mlambda\u001b[39;00m x: mint\u001b[38;5;241m.\u001b[39mexp(\u001b[38;5;241m0.5\u001b[39m \u001b[38;5;241m*\u001b[39m x) \u001b[38;5;66;03m# 凸函数\u001b[39;00m\n\u001b[1;32m 5\u001b[0m x, segment \u001b[38;5;241m=\u001b[39m d2l\u001b[38;5;241m.\u001b[39marange(\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m2\u001b[39m, \u001b[38;5;241m2\u001b[39m, \u001b[38;5;241m0.01\u001b[39m), d2l\u001b[38;5;241m.\u001b[39mtensor([\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1.5\u001b[39m, \u001b[38;5;241m1\u001b[39m])\n", - "\u001b[0;31mNameError\u001b[0m: name 'mint' is not defined" - ] - }, { "data": { "image/svg+xml": [ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2025-12-13T00:19:52.592175\n", + " 2025-12-31T15:06:37.933926\n", " image/svg+xml\n", " \n", " \n", @@ -101,42 +74,42 @@ " \n", " \n", " \n", - " \n", " \n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -238,23 +211,23 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -375,18 +348,18 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -395,369 +368,250 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -765,235 +619,370 @@ " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "\n" @@ -1036,10 +1025,582 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "id": "788c1b32", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2025-12-31T15:06:38.194270\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.10.8, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "f = lambda x: (x - 1) ** 2\n", "d2l.set_figsize()\n",