diff --git a/chapter_04_multilayer-perceptrons/0_mlp.ipynb b/chapter_04_multilayer-perceptrons/0_mlp.ipynb index 94e4e16..b462633 100644 --- a/chapter_04_multilayer-perceptrons/0_mlp.ipynb +++ b/chapter_04_multilayer-perceptrons/0_mlp.ipynb @@ -10,22 +10,23 @@ "source": [ "# 多层感知机\n", "\n", - "简要介绍一些常见的激活函数" + "#简要介绍一些常见的激活函数" ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "import sys\n", - "sys.path.append('..')" + "sys.path.append('..')\n", + "\n" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 6, "metadata": { "origin_pos": 2, "tab": [ @@ -36,7 +37,8 @@ "source": [ "%matplotlib inline\n", "from d2l import mindspore as d2l\n", - "import mindspore" + "import mindspore\n", + "import mindspore as ms" ] }, { @@ -52,7 +54,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 7, "metadata": { "origin_pos": 6, "tab": [ @@ -66,71 +68,71 @@ "\n", "\n", - "\n", + "\n", " \n", - " \n", + " \n", " \n", " \n", - " 2021-11-03T08:19:45.705887\n", + " 2026-01-08T06:28:14.865210\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(#pd3610caf64)\" 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(#pd3610caf64)\" 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(#pd3610caf64)\" 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(#pd3610caf64)\" 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(#pd3610caf64)\" 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,81 +356,81 @@ " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pd3610caf64)\" 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(#pd3610caf64)\" 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(#pd3610caf64)\" 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(#pd3610caf64)\" 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", @@ -451,104 +453,104 @@ " \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", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \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", + "\" 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" } ], @@ -710,7 +710,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 8, "metadata": { "origin_pos": 10, "tab": [ @@ -718,84 +718,77 @@ ] }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[WARNING] OPTIMIZER(3693371,7fc3754eb740,python):2021-11-03-08:19:45.768.547 [mindspore/ccsrc/frontend/optimizer/ad/dfunctor.cc:803] GetPrimalUser] J operation has no relevant primal call in the same graph. Func graph: 1_after_grad.2, J user: 1_after_grad.2:relu{[0]: 3, [1]: args0}\n" - ] - }, { "data": { "image/svg+xml": [ "\n", "\n", - "\n", + "\n", " \n", - " \n", + " \n", " \n", " \n", - " 2021-11-03T08:19:45.942588\n", + " 2026-01-08T06:28:17.106665\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(#pede72ef734)\" 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(#pede72ef734)\" 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(#pede72ef734)\" 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(#pede72ef734)\" 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(#pede72ef734)\" 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", @@ -1019,81 +1012,81 @@ " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pede72ef734)\" 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(#pede72ef734)\" 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(#pede72ef734)\" 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(#pede72ef734)\" 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", @@ -1116,134 +1109,134 @@ " \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", " \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", + "\" transform=\"scale(0.015625)\"/>\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", + "\" 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" } ], "source": [ - "grad_fn = mindspore.grad(d2l.relu, (0))\n", + "grad_fn = ms.grad(d2l.relu, (0))\n", "x_grad = grad_fn(x)\n", "d2l.plot(x.asnumpy(), x_grad.asnumpy(), 'x', 'grad of relu', figsize=(5, 2.5))" ] @@ -1557,7 +1548,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 9, "metadata": { "origin_pos": 14, "tab": [ @@ -1571,71 +1562,71 @@ "\n", "\n", - "\n", + "\n", " \n", - " \n", + " \n", " \n", " \n", - " 2021-11-03T08:19:46.131014\n", + " 2026-01-08T06:28:18.660612\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(#p9affd85832)\" 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(#p9affd85832)\" 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(#p9affd85832)\" 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(#p9affd85832)\" 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(#p9affd85832)\" 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", @@ -1859,81 +1850,81 @@ " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p9affd85832)\" 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(#p9affd85832)\" 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(#p9affd85832)\" 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(#p9affd85832)\" 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", @@ -1956,134 +1947,134 @@ " \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", " \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", + "\" 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", + "\" 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" } ], "source": [ "y = d2l.sigmoid(x)\n", - "d2l.plot(x.asnumpy(), y.asnumpy(), 'x', 'sigmoid(x)', figsize=(5, 2.5))" + "d2l.plot(x.asnumpy(), y.asnumpy(), 'x', 'sigmoid(x)', figsize=(5, 2.5))\n" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 10, "metadata": { "origin_pos": 18, "tab": [ @@ -2407,84 +2396,77 @@ ] }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[WARNING] OPTIMIZER(3693371,7fc3754eb740,python):2021-11-03-08:19:46.182.551 [mindspore/ccsrc/frontend/optimizer/ad/dfunctor.cc:803] GetPrimalUser] J operation has no relevant primal call in the same graph. Func graph: 14_after_grad.8, J user: 14_after_grad.8:sigmoid{[0]: 9, [1]: args0}\n" - ] - }, { "data": { "image/svg+xml": [ "\n", "\n", - "\n", + "\n", " \n", - " \n", + " \n", " \n", " \n", - " 2021-11-03T08:19:46.332496\n", + " 2026-01-08T06:28:20.126156\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(#pd17cc2bb6e)\" 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(#pd17cc2bb6e)\" 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(#pd17cc2bb6e)\" 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(#pd17cc2bb6e)\" 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(#pd17cc2bb6e)\" 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", @@ -2708,81 +2690,81 @@ " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pd17cc2bb6e)\" 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(#pd17cc2bb6e)\" 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(#pd17cc2bb6e)\" 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(#pd17cc2bb6e)\" 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", @@ -2805,55 +2787,55 @@ " \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", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \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", + "\" 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", + "\" 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" } ], "source": [ "grad_fn = mindspore.grad(d2l.sigmoid, (0))\n", "x_grad = grad_fn(x)\n", - "d2l.plot(x.asnumpy(), x_grad.asnumpy(), 'x', 'grad of sigmoid', figsize=(5, 2.5))" + "d2l.plot(x.asnumpy(), x_grad.asnumpy(), 'x', 'grad of sigmoid', figsize=(5, 2.5))\n", + "\n" ] }, { @@ -3366,7 +3347,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": { "origin_pos": 22, "tab": [ @@ -3380,71 +3361,71 @@ "\n", "\n", - "\n", + "\n", " \n", - " \n", + " \n", " \n", " \n", - " 2021-11-03T08:19:46.495705\n", + " 2026-01-08T06:28:21.433217\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(#pbd5ea6b0cd)\" 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(#pbd5ea6b0cd)\" 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(#pbd5ea6b0cd)\" 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(#pbd5ea6b0cd)\" 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(#pbd5ea6b0cd)\" 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", @@ -3668,81 +3649,81 @@ " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pbd5ea6b0cd)\" 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(#pbd5ea6b0cd)\" 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(#pbd5ea6b0cd)\" 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(#pbd5ea6b0cd)\" 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", @@ -3765,25 +3746,25 @@ " \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", + "\" 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", + "\" 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", + "\" 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" } ], "source": [ "y = d2l.tanh(x)\n", - "d2l.plot(x.asnumpy(), y.asnumpy(), 'x', 'tanh(x)', figsize=(5, 2.5))" + "d2l.plot(x.asnumpy(), y.asnumpy(), 'x', 'tanh(x)', figsize=(5, 2.5))\n" ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": { "origin_pos": 26, - "tab": [ - "pytorch" - ], "pycharm": { "name": "#%%\n" - } + }, + "tab": [ + "pytorch" + ] }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[WARNING] OPTIMIZER(3693371,7fc3754eb740,python):2021-11-03-08:19:46.536.717 [mindspore/ccsrc/frontend/optimizer/ad/dfunctor.cc:803] GetPrimalUser] J operation has no relevant primal call in the same graph. Func graph: 27_after_grad.14, J user: 27_after_grad.14:tanh{[0]: 15, [1]: args0}\n" - ] - }, { "data": { "image/svg+xml": [ "\n", "\n", - "\n", + "\n", " \n", - " \n", + " \n", " \n", " \n", - " 2021-11-03T08:19:46.715028\n", + " 2026-01-08T06:28:23.192601\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(#pe8a2d96f70)\" 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(#pe8a2d96f70)\" 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(#pe8a2d96f70)\" 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(#pe8a2d96f70)\" 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(#pe8a2d96f70)\" 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", @@ -4462,81 +4434,81 @@ " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pe8a2d96f70)\" 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(#pe8a2d96f70)\" 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(#pe8a2d96f70)\" 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(#pe8a2d96f70)\" 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", @@ -4559,134 +4531,134 @@ " \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", " \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", + "\" transform=\"scale(0.015625)\"/>\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", + "\" 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" } ], @@ -5053,9 +5023,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": { @@ -5067,7 +5037,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.5" + "version": "3.10.14" }, "rise": { "autolaunch": true, @@ -5078,4 +5048,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} \ No newline at end of file +} diff --git a/chapter_04_multilayer-perceptrons/1_mlp-scratch.ipynb b/chapter_04_multilayer-perceptrons/1_mlp-scratch.ipynb index 5d6aee4..59d2043 100644 --- a/chapter_04_multilayer-perceptrons/1_mlp-scratch.ipynb +++ b/chapter_04_multilayer-perceptrons/1_mlp-scratch.ipynb @@ -24,13 +24,8 @@ }, { "cell_type": "code", - "execution_count": 2, - "metadata": { - "origin_pos": 4, - "tab": [ - "pytorch" - ] - }, + "execution_count": 3, + "metadata": {}, "outputs": [], "source": [ "from d2l import mindspore as d2l\n", @@ -53,9 +48,27 @@ }, { "cell_type": "code", - "execution_count": null, - "outputs": [], + "execution_count": 4, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[WARNING] DEVICE(133202,ffff935b4640,python):2025-12-14-21:06:52.566.011 [mindspore/ccsrc/plugin/ascend/res_manager/mem_manager/ascend_memory_adapter.cc:127] Initialize] Free memory size is less than half of total memory size.Device 0 Device MOC total size:31675383808 Device MOC free size:1909661696 may be other processes occupying this card, check as: ps -ef|grep python\n" + ] + } + ], "source": [ + "import mindspore as ms\n", "num_inputs, num_outputs, num_hiddens = 784, 10, 256\n", "\n", "W1 = Parameter(d2l.normal((num_inputs, num_hiddens), 0, 0.01), name='W1')\n", @@ -63,50 +76,51 @@ "W2 = Parameter(d2l.normal((num_hiddens, num_outputs), 0, 0.01), name='W2')\n", "b2 = Parameter(d2l.zeros(num_outputs), name='b2')\n", "\n", - "params = [W1, b1, W2, b2]" - ], + "params = [W1, b1, W2, b2]\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, "metadata": { "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, "pycharm": { "name": "#%%\n" } - } - }, - { - "cell_type": "code", - "execution_count": null, + }, "outputs": [], "source": [ "def relu(X):\n", " return d2l.maximum(X, 0)" - ], + ] + }, + { + "cell_type": "code", + "execution_count": 6, "metadata": { "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, "pycharm": { "name": "#%%\n" } - } - }, - { - "cell_type": "code", - "execution_count": null, + }, "outputs": [], "source": [ "def net(X):\n", " X = d2l.reshape(X, (-1, num_inputs))\n", " H = relu(d2l.matmul(X, W1) + b1)\n", " return d2l.matmul(H, W2) + b2" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } + ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 7, "metadata": { "origin_pos": 19, "tab": [ @@ -131,7 +145,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 8, "metadata": { "origin_pos": 23, "tab": [ @@ -146,7 +160,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -155,64 +169,64 @@ "\n", "\n", - "\n", + "\n", " \n", - " \n", + " \n", " \n", " \n", - " 2021-11-03T23:02:28.391323\n", + " 2025-12-14T21:09:05.060646\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.4.3, https://matplotlib.org/\n", + " Matplotlib v3.7.3, 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(#p20b3e41057)\" 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", @@ -243,20 +257,20 @@ " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p20b3e41057)\" 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", @@ -282,20 +296,20 @@ " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p20b3e41057)\" 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", @@ -332,20 +346,20 @@ " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p20b3e41057)\" 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", @@ -391,20 +405,20 @@ " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p20b3e41057)\" 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", + "\" 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", + "\" 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", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \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", + "\" 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", + "\" transform=\"scale(0.015625)\"/>\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" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], "source": [ - "d2l.train_ch3(net, train_iter, test_iter, loss, num_epochs, updater)" + "d2l.train_ch3(net, train_iter, test_iter, loss, num_epochs, updater)\n" ] }, { @@ -960,7 +972,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 10, "metadata": { "origin_pos": 26, "tab": [ @@ -974,71 +986,71 @@ "\n", "\n", - "\n", + "\n", " \n", - " \n", + " \n", " \n", " \n", - " 2021-11-03T23:02:28.719840\n", + " 2025-12-14T21:09:15.318740\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.4.3, https://matplotlib.org/\n", + " Matplotlib v3.7.3, 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", - " \n", + " \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", + "\" 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", + "\" 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", + "\" 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", + "\" 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", + "\" 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", + "\" 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", + "\" 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", + "\" 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", + "\" 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" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], "source": [ - "d2l.predict_ch3(net, test_iter)" + "d2l.predict_ch3(net, test_iter)\n" ] } ], "metadata": { "celltoolbar": "Slideshow", "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3.10", "language": "python", - "name": "python3" + "name": "py310" }, "language_info": { "codemirror_mode": { @@ -1709,7 +1719,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.5" + "version": "3.10.14" }, "rise": { "autolaunch": true, @@ -1720,4 +1730,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} \ No newline at end of file +} diff --git a/chapter_04_multilayer-perceptrons/2_mlp-concise.ipynb b/chapter_04_multilayer-perceptrons/2_mlp-concise.ipynb index ec6427c..eb87e5e 100644 --- a/chapter_04_multilayer-perceptrons/2_mlp-concise.ipynb +++ b/chapter_04_multilayer-perceptrons/2_mlp-concise.ipynb @@ -32,7 +32,23 @@ "pytorch" ] }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[WARNING] CORE(146222,ffff8892d640,python):2025-12-14-21:30:50.573.041 [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:500: 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:500: 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", "from mindspore import nn" @@ -67,26 +83,10 @@ " nn.Dense(256, 10)])" ] }, - { - "cell_type": "markdown", - "metadata": { - "slideshow": { - "slide_type": "slide" - } - }, - "source": [ - "训练过程" - ] - }, { "cell_type": "code", "execution_count": 4, - "metadata": { - "origin_pos": 12, - "tab": [ - "pytorch" - ] - }, + "metadata": {}, "outputs": [ { "data": { @@ -94,64 +94,64 @@ "\n", "\n", - "\n", + "\n", " \n", - " \n", + " \n", " \n", " \n", - " 2021-11-03T23:12:08.053714\n", + " 2025-12-14T21:32:36.494053\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.4.3, https://matplotlib.org/\n", + " Matplotlib v3.7.3, 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(#pba053d41bd)\" 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", @@ -182,20 +182,20 @@ " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pba053d41bd)\" 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", @@ -221,20 +221,20 @@ " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pba053d41bd)\" 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", @@ -271,20 +271,20 @@ " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pba053d41bd)\" 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", @@ -330,20 +330,20 @@ " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pba053d41bd)\" 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", + "\" 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", + "\" 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", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \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", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\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" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -890,14 +888,25 @@ "train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)\n", "d2l.train_ch3(net, train_iter, test_iter, loss, num_epochs, trainer)" ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "训练过程" + ] } ], "metadata": { "celltoolbar": "Slideshow", "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3.10", "language": "python", - "name": "python3" + "name": "py310" }, "language_info": { "codemirror_mode": { @@ -909,7 +918,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.5" + "version": "3.10.14" }, "rise": { "autolaunch": true, @@ -920,4 +929,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} \ No newline at end of file +} diff --git a/chapter_04_multilayer-perceptrons/3_underfit-overfit.ipynb b/chapter_04_multilayer-perceptrons/3_underfit-overfit.ipynb index 36391a4..ecf26e2 100644 --- a/chapter_04_multilayer-perceptrons/3_underfit-overfit.ipynb +++ b/chapter_04_multilayer-perceptrons/3_underfit-overfit.ipynb @@ -15,7 +15,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -25,19 +25,35 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 5, "metadata": { "origin_pos": 2, "tab": [ "pytorch" ] }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[WARNING] CORE(200193,ffffb2765640,python):2025-12-14-21:48:57.880.099 [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:500: 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:500: 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", "from mindspore import nn\n", "import numpy as np\n", - "import math" + "import math\n" ] }, { @@ -55,7 +71,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 6, "metadata": { "origin_pos": 5, "tab": [ @@ -91,7 +107,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 7, "metadata": { "origin_pos": 8, "tab": [ @@ -102,26 +118,26 @@ { "data": { "text/plain": [ - "(array([[-0.07386322],\n", - " [-0.77457266]]),\n", - " array([[ 1.00000000e+00, -7.38632199e-02, 2.72788763e-03,\n", - " -6.71635212e-05, 1.24022848e-06, -1.83214538e-08,\n", - " 2.25546929e-10, -2.37994606e-12, 2.19738099e-14,\n", - " -1.80339594e-16, 1.33204631e-18, -8.94447542e-21,\n", - " 5.50556462e-23, -3.12814408e-25, 1.65039139e-27,\n", - " -8.12688146e-30, 3.75173520e-32, -1.63008966e-34,\n", - " 6.68909283e-37, -2.60041018e-39],\n", - " [ 1.00000000e+00, -7.74572665e-01, 2.99981406e-01,\n", - " -7.74524658e-02, 1.49981407e-02, -2.32342996e-03,\n", - " 2.99944223e-04, -3.31897994e-05, 3.21348892e-06,\n", - " -2.76564520e-07, 2.14219317e-08, -1.50844025e-09,\n", - " 9.73663819e-11, -5.80133368e-12, 3.20968178e-13,\n", - " -1.65742118e-14, 8.02370712e-16, -3.65584953e-17,\n", - " 1.57317840e-18, -6.41337359e-20]]),\n", - " array([4.87012065, 2.66090351]))" + "(array([[-2.4983144 ],\n", + " [ 0.91317445]], dtype=float32),\n", + " array([[ 1.00000000e+00, -2.49831438e+00, 3.12078714e+00,\n", + " -2.59890223e+00, 1.62321866e+00, -8.11062098e-01,\n", + " 3.37714672e-01, -1.20531052e-01, 3.76405567e-02,\n", + " -1.04486598e-02, 2.61040358e-03, -5.92873490e-04,\n", + " 1.23432037e-04, -2.37209242e-05, 4.23302299e-06,\n", + " -7.05028128e-07, 1.10086361e-07, -1.61782552e-08,\n", + " 2.24546470e-09, -2.95256652e-10],\n", + " [ 1.00000000e+00, 9.13174450e-01, 4.16943818e-01,\n", + " 1.26914144e-01, 2.89736893e-02, 5.29160677e-03,\n", + " 8.05360032e-04, 1.05062034e-04, 1.19924962e-05,\n", + " 1.21680455e-06, 1.11115490e-07, 9.22434840e-09,\n", + " 7.01953273e-10, 4.93081374e-11, 3.21620963e-12,\n", + " 1.95797358e-13, 1.11748218e-14, 6.00268374e-16,\n", + " 3.04527634e-17, 1.46361513e-18]], dtype=float32),\n", + " array([-23.281649 , 5.4805365], dtype=float32))" ] }, - "execution_count": 4, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -145,7 +161,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 8, "metadata": { "origin_pos": 11, "tab": [ @@ -178,7 +194,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 9, "metadata": { "origin_pos": 14, "tab": [ @@ -222,7 +238,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 10, "metadata": { "origin_pos": 17, "tab": [ @@ -234,7 +250,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "weight: [[ 4.9893727 1.196725 -3.3842814 5.6086864]]\n" + "weight: [[ 4.525204 1.0432956 -3.219613 5.526337 ]]\n" ] }, { @@ -243,64 +259,64 @@ "\n", "\n", - "\n", + "\n", " \n", - " \n", + " \n", " \n", " \n", - " 2021-11-04T13:15:09.261985\n", + " 2025-12-14T21:50:11.175540\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.4.3, https://matplotlib.org/\n", + " Matplotlib v3.7.3, 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(#p400580b08e)\" 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", " \n", - " \n", + "\" clip-path=\"url(#p400580b08e)\" 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(#p400580b08e)\" 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(#p400580b08e)\" 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", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \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(#p400580b08e)\" 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", + "\" style=\"stroke: #000000; stroke-width: 0.6\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \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", @@ -1161,19 +1177,19 @@ "L 182.403125 46.355469 \n", "Q 182.403125 48.355469 184.403125 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", + " \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" } ], @@ -1337,7 +1351,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 11, "metadata": { "origin_pos": 19, "tab": [ @@ -1349,7 +1363,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "weight: [[3.312748 3.9232702]]\n" + "weight: [[2.5416272 4.9677815]]\n" ] }, { @@ -1358,64 +1372,64 @@ "\n", "\n", - "\n", + "\n", " \n", - " \n", + " \n", " \n", " \n", - " 2021-11-04T13:16:06.395189\n", + " 2025-12-14T21:50:47.367597\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.4.3, https://matplotlib.org/\n", + " Matplotlib v3.7.3, 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(#p34fa4ad75d)\" 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", " \n", - " \n", + "\" clip-path=\"url(#p34fa4ad75d)\" 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(#p34fa4ad75d)\" 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(#p34fa4ad75d)\" 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", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \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(#p34fa4ad75d)\" 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", + "\" style=\"stroke: #000000; stroke-width: 0.6\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \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", " \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" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -2452,7 +2464,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 12, "metadata": { "origin_pos": 21, "tab": [ @@ -2464,11 +2476,10 @@ "name": "stdout", "output_type": "stream", "text": [ - "weight: [[ 4.9616737e+00 1.2487806e+00 -3.2416661e+00 5.3349671e+00\n", - " -4.5600554e-01 1.0531688e+00 -1.4854915e-01 1.7104911e-02\n", - " -4.6477526e-02 -3.6001101e-02 -2.7045500e-02 -2.0875797e-02\n", - " -1.9044103e-02 -5.4703718e-03 -5.3084670e-03 -6.1084172e-03\n", - " 1.1557042e-02 -3.9350931e-03 -1.2609677e-02 1.2241902e-02]]\n" + "weight: [[ 4.4532 1.239359 -2.8776069 4.657332 -0.74880934 1.9726919\n", + " -0.22239473 0.38616163 -0.08403326 -0.00729548 0.19463761 -0.15791772\n", + " -0.00864829 -0.2022902 -0.07627523 0.01220069 0.06819646 0.12408196\n", + " -0.17512448 -0.12373125]]\n" ] }, { @@ -2477,64 +2488,64 @@ "\n", "\n", - "\n", + "\n", " \n", - " \n", + " \n", " \n", " \n", - " 2021-11-04T13:19:38.376700\n", + " 2025-12-14T21:52:51.711697\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.4.3, https://matplotlib.org/\n", + " Matplotlib v3.7.3, 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(#p7c1608b2ec)\" 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", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p7c1608b2ec)\" 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(#p7c1608b2ec)\" 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(#p7c1608b2ec)\" 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", + "\" clip-path=\"url(#p7c1608b2ec)\" 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(#p7c1608b2ec)\" 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", + "\" 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", + "\" 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", + "\" clip-path=\"url(#p7c1608b2ec)\" 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", + "\" style=\"stroke: #000000; stroke-width: 0.6\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \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", @@ -3562,19 +3573,19 @@ "L 182.403125 46.355469 \n", "Q 182.403125 48.355469 184.403125 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", + " \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" } ], @@ -3729,9 +3738,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": { @@ -3743,7 +3752,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.5" + "version": "3.10.14" }, "rise": { "autolaunch": true, @@ -3754,4 +3763,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} \ No newline at end of file +} diff --git a/chapter_04_multilayer-perceptrons/4_weight-decay.ipynb b/chapter_04_multilayer-perceptrons/4_weight-decay.ipynb index fa2dd72..afc6435 100644 --- a/chapter_04_multilayer-perceptrons/4_weight-decay.ipynb +++ b/chapter_04_multilayer-perceptrons/4_weight-decay.ipynb @@ -32,11 +32,27 @@ "pytorch" ] }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[WARNING] CORE(258524,ffffbb590640,python):2025-12-14-22:02:25.082.874 [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:500: 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:500: 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": [ "%matplotlib inline\n", "from d2l import mindspore as d2l\n", - "from mindspore import nn, ops, Parameter, value_and_grad\n", + "from mindspore import nn, Parameter, value_and_grad, mint\n", "from mindspore.common.initializer import Normal\n", "import numpy as np" ] @@ -75,29 +91,30 @@ }, { "cell_type": "markdown", + "metadata": {}, "source": [ "初始化模型参数" - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "def init_params():\n", " w = Parameter(d2l.normal((num_inputs, 1), 0, 1), name='w')\n", " b = Parameter(d2l.zeros(1), name='b')\n", " return [w, b]" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } + ] }, { "cell_type": "markdown", @@ -112,7 +129,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": { "origin_pos": 12, "tab": [ @@ -122,7 +139,7 @@ "outputs": [], "source": [ "def l2_penalty(w):\n", - " return ops.sum(d2l.pow(w, 2)) / 2" + " return mint.sum(d2l.pow(w, 2)) / 2" ] }, { @@ -134,7 +151,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -155,7 +172,7 @@ " # 获取梯度函数\n", " grad_fn = value_and_grad(forward_fn, None, weights=[w, b])\n", "\n", - " # 定义模型单步训练\n", + " # 定义模型单步训练 \n", " def train_one_step(X, Y):\n", " loss, grads = grad_fn(X, Y)\n", " optim(grads)\n", @@ -195,7 +212,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "w的L2范数是: 12.237418\n" + ".w的L2范数是: 14.9913225\n" ] }, { @@ -204,64 +221,64 @@ "\n", "\n", - "\n", + "\n", " \n", - " \n", + " \n", " \n", " \n", - " 2021-11-04T16:34:59.539158\n", + " 2025-12-14T22:03:04.759360\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.4.3, https://matplotlib.org/\n", + " Matplotlib v3.7.3, 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", - " \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", - " \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", + "\" 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", + "\" 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", + "\" 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", + "\" 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" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -1032,7 +1047,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "w的L2范数是: 0.38045686\n" + "w的L2范数是: 0.3492763\n" ] }, { @@ -1041,64 +1056,64 @@ "\n", "\n", - "\n", + "\n", " \n", - " \n", + " \n", " \n", " \n", - " 2021-11-04T16:35:09.341837\n", + " 2025-12-14T22:03:23.193672\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.4.3, https://matplotlib.org/\n", + " Matplotlib v3.7.3, 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", - " \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", - " \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", + "\" 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", + "\" 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", + "\" style=\"stroke: #000000; stroke-width: 0.6\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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", + "\" 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" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -2234,7 +2329,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "w的L2范数: 13.939608\n" + ".w的L2范数: 12.6534\n" ] }, { @@ -2243,64 +2338,64 @@ "\n", "\n", - "\n", + "\n", " \n", - " \n", + " \n", " \n", " \n", - " 2021-11-04T16:35:16.089860\n", + " 2025-12-14T22:03:53.033549\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.4.3, https://matplotlib.org/\n", + " Matplotlib v3.7.3, 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(#p5bd0c70554)\" 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(#p5bd0c70554)\" 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(#p5bd0c70554)\" 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(#p5bd0c70554)\" 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(#p5bd0c70554)\" 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", - " \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", + "\" 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", + "\" 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", " \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" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -3130,7 +3169,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "w的L2范数: 0.35746962\n" + "w的L2范数: 0.35079002\n" ] }, { @@ -3139,64 +3178,64 @@ "\n", "\n", - "\n", + "\n", " \n", - " \n", + " \n", " \n", " \n", - " 2021-11-04T16:35:22.422550\n", + " 2025-12-14T22:04:08.244244\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.4.3, https://matplotlib.org/\n", + " Matplotlib v3.7.3, 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", - " \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", - " \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", + "\" 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", + "\" 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", + "\" 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", + "\" 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" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -3930,9 +3990,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": { @@ -3944,7 +4004,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.5" + "version": "3.10.14" }, "rise": { "autolaunch": true, @@ -3955,4 +4015,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} \ No newline at end of file +} diff --git a/chapter_04_multilayer-perceptrons/5_dropout.ipynb b/chapter_04_multilayer-perceptrons/5_dropout.ipynb index d74e444..f1b9fb9 100644 --- a/chapter_04_multilayer-perceptrons/5_dropout.ipynb +++ b/chapter_04_multilayer-perceptrons/5_dropout.ipynb @@ -26,6 +26,32 @@ { "cell_type": "code", "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[WARNING] CORE(256543,ffff85cca640,python):2025-12-14-22:04:44.915.198 [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:500: 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:500: 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 mindspore as ms\n", + "from mindspore import context, Tensor" + ] + }, + { + "cell_type": "code", + "execution_count": 3, "metadata": { "origin_pos": 2, "tab": [ @@ -61,7 +87,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": { "origin_pos": 6, "tab": [ @@ -69,6 +95,13 @@ ] }, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[WARNING] DEVICE(256543,ffff85cca640,python):2025-12-14-22:05:08.709.413 [mindspore/ccsrc/plugin/ascend/res_manager/mem_manager/ascend_memory_adapter.cc:127] Initialize] Free memory size is less than half of total memory size.Device 0 Device MOC total size:31675383808 Device MOC free size:1885261824 may be other processes occupying this card, check as: ps -ef|grep python\n" + ] + }, { "name": "stdout", "output_type": "stream", @@ -77,19 +110,11 @@ " [ 8 9 10 11 12 13 14 15]]\n", "[[ 0 1 2 3 4 5 6 7]\n", " [ 8 9 10 11 12 13 14 15]]\n", - "[[ 0. 2. 4. 6. 0. 10. 12. 0.]\n", - " [16. 18. 20. 22. 24. 26. 28. 30.]]\n", + "[[ 0. 0. 0. 0. 8. 10. 12. 14.]\n", + " [ 0. 0. 20. 0. 24. 26. 28. 30.]]\n", "[[0 0 0 0 0 0 0 0]\n", " [0 0 0 0 0 0 0 0]]\n" ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[WARNING] KERNEL(3881698,7fc5adb0e740,python):2021-11-05-15:53:54.906.549 [mindspore/ccsrc/backend/kernel_compiler/gpu/gpu_kernel_factory.cc:96] ReducePrecision] Kernel [UniformReal] does not support int64, cast input 0 to int32.\n", - "[WARNING] PRE_ACT(3881698,7fc5adb0e740,python):2021-11-05-15:53:54.906.701 [mindspore/ccsrc/backend/optimizer/gpu/reduce_precision_fusion.cc:83] Run] Reduce precision for [UniformReal] input 0\n" - ] } ], "source": [ @@ -113,30 +138,40 @@ }, { "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [ - "num_inputs, num_outputs, num_hiddens1, num_hiddens2 = 784, 10, 256, 256" - ], + "execution_count": 5, "metadata": { "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, "pycharm": { "name": "#%%\n" } - } + }, + "outputs": [], + "source": [ + "num_inputs, num_outputs, num_hiddens1, num_hiddens2 = 784, 10, 256, 256" + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "定义模型" - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [], "source": [ "dropout1, dropout2 = 0.2, 0.5\n", @@ -166,93 +201,26 @@ " return out\n", "\n", "net = Net(num_inputs, num_outputs, num_hiddens1, num_hiddens2)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "训练和测试" - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [ - "num_epochs, lr, batch_size = 10, 0.5, 256\n", - "loss = nn.CrossEntropyLoss()\n", - "train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)\n", - "trainer = nn.SGD(net.trainable_params(), learning_rate=lr)\n", - "d2l.train_ch3(net, train_iter, test_iter, loss, num_epochs, trainer)" - ], + "execution_count": 7, "metadata": { "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, "pycharm": { "name": "#%%\n" } - } - }, - { - "cell_type": "markdown", - "source": [ - "简洁实现" - ], - "metadata": { - "collapsed": false - } - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "origin_pos": 22, - "tab": [ - "pytorch" - ] - }, - "outputs": [], - "source": [ - "net = nn.SequentialCell([\n", - " nn.Flatten(),\n", - " nn.Dense(784, 256),\n", - " nn.ReLU(),\n", - " # 在第一个全连接层之后添加一个dropout层\n", - " nn.Dropout(1 - dropout1),\n", - " nn.Dense(256, 256),\n", - " nn.ReLU(),\n", - " # 在第二个全连接层之后添加一个dropout层\n", - " nn.Dropout(1 - dropout2),\n", - " nn.Dense(256, 10)])" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "slideshow": { - "slide_type": "slide" - } - }, - "source": [ - "对模型进行训练和测试" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "origin_pos": 26, - "tab": [ - "pytorch" - ] }, "outputs": [ { @@ -261,64 +229,64 @@ "\n", "\n", - "\n", + "\n", " \n", - " \n", + " \n", " \n", " \n", - " 2021-11-05T15:54:21.448719\n", + " 2025-12-14T22:07:50.404234\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.4.3, https://matplotlib.org/\n", + " Matplotlib v3.7.3, 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(#p40f8a066f9)\" 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", @@ -349,20 +317,20 @@ " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p40f8a066f9)\" 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", @@ -388,20 +356,20 @@ " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p40f8a066f9)\" 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", @@ -438,20 +406,20 @@ " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p40f8a066f9)\" 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", @@ -497,20 +465,20 @@ " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p40f8a066f9)\" 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", + "\" 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", + "\" 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", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \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", - " \n", + " \n", - " \n", + " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\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" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "num_epochs, lr, batch_size = 10, 0.5, 256\n", + "loss = nn.CrossEntropyLoss()\n", + "train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)\n", + "trainer = nn.SGD(net.trainable_params(), learning_rate=lr)\n", + "d2l.train_ch3(net, train_iter, test_iter, loss, num_epochs, trainer)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "简洁实现" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "origin_pos": 22, + "tab": [ + "pytorch" + ] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[WARNING] ME(256543:281472926524992,MainProcess):2025-12-14-22:07:59.705.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n", + "[WARNING] ME(256543:281472926524992,MainProcess):2025-12-14-22:07:59.709.000 [mindspore/nn/layer/basic.py:174] For Dropout, this parameter `keep_prob` will be deprecated, please use `p` instead.\n" + ] + } + ], + "source": [ + "net = nn.SequentialCell([\n", + " nn.Flatten(),\n", + " nn.Dense(784, 256),\n", + " nn.ReLU(),\n", + " # 在第一个全连接层之后添加一个dropout层\n", + " nn.Dropout(1 - dropout1),\n", + " nn.Dense(256, 256),\n", + " nn.ReLU(),\n", + " # 在第二个全连接层之后添加一个dropout层\n", + " nn.Dropout(1 - dropout2),\n", + " nn.Dense(256, 10)])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "对模型进行训练和测试" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "origin_pos": 26, + "tab": [ + "pytorch" + ] + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2025-12-14T22:09:17.464287\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.7.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" + ], + "text/plain": [ + "
" + ] }, + "metadata": {}, "output_type": "display_data" } ], @@ -1058,9 +1885,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": { @@ -1072,7 +1899,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.5" + "version": "3.10.14" }, "rise": { "autolaunch": true, @@ -1083,4 +1910,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} \ No newline at end of file +} diff --git a/chapter_04_multilayer-perceptrons/6_numerical-stability-and-init.ipynb b/chapter_04_multilayer-perceptrons/6_numerical-stability-and-init.ipynb index d09dc24..f12b46a 100644 --- a/chapter_04_multilayer-perceptrons/6_numerical-stability-and-init.ipynb +++ b/chapter_04_multilayer-perceptrons/6_numerical-stability-and-init.ipynb @@ -37,7 +37,15 @@ "name": "stderr", "output_type": "stream", "text": [ - "[WARNING] OPTIMIZER(3870984,7f87f7fe4740,python):2021-11-05-00:20:32.730.325 [mindspore/ccsrc/frontend/optimizer/ad/dfunctor.cc:803] GetPrimalUser] J operation has no relevant primal call in the same graph. Func graph: 1_after_grad.2, J user: 1_after_grad.2:sigmoid{[0]: 3, [1]: args0}\n" + "[WARNING] CORE(276701,ffffb2ab9640,python):2025-12-14-22:12:39.928.448 [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:500: 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:500: 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" ] }, { @@ -46,71 +54,71 @@ "\n", "\n", - "\n", + "\n", " \n", - " \n", + " \n", " \n", " \n", - " 2021-11-05T00:20:32.906670\n", + " 2025-12-14T22:12:58.549710\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.4.3, https://matplotlib.org/\n", + " Matplotlib v3.7.3, 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(#pe6a16f6be0)\" 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", - " \n", + " \n", - " \n", + " \n", + "\" transform=\"scale(0.015625)\"/>\n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pe6a16f6be0)\" 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", + "\" clip-path=\"url(#pe6a16f6be0)\" 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", + "\" clip-path=\"url(#pe6a16f6be0)\" 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(#pe6a16f6be0)\" 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(#pe6a16f6be0)\" 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(#pe6a16f6be0)\" 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", @@ -335,65 +343,65 @@ " \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", + "\" 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", + "\" 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", + "\" 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", + "\" 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", + "\" 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", @@ -702,19 +710,19 @@ "L 35.103125 42.55625 \n", "Q 35.103125 44.55625 37.103125 44.55625 \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", - " \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", + "\" 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" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -1075,23 +1081,15 @@ "output_type": "stream", "text": [ "一个矩阵 \n", - " [[-1.3180416 0.21586044 -1.6110967 -0.6184063 ]\n", - " [ 0.36339304 -0.36989677 -0.6256188 -0.4508158 ]\n", - " [-0.12890556 0.03007882 1.1935389 -0.5326446 ]\n", - " [-0.09897626 -1.9187572 0.89836234 -1.4689225 ]]\n", + " [[-0.67514074 -1.4505129 0.05454845 0.82679534]\n", + " [ 0.2116816 -2.5333695 0.21244164 -0.2457775 ]\n", + " [ 2.3914447 0.1381906 -0.09979704 -0.7525479 ]\n", + " [-1.2397962 -1.9595107 0.14663656 -1.6705925 ]]\n", "乘以100个矩阵后\n", - " [[ 4.8074875e+24 -2.7623282e+24 -1.3187021e+24 1.2426934e+25]\n", - " [-1.4034659e+24 8.0641556e+23 3.8497296e+23 -3.6278361e+24]\n", - " [-3.0235626e+24 1.7373048e+24 8.2936814e+23 -7.8156434e+24]\n", - " [-9.1700892e+24 5.2690288e+24 2.5153709e+24 -2.3703872e+25]]\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[WARNING] KERNEL(3870984,7f87f7fe4740,python):2021-11-05-00:20:32.945.838 [mindspore/ccsrc/backend/kernel_compiler/gpu/gpu_kernel_factory.cc:96] ReducePrecision] Kernel [StandardNormal] does not support int64, cast input 0 to int32.\n", - "[WARNING] PRE_ACT(3870984,7f87f7fe4740,python):2021-11-05-00:20:32.945.901 [mindspore/ccsrc/backend/optimizer/gpu/reduce_precision_fusion.cc:83] Run] Reduce precision for [StandardNormal] input 0\n" + " [[ 1.4972391e+24 -8.5786490e+23 1.5583577e+23 7.1651355e+23]\n", + " [ 1.1968385e+23 -6.8574627e+22 1.2456946e+22 5.7275497e+22]\n", + " [-2.1055794e+24 1.2064227e+24 -2.1915303e+23 -1.0076387e+24]\n", + " [-3.9423520e+23 2.2588281e+23 -4.1032810e+22 -1.8866379e+23]]\n" ] } ], @@ -1108,9 +1106,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": { @@ -1122,7 +1120,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.5" + "version": "3.10.14" }, "rise": { "autolaunch": true, @@ -1133,4 +1131,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} \ No newline at end of file +} diff --git a/chapter_04_multilayer-perceptrons/7_kaggle-house-price.ipynb b/chapter_04_multilayer-perceptrons/7_kaggle-house-price.ipynb index a8d1133..240b43e 100644 --- a/chapter_04_multilayer-perceptrons/7_kaggle-house-price.ipynb +++ b/chapter_04_multilayer-perceptrons/7_kaggle-house-price.ipynb @@ -32,14 +32,30 @@ "pytorch" ] }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[WARNING] CORE(308750,ffff990d1640,python):2025-12-14-22:19:41.055.585 [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:500: 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:500: 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 hashlib\n", "import os\n", "import tarfile\n", "import zipfile\n", "import requests\n", - "\n", + "from mindspore import Tensor\n", "#@save\n", "DATA_HUB = dict()\n", "DATA_URL = 'http://d2l-data.s3-accelerate.amazonaws.com/'\n", @@ -123,7 +139,7 @@ "%matplotlib inline\n", "from d2l import mindspore as d2l\n", "import mindspore\n", - "from mindspore import nn, value_and_grad\n", + "from mindspore import nn, value_and_grad, mint\n", "import numpy as np\n", "import pandas as pd\n", "\n", @@ -376,12 +392,7 @@ { "cell_type": "code", "execution_count": 11, - "metadata": { - "origin_pos": 36, - "tab": [ - "pytorch" - ] - }, + "metadata": {}, "outputs": [], "source": [ "def train(net, train_features, train_labels, test_features, test_labels,\n", @@ -404,6 +415,8 @@ "\n", " # 定义模型单步训练\n", " def train_one_step(X, Y):\n", + " X = X.astype(mstype.float32)\n", + " Y = Y.astype(mstype.float32)\n", " (loss, _), grads = grad_fn(X, Y)\n", " optimizer(grads)\n", " return loss\n", @@ -411,7 +424,7 @@ " for epoch in range(num_epochs):\n", " for X, y in train_iter.create_tuple_iterator():\n", " l = train_one_step(X, y)\n", - " train_ls.append(log_rmse(net, d2l.tensor(train_features), d2l.tensor(train_labels)))\n", + " train_ls.append(log_rmse(net, d2l.tensor(train_features, dtype=mstype.float32), d2l.tensor(train_labels, dtype=mstype.float32)))\n", " if test_labels is not None:\n", " test_ls.append(log_rmse(net, d2l.tensor(test_features), d2l.tensor(test_labels)))\n", " return train_ls, test_ls" @@ -510,24 +523,67 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": { "origin_pos": 43, "tab": [ "pytorch" ] }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[WARNING] DEVICE(308750,fffdfffff120,python):2025-12-14-22:20:16.757.600 [mindspore/ccsrc/plugin/ascend/res_manager/mem_manager/ascend_memory_adapter.cc:127] Initialize] Free memory size is less than half of total memory size.Device 0 Device MOC total size:31675383808 Device MOC free size:1906348032 may be other processes occupying this card, check as: ps -ef|grep python\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fold 1, train log rmse 0.170440, valid log rmse 0.157004\n", + "fold 2, train log rmse 0.162182, valid log rmse 0.191373\n" + ] + } + ], + "source": [ + "import mindspore as ms\n", + "from mindspore import dtype as mstype\n", + "\n", + "k, num_epochs, lr, weight_decay, batch_size = 5, 100, 5, 0, 64\n", + "train_l, valid_l = k_fold(k, train_features, train_labels, num_epochs, lr,\n", + " weight_decay, batch_size)\n", + "print(f'{k}-折验证: 平均训练log rmse: {float(train_l):f}, '\n", + " f'平均验证log rmse: {float(valid_l):f}')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "提交你的Kaggle预测" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "origin_pos": 47, + "tab": [ + "pytorch" + ] + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "fold 1, train log rmse 0.169943, valid log rmse 0.156578\n", - "fold 2, train log rmse 0.162143, valid log rmse 0.190523\n", - "fold 3, train log rmse 0.163930, valid log rmse 0.168518\n", - "fold 4, train log rmse 0.167930, valid log rmse 0.154428\n", - "fold 5, train log rmse 0.163526, valid log rmse 0.182843\n", - "5-折验证: 平均训练log rmse: 0.165494, 平均验证log rmse: 0.170578\n" + "训练log rmse:0.162302\n" ] }, { @@ -536,64 +592,64 @@ "\n", "\n", - "\n", + "\n", " \n", - " \n", + " \n", " \n", " \n", - " 2021-11-06T04:13:52.555049\n", + " 2025-12-14T20:39:55.483115\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.4.3, https://matplotlib.org/\n", + " Matplotlib v3.7.3, 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(#p36782f9c82)\" 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(#p36782f9c82)\" 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(#p36782f9c82)\" 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(#p36782f9c82)\" 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(#p36782f9c82)\" 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", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", - " \n", - " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \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", + "\" 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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \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", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" ], "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "k, num_epochs, lr, weight_decay, batch_size = 5, 100, 5, 0, 64\n", - "train_l, valid_l = k_fold(k, train_features, train_labels, num_epochs, lr,\n", - " weight_decay, batch_size)\n", - "print(f'{k}-折验证: 平均训练log rmse: {float(train_l):f}, '\n", - " f'平均验证log rmse: {float(valid_l):f}')" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "slideshow": { - "slide_type": "slide" - } - }, - "source": [ - "提交你的Kaggle预测" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "origin_pos": 47, - "tab": [ - "pytorch" - ] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "train log rmse 0.162475\n" - ] - }, - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " 2021-11-06T04:14:04.101370\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" - ], - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -2451,9 +1376,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": { @@ -2465,7 +1390,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.5" + "version": "3.10.14" }, "rise": { "autolaunch": true, @@ -2476,4 +1401,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} \ No newline at end of file +} diff --git a/chapter_05_deep-learning-computation/0_model-construction.ipynb b/chapter_05_deep-learning-computation/0_model-construction.ipynb index 61f9d49..548a716 100644 --- a/chapter_05_deep-learning-computation/0_model-construction.ipynb +++ b/chapter_05_deep-learning-computation/0_model-construction.ipynb @@ -15,22 +15,25 @@ }, { "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": "code", - "execution_count": 1, + "execution_count": 2, "metadata": { "origin_pos": 2, "tab": [ @@ -38,15 +41,30 @@ ] }, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[WARNING] CORE(326787,ffff9641e640,python):2025-12-14-22:36:28.672.832 [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:500: 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:500: 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" + ] + }, { "data": { "text/plain": [ "Tensor(shape=[2, 10], dtype=Float32, value=\n", - "[[-6.79369224e-03, 7.97413464e-04, 3.23574618e-03 ... 7.16019771e-04, -1.44797785e-04, 1.57120079e-03],\n", - " [-6.07040105e-03, 5.09693520e-03, 4.14576288e-03 ... 1.12101820e-03, -4.35058493e-04, 4.35355678e-03]])" + "[[-6.29626662e-02, 1.17263123e-01, 2.36853719e-01 ... -1.18644319e-01, -6.00607768e-02, -3.54341976e-02],\n", + " [ 2.40386669e-02, 1.30358398e-01, 1.87603414e-01 ... -5.95855154e-03, -1.92452669e-01, 9.18698683e-03]])" ] }, - "execution_count": 1, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -54,7 +72,7 @@ "source": [ "from d2l import mindspore as d2l\n", "import mindspore\n", - "from mindspore import nn, ops, Tensor\n", + "from mindspore import nn, mint, Tensor #ops->mint\n", "import numpy as np\n", "\n", "net = nn.SequentialCell([nn.Dense(20, 256), nn.ReLU(), nn.Dense(256, 10)])\n", @@ -87,7 +105,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": { "origin_pos": 12, "tab": [ @@ -123,7 +141,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": { "origin_pos": 16, "tab": [ @@ -135,11 +153,11 @@ "data": { "text/plain": [ "Tensor(shape=[2, 10], dtype=Float32, value=\n", - "[[ 1.00408215e-06, -7.51196174e-04, -1.47786422e-03 ... 9.07916750e-04, 3.31065315e-03, 3.96206928e-03],\n", - " [-1.93189026e-03, -1.93725619e-03, -2.41200835e-03 ... 5.95276617e-03, 4.78746044e-03, 5.16231870e-03]])" + "[[-2.16613740e-01, 1.00081787e-02, -7.52887726e-02 ... -3.07381839e-01, -2.11595483e-02, -8.64412785e-02],\n", + " [-2.62258470e-01, 2.33387649e-02, 1.90157443e-04 ... -2.12538928e-01, -8.94006062e-03, -1.43828928e-01]])" ] }, - "execution_count": 3, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -162,7 +180,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": { "origin_pos": 26, "tab": [ @@ -174,11 +192,11 @@ "data": { "text/plain": [ "Tensor(shape=[2, 10], dtype=Float32, value=\n", - "[[ 1.56846642e-03, -4.25875094e-03, 5.70291071e-04 ... -1.61940954e-03, 2.20699748e-03, -5.04909083e-03],\n", - " [-6.69776287e-04, -4.14503831e-03, 6.94219721e-04 ... -3.46967345e-03, 5.57024789e-04, -5.33907907e-03]])" + "[[ 1.53975673e-02, 1.21631876e-01, -8.63668323e-02 ... -1.22261629e-01, 2.93108106e-01, -3.11329216e-01],\n", + " [-2.56069917e-02, 1.63210899e-01, -8.27370808e-02 ... -1.32705793e-01, 3.17860305e-01, -3.00570577e-01]])" ] }, - "execution_count": 4, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -213,25 +231,14 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": { "origin_pos": 34, "tab": [ "pytorch" ] }, - "outputs": [ - { - "data": { - "text/plain": [ - "Tensor(shape=[], dtype=Float32, value= 0.542837)" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "class FixedHiddenMLP(nn.Cell):\n", " def __init__(self):\n", @@ -254,18 +261,32 @@ }, { "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [ - "net = FixedHiddenMLP()\n", - "net(X)" - ], + "execution_count": 7, "metadata": { "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, "pycharm": { "name": "#%%\n" } - } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Tensor(shape=[], dtype=Float32, value= 0.0628106)" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "net = FixedHiddenMLP()\n", + "net(X)" + ] }, { "cell_type": "markdown", @@ -280,7 +301,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 8, "metadata": { "origin_pos": 37, "tab": [ @@ -291,10 +312,10 @@ { "data": { "text/plain": [ - "Tensor(shape=[], dtype=Float32, value= -0.0956512)" + "Tensor(shape=[], dtype=Float32, value= -0.418528)" ] }, - "execution_count": 6, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -318,9 +339,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": { @@ -332,7 +353,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.5" + "version": "3.10.14" }, "rise": { "autolaunch": true, @@ -343,4 +364,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} \ No newline at end of file +} diff --git a/chapter_05_deep-learning-computation/1_parameters.ipynb b/chapter_05_deep-learning-computation/1_parameters.ipynb index 2cc9e0e..574aa9b 100644 --- a/chapter_05_deep-learning-computation/1_parameters.ipynb +++ b/chapter_05_deep-learning-computation/1_parameters.ipynb @@ -15,22 +15,25 @@ }, { "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": "code", - "execution_count": 1, + "execution_count": 2, "metadata": { "origin_pos": 2, "tab": [ @@ -38,15 +41,32 @@ ] }, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[WARNING] ME(24901:281473633001696,MainProcess):2025-12-12-23:56:00.958.000 [mindspore/run_check/_check_version.py:409] Can not find the tbe operator implementation(need by mindspore-ascend). Please check whether the Environment Variable PYTHONPATH is set. For details, refer to the installation guidelines: https://www.mindspore.cn/install\n", + "/home/ma-user/anaconda3/envs/MindSpore/lib/python3.11/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", + "/home/ma-user/anaconda3/envs/MindSpore/lib/python3.11/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", + "/home/ma-user/anaconda3/envs/MindSpore/lib/python3.11/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", + "/home/ma-user/anaconda3/envs/MindSpore/lib/python3.11/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", + "[WARNING] CORE(24901,ffffafe8a0e0,python):2025-12-12-23:56:13.154.230 [mindspore/core/utils/ms_context.cc:537] GetJitLevel] Set jit level to O2 for rank table startup method.\n", + "[WARNING] DEVICE(24901,ffffafe8a0e0,python):2025-12-12-23:56:13.414.633 [mindspore/ccsrc/plugin/res_manager/ascend/mem_manager/ascend_memory_adapter.cc:123] Initialize] Free memory size is less than half of total memory size.Device 0 Device MOC total size:31675383808 Device MOC free size:1757679616 may be other processes occupying this card, check as: ps -ef|grep python\n" + ] + }, { "data": { "text/plain": [ "Tensor(shape=[2, 1], dtype=Float32, value=\n", - "[[-3.49030714e-04],\n", - " [-5.60830755e-04]])" + "[[-5.87999701e-01],\n", + " [-6.28293872e-01]])" ] }, - "execution_count": 1, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -73,7 +93,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": { "origin_pos": 6, "tab": [ @@ -106,7 +126,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": { "origin_pos": 10, "tab": [ @@ -118,9 +138,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "\n", + "\n", "Parameter (name=2.bias, shape=(1,), dtype=Float32, requires_grad=True)\n", - "Parameter (name=2.bias, shape=(1,), dtype=Float32, requires_grad=True)\n" + "[-0.26707265]\n" ] } ], @@ -143,7 +163,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": { "origin_pos": 17, "tab": [ @@ -167,7 +187,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": { "origin_pos": 21, "tab": [ @@ -178,10 +198,10 @@ { "data": { "text/plain": [ - "Parameter (name=2.bias, shape=(1,), dtype=Float32, requires_grad=True)" + "Tensor(shape=[1], dtype=Float32, value= [-2.67072648e-01])" ] }, - "execution_count": 5, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -203,7 +223,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "metadata": { "origin_pos": 25, "tab": [ @@ -215,11 +235,11 @@ "data": { "text/plain": [ "Tensor(shape=[2, 1], dtype=Float32, value=\n", - "[[-3.91725408e-17],\n", - " [-2.82850341e-17]])" + "[[-2.32916176e-01],\n", + " [-2.32916176e-01]])" ] }, - "execution_count": 6, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -253,7 +273,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "metadata": { "origin_pos": 29, "tab": [ @@ -265,35 +285,35 @@ "name": "stdout", "output_type": "stream", "text": [ - "SequentialCell<\n", - " (0): SequentialCell<\n", - " (0): SequentialCell<\n", - " (0): Dense\n", - " (1): ReLU<>\n", - " (2): Dense\n", - " (3): ReLU<>\n", - " >\n", - " (1): SequentialCell<\n", - " (0): Dense\n", - " (1): ReLU<>\n", - " (2): Dense\n", - " (3): ReLU<>\n", - " >\n", - " (2): SequentialCell<\n", - " (0): Dense\n", - " (1): ReLU<>\n", - " (2): Dense\n", - " (3): ReLU<>\n", - " >\n", - " (3): SequentialCell<\n", - " (0): Dense\n", - " (1): ReLU<>\n", - " (2): Dense\n", - " (3): ReLU<>\n", - " >\n", - " >\n", - " (1): Dense\n", - " >\n" + "SequentialCell(\n", + " (0): SequentialCell(\n", + " (0): SequentialCell(\n", + " (0): Dense(input_channels=4, output_channels=8, has_bias=True)\n", + " (1): ReLU()\n", + " (2): Dense(input_channels=8, output_channels=4, has_bias=True)\n", + " (3): ReLU()\n", + " )\n", + " (1): SequentialCell(\n", + " (0): Dense(input_channels=4, output_channels=8, has_bias=True)\n", + " (1): ReLU()\n", + " (2): Dense(input_channels=8, output_channels=4, has_bias=True)\n", + " (3): ReLU()\n", + " )\n", + " (2): SequentialCell(\n", + " (0): Dense(input_channels=4, output_channels=8, has_bias=True)\n", + " (1): ReLU()\n", + " (2): Dense(input_channels=8, output_channels=4, has_bias=True)\n", + " (3): ReLU()\n", + " )\n", + " (3): SequentialCell(\n", + " (0): Dense(input_channels=4, output_channels=8, has_bias=True)\n", + " (1): ReLU()\n", + " (2): Dense(input_channels=8, output_channels=4, has_bias=True)\n", + " (3): ReLU()\n", + " )\n", + " )\n", + " (1): Dense(input_channels=4, output_channels=1, has_bias=True)\n", + ")\n" ] } ], @@ -303,7 +323,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": { "origin_pos": 33, "tab": [ @@ -314,10 +334,10 @@ { "data": { "text/plain": [ - "Parameter (name=0.1.0.bias, shape=(8,), dtype=Float32, requires_grad=True)" + "Tensor(shape=[8], dtype=Float32, value= [ 2.89527867e-02, 2.29328331e-02, 3.55436355e-01, 1.04846396e-01, -2.03583434e-01, 3.80997390e-01, 2.77427226e-01, -5.64563945e-02])" ] }, - "execution_count": 8, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -328,14 +348,12 @@ }, { "cell_type": "markdown", + "metadata": {}, "source": [ "默认情况下,MindSpore会使用Normal初始化权重矩阵,\n", "偏置参数设置为0。\n", "MindSpore的`common.initializer`模块中提供了各种初始化方法。" - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "markdown", @@ -350,7 +368,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": { "origin_pos": 41, "tab": [ @@ -361,11 +379,11 @@ { "data": { "text/plain": [ - "(Tensor(shape=[4], dtype=Float32, value= [-1.20215854e-02, -1.25061749e-02, -7.52139417e-03, 1.09155132e-02]),\n", + "(Tensor(shape=[4], dtype=Float32, value= [ 4.69799712e-03, -9.98545904e-03, 6.16287021e-03, -1.65258572e-02]),\n", " Tensor(shape=[], dtype=Float32, value= 0))" ] }, - "execution_count": 9, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -380,7 +398,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": { "origin_pos": 45, "tab": [ @@ -395,7 +413,7 @@ " Tensor(shape=[], dtype=Float32, value= 0))" ] }, - "execution_count": 10, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -421,7 +439,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": { "origin_pos": 49, "tab": [ @@ -433,7 +451,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "[0.23717844 0.39029706 0.04387231 0.58519274]\n", + "[-0.7070257 -0.520665 0.31937808 -0.35800388]\n", "[42. 42. 42. 42. 42. 42. 42. 42.]\n" ] } @@ -461,7 +479,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "metadata": { "origin_pos": 56, "tab": [ @@ -473,11 +491,11 @@ "data": { "text/plain": [ "Tensor(shape=[2, 4], dtype=Float32, value=\n", - "[[ 5.15057087e+00, -0.00000000e+00, 6.03760958e+00, -8.03363037e+00],\n", - " [-5.74584198e+00, 0.00000000e+00, -0.00000000e+00, 7.52724266e+00]])" + "[[-6.20842695e+00, 9.27657318e+00, -0.00000000e+00, -9.22449112e+00],\n", + " [ 0.00000000e+00, 0.00000000e+00, 5.89274883e+00, 0.00000000e+00]])" ] }, - "execution_count": 12, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -497,7 +515,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 14, "metadata": { "origin_pos": 60, "tab": [ @@ -505,21 +523,13 @@ ] }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[WARNING] KERNEL(4095486,7fc4402bd740,python):2021-11-07-23:27:27.742.999 [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(4095486,7fc4402bd740,python):2021-11-07-23:27:27.743.111 [mindspore/ccsrc/backend/optimizer/gpu/reduce_precision_fusion.cc:83] Run] Reduce precision for [TensorScatterUpdate] input 1\n" - ] - }, { "data": { "text/plain": [ - "Tensor(shape=[4], dtype=Float32, value= [ 4.20000000e+01, 1.00000000e+00, 7.03760958e+00, -7.03363037e+00])" + "Tensor(shape=[4], dtype=Float32, value= [ 4.20000000e+01, 1.02765732e+01, 1.00000000e+00, -8.22449112e+00])" ] }, - "execution_count": 13, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -543,7 +553,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 15, "metadata": { "origin_pos": 65, "tab": [ @@ -558,14 +568,6 @@ "[ True True True True True True True True]\n", "[ True True True True True True True True]\n" ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[WARNING] KERNEL(4095486,7fc4402bd740,python):2021-11-07-23:27:27.830.726 [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(4095486,7fc4402bd740,python):2021-11-07-23:27:27.830.784 [mindspore/ccsrc/backend/optimizer/gpu/reduce_precision_fusion.cc:83] Run] Reduce precision for [TensorScatterUpdate] input 1\n" - ] } ], "source": [ @@ -590,9 +592,9 @@ "metadata": { "celltoolbar": "Slideshow", "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "MindSpore", "language": "python", - "name": "python3" + "name": "mindspore" }, "language_info": { "codemirror_mode": { @@ -604,7 +606,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.5" + "version": "3.11.10" }, "rise": { "autolaunch": true, @@ -615,4 +617,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} \ No newline at end of file +} diff --git a/chapter_05_deep-learning-computation/2_custom-layer.ipynb b/chapter_05_deep-learning-computation/2_custom-layer.ipynb index fe0564d..deefbc3 100644 --- a/chapter_05_deep-learning-computation/2_custom-layer.ipynb +++ b/chapter_05_deep-learning-computation/2_custom-layer.ipynb @@ -16,21 +16,24 @@ { "cell_type": "code", "execution_count": null, - "outputs": [], - "source": [ - "import sys\n", - "sys.path.append('..')" - ], "metadata": { "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, "pycharm": { "name": "#%%\n" } - } + }, + "outputs": [], + "source": [ + "import sys\n", + "sys.path.append('..')" + ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 3, "metadata": { "origin_pos": 6, "tab": [ @@ -44,7 +47,7 @@ "Tensor(shape=[5], dtype=Float32, value= [-2.00000000e+00, -1.00000000e+00, 0.00000000e+00, 1.00000000e+00, 2.00000000e+00])" ] }, - "execution_count": 1, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -52,7 +55,7 @@ "source": [ "import mindspore\n", "from d2l import mindspore as d2l\n", - "from mindspore import nn, Parameter\n", + "from mindspore import nn, Parameter, mint\n", "\n", "class CenteredLayer(nn.Cell):\n", " def __init__(self):\n", @@ -78,43 +81,46 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 4, "metadata": { "origin_pos": 14, "tab": [ "pytorch" ] }, + "outputs": [], + "source": [ + "net = nn.SequentialCell([nn.Dense(8, 128), CenteredLayer()])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [ { "data": { "text/plain": [ - "Tensor(shape=[], dtype=Float32, value= -1.16415e-10)" + "Tensor(shape=[], dtype=Float32, value= 0)" ] }, - "execution_count": 2, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "net = nn.SequentialCell([nn.Dense(8, 128), CenteredLayer()])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [ - "Y = net(d2l.rand((4, 8)))\n", + "Y = net(mint.rand((4, 8)))\n", "Y.mean()" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } + ] }, { "cell_type": "markdown", @@ -129,7 +135,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 6, "metadata": { "origin_pos": 23, "tab": [ @@ -140,10 +146,15 @@ { "data": { "text/plain": [ - "Parameter (name=weight, shape=(5, 3), dtype=Float32, requires_grad=True)" + "Tensor(shape=[5, 3], dtype=Float32, value=\n", + "[[ 9.87406909e-01, 3.38706285e-01, 8.91309798e-01],\n", + " [-1.74913681e+00, -7.83475712e-02, 3.60374153e-01],\n", + " [-1.48680425e+00, -5.45735776e-01, -4.59607750e-01],\n", + " [-2.99584538e-01, 2.43035603e+00, 1.62173522e+00],\n", + " [ 1.41255975e+00, 1.80880415e+00, 3.75766456e-01]])" ] }, - "execution_count": 3, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -156,7 +167,7 @@ " self.bias = Parameter(d2l.randn((units,)))\n", "\n", " def construct(self, X):\n", - " linear = d2l.matmul(X, self.weight) + self.bias\n", + " linear = mint.matmul(X, self.weight) + self.bias\n", " return d2l.relu(linear)\n", "\n", "linear = MyLinear(5, 3)\n", @@ -176,7 +187,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 7, "metadata": { "origin_pos": 27, "tab": [ @@ -188,17 +199,17 @@ "data": { "text/plain": [ "Tensor(shape=[2, 3], dtype=Float32, value=\n", - "[[ 1.32546091e+00, 3.91564280e-01, 0.00000000e+00],\n", - " [ 0.00000000e+00, 8.59286726e-01, 2.44996011e-01]])" + "[[ 1.23279285e+00, 2.53645992e+00, 2.28297472e+00],\n", + " [ 9.87509489e-01, 3.67443419e+00, 2.92784977e+00]])" ] }, - "execution_count": 4, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "linear(d2l.rand((2, 5)))" + "linear(mint.rand((2, 5)))" ] }, { @@ -214,7 +225,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 8, "metadata": { "origin_pos": 31, "tab": [ @@ -226,27 +237,27 @@ "data": { "text/plain": [ "Tensor(shape=[2, 1], dtype=Float32, value=\n", - "[[ 1.74028168e+01],\n", - " [ 7.22708797e+00]])" + "[[ 0.00000000e+00],\n", + " [ 0.00000000e+00]])" ] }, - "execution_count": 5, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "net = nn.SequentialCell([MyLinear(64, 8), MyLinear(8, 1)])\n", - "net(d2l.rand((2, 64)))" + "net(mint.rand((2, 64)))" ] } ], "metadata": { "celltoolbar": "Slideshow", "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3.10", "language": "python", - "name": "python3" + "name": "py310" }, "language_info": { "codemirror_mode": { @@ -258,7 +269,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.5" + "version": "3.10.14" }, "rise": { "autolaunch": true, @@ -269,4 +280,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} \ No newline at end of file +} diff --git a/chapter_05_deep-learning-computation/3_read-write.ipynb b/chapter_05_deep-learning-computation/3_read-write.ipynb index edd5d70..a8c2fc7 100644 --- a/chapter_05_deep-learning-computation/3_read-write.ipynb +++ b/chapter_05_deep-learning-computation/3_read-write.ipynb @@ -15,34 +15,64 @@ }, { "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": "code", - "execution_count": 1, + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import os \n", + "os.getcwd()\n", + "os.chdir('/home/ma-user/work/d2l-mindspore') #找不到目标文档d2l。加入路径。\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, "metadata": { "origin_pos": 6, "tab": [ "pytorch" ] }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[WARNING] CORE(335940,ffff8e04c640,python):2025-12-14-22:57:52.913.082 [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:500: 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:500: 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", + "from mindspore import nn, mint\n", "import mindspore\n", - "from mindspore import nn\n", - "\n", "# mindspore暂不支持对单个Tensor的存储和读取" ] }, @@ -59,7 +89,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 4, "metadata": { "origin_pos": 18, "tab": [ @@ -77,8 +107,9 @@ " def construct(self, x):\n", " return self.output(d2l.relu(self.hidden(x)))\n", "\n", + "\n", "net = MLP()\n", - "X = d2l.rand((2, 20))\n", + "X = mint.rand((2, 20))\n", "Y = net(X)" ] }, @@ -95,7 +126,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 5, "metadata": { "origin_pos": 22, "tab": [ @@ -121,7 +152,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 6, "metadata": { "origin_pos": 26, "tab": [ @@ -132,13 +163,13 @@ { "data": { "text/plain": [ - "MLP<\n", - " (hidden): Dense\n", - " (output): Dense\n", - " >" + "MLP(\n", + " (hidden): Dense(input_channels=20, output_channels=256, has_bias=True)\n", + " (output): Dense(input_channels=256, output_channels=10, has_bias=True)\n", + ")" ] }, - "execution_count": 4, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -151,7 +182,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 7, "metadata": { "origin_pos": 30, "tab": [ @@ -167,7 +198,7 @@ " [ True, True, True ... True, True, True]])" ] }, - "execution_count": 5, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -181,9 +212,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": { @@ -195,7 +226,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.5" + "version": "3.10.14" }, "rise": { "autolaunch": true, @@ -206,4 +237,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} \ No newline at end of file +} diff --git a/chapter_05_deep-learning-computation/4_use-gpu.ipynb b/chapter_05_deep-learning-computation/4_use-gpu.ipynb index ba7a928..49b2b1c 100644 --- a/chapter_05_deep-learning-computation/4_use-gpu.ipynb +++ b/chapter_05_deep-learning-computation/4_use-gpu.ipynb @@ -27,26 +27,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Sun Nov 7 23:29:29 2021 \n", - "+-----------------------------------------------------------------------------+\n", - "| NVIDIA-SMI 460.91.03 Driver Version: 460.91.03 CUDA Version: 11.2 |\n", - "|-------------------------------+----------------------+----------------------+\n", - "| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |\n", - "| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |\n", - "| | | MIG M. |\n", - "|===============================+======================+======================|\n", - "| 0 GeForce RTX 3090 Off | 00000000:65:00.0 Off | N/A |\n", - "| 49% 58C P0 41W / 350W | 0MiB / 24265MiB | 0% Default |\n", - "| | | N/A |\n", - "+-------------------------------+----------------------+----------------------+\n", - " \n", - "+-----------------------------------------------------------------------------+\n", - "| Processes: |\n", - "| GPU GI CI PID Type Process name GPU Memory |\n", - "| ID ID Usage |\n", - "|=============================================================================|\n", - "| No running processes found |\n", - "+-----------------------------------------------------------------------------+\n" + "/bin/bash: nvidia-smi: command not found\n" ] } ], @@ -56,6 +37,7 @@ }, { "cell_type": "markdown", + "metadata": {}, "source": [ ":begin_tab:`mindspore`\n", "在MindSpore中,每个张量都有一个设备(device),\n", @@ -73,10 +55,7 @@ "然后根据你的CUDA版本安装相应的PaddlePaddle的GPU版本。\n", "例如,假设你安装了CUDA11.1,你可以通过`conda install mindspore-gpu=1.9.0 cudatoolkit=11.1 -c mindspore -c conda-forge`安装支持CUDA11.1的MindSpore版本。\n", ":end_tab:" - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "markdown", @@ -105,12 +84,12 @@ "cell_type": "markdown", "metadata": { "origin_pos": 8, - "tab": [ - "pytorch" - ], "pycharm": { "name": "#%% md\n" - } + }, + "tab": [ + "pytorch" + ] }, "source": [ "MindSpore当前对于context仅在第一次设置时生效,因此本小节中对于多个GPU环境的设置以及变量计算无法实现,请等待后续版本更新支持。" @@ -120,9 +99,9 @@ "metadata": { "celltoolbar": "Slideshow", "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "MindSpore", "language": "python", - "name": "python3" + "name": "mindspore" }, "language_info": { "codemirror_mode": { @@ -134,7 +113,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.5" + "version": "3.11.10" }, "rise": { "autolaunch": true, @@ -145,4 +124,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} \ No newline at end of file +} diff --git a/chapter_06_convolutional-neural-networks/0_conv-layer.ipynb b/chapter_06_convolutional-neural-networks/0_conv-layer.ipynb index 1b11e42..d2a3a86 100644 --- a/chapter_06_convolutional-neural-networks/0_conv-layer.ipynb +++ b/chapter_06_convolutional-neural-networks/0_conv-layer.ipynb @@ -26,25 +26,52 @@ { "cell_type": "code", "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import os \n", + "os.getcwd()\n", + "os.chdir('/home/ma-user/work/d2l-mindspore') " + ] + }, + { + "cell_type": "code", + "execution_count": 3, "metadata": { "origin_pos": 3, "tab": [ "pytorch" ] }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[WARNING] CORE(342554,ffff8014e640,python):2025-12-14-23:22:50.492.829 [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:500: 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:500: 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", - "from mindspore import nn, ops, value_and_grad\n", + "from mindspore import nn, mint, value_and_grad,ops\n", "\n", "def corr2d(X, K): \n", " \"\"\"计算二维互相关运算。\"\"\"\n", " h, w = K.shape\n", - " Y = ops.zeros((X.shape[0] - h + 1, X.shape[1] - w + 1))\n", + " Y = mint.zeros((X.shape[0] - h + 1, X.shape[1] - w + 1))\n", " for i in range(Y.shape[0]):\n", " for j in range(Y.shape[1]):\n", " Y[i, j] = (X[i:i + h, j:j + w] * K).sum()\n", - " return Y" + " return Y\n" ] }, { @@ -55,12 +82,12 @@ } }, "source": [ - "验证上述二维互相关运算的输出" + "实现二维卷积层" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": { "origin_pos": 6, "tab": [ @@ -72,45 +99,28 @@ "name": "stderr", "output_type": "stream", "text": [ - "[WARNING] KERNEL(4098363,7f10a7d9c740,python):2021-11-08-00:04:34.061.088 [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(4098363,7f10a7d9c740,python):2021-11-08-00:04:34.061.167 [mindspore/ccsrc/backend/optimizer/gpu/reduce_precision_fusion.cc:83] Run] Reduce precision for [TensorScatterUpdate] input 1\n", - "[WARNING] KERNEL(4098363,7f10a7d9c740,python):2021-11-08-00:04:34.066.353 [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(4098363,7f10a7d9c740,python):2021-11-08-00:04:34.066.405 [mindspore/ccsrc/backend/optimizer/gpu/reduce_precision_fusion.cc:83] Run] Reduce precision for [TensorScatterUpdate] input 1\n" + "[WARNING] DEVICE(342554,fffe4c97f120,python):2025-12-14-23:22:56.094.421 [mindspore/ccsrc/plugin/ascend/res_manager/mem_manager/ascend_memory_adapter.cc:127] Initialize] Free memory size is less than half of total memory size.Device 0 Device MOC total size:31675383808 Device MOC free size:1904058368 may be other processes occupying this card, check as: ps -ef|grep python\n" ] - }, - { - "data": { - "text/plain": [ - "Tensor(shape=[2, 2], dtype=Float32, value=\n", - "[[ 1.90000000e+01, 2.50000000e+01],\n", - " [ 3.70000000e+01, 4.30000000e+01]])" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" } ], "source": [ "X = d2l.tensor([[0.0, 1.0, 2.0], [3.0, 4.0, 5.0], [6.0, 7.0, 8.0]])\n", "K = d2l.tensor([[0.0, 1.0], [2.0, 3.0]])\n", - "corr2d(X, K)" + "Y = corr2d(X, K)" ] }, { - "cell_type": "markdown", - "metadata": { - "slideshow": { - "slide_type": "slide" - } - }, + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], "source": [ - "实现二维卷积层" + "#验证上述二维互相关运算的输出" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 6, "metadata": { "origin_pos": 9, "tab": [ @@ -123,7 +133,7 @@ " def __init__(self, kernel_size):\n", " super().__init__()\n", " self.weight = Parameter(d2l.normal((kernel_size), 0, 1))\n", - " self.bias = Parameter(ops.zeros(1))\n", + " self.bias = Parameter(mint.zeros(1))\n", "\n", " def construct(self, x):\n", " return corr2d(x, self.weight) + self.bias" @@ -143,7 +153,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 7, "metadata": { "origin_pos": 12, "tab": [ @@ -151,14 +161,6 @@ ] }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[WARNING] KERNEL(4098363,7f10a7d9c740,python):2021-11-08-00:04:34.103.859 [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(4098363,7f10a7d9c740,python):2021-11-08-00:04:34.103.952 [mindspore/ccsrc/backend/optimizer/gpu/reduce_precision_fusion.cc:83] Run] Reduce precision for [TensorScatterUpdate] input 1\n" - ] - }, { "data": { "text/plain": [ @@ -171,7 +173,7 @@ " [ 1.00000000e+00, 1.00000000e+00, 0.00000000e+00 ... 0.00000000e+00, 1.00000000e+00, 1.00000000e+00]])" ] }, - "execution_count": 5, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -184,7 +186,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 8, "metadata": { "origin_pos": 15, "tab": [ @@ -209,7 +211,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 9, "metadata": { "origin_pos": 17, "tab": [ @@ -217,16 +219,6 @@ ] }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[WARNING] KERNEL(4098363,7f10a7d9c740,python):2021-11-08-00:04:34.125.417 [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(4098363,7f10a7d9c740,python):2021-11-08-00:04:34.125.505 [mindspore/ccsrc/backend/optimizer/gpu/reduce_precision_fusion.cc:83] Run] Reduce precision for [TensorScatterUpdate] input 1\n", - "[WARNING] KERNEL(4098363,7f10a7d9c740,python):2021-11-08-00:04:34.131.386 [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(4098363,7f10a7d9c740,python):2021-11-08-00:04:34.131.469 [mindspore/ccsrc/backend/optimizer/gpu/reduce_precision_fusion.cc:83] Run] Reduce precision for [TensorScatterUpdate] input 1\n" - ] - }, { "data": { "text/plain": [ @@ -239,7 +231,7 @@ " [ 0.00000000e+00, 1.00000000e+00, 0.00000000e+00 ... 0.00000000e+00, -1.00000000e+00, 0.00000000e+00]])" ] }, - "execution_count": 7, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -262,7 +254,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 10, "metadata": { "origin_pos": 19, "tab": [ @@ -270,16 +262,6 @@ ] }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[WARNING] KERNEL(4098363,7f10a7d9c740,python):2021-11-08-00:04:34.278.327 [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(4098363,7f10a7d9c740,python):2021-11-08-00:04:34.278.385 [mindspore/ccsrc/backend/optimizer/gpu/reduce_precision_fusion.cc:83] Run] Reduce precision for [TensorScatterUpdate] input 1\n", - "[WARNING] KERNEL(4098363,7f10a7d9c740,python):2021-11-08-00:04:34.288.696 [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(4098363,7f10a7d9c740,python):2021-11-08-00:04:34.288.793 [mindspore/ccsrc/backend/optimizer/gpu/reduce_precision_fusion.cc:83] Run] Reduce precision for [TensorScatterUpdate] input 1\n" - ] - }, { "data": { "text/plain": [ @@ -293,7 +275,7 @@ " [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]])" ] }, - "execution_count": 8, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -315,7 +297,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 11, "metadata": { "origin_pos": 22, "tab": [ @@ -327,11 +309,11 @@ "name": "stdout", "output_type": "stream", "text": [ - "batch 2, loss 0.272\n", - "batch 4, loss 0.263\n", - "batch 6, loss 0.254\n", - "batch 8, loss 0.245\n", - "batch 10, loss 0.237\n" + ".batch 2, loss 0.545\n", + "batch 4, loss 0.503\n", + "batch 6, loss 0.466\n", + "batch 8, loss 0.433\n", + "batch 10, loss 0.404\n" ] } ], @@ -379,7 +361,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 12, "metadata": { "origin_pos": 26, "tab": [ @@ -391,10 +373,10 @@ "data": { "text/plain": [ "Tensor(shape=[1, 2], dtype=Float32, value=\n", - "[[ 1.00198783e-01, -9.42235067e-02]])" + "[[-2.78991014e-01, -2.10835055e-01]])" ] }, - "execution_count": 10, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -407,9 +389,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": { @@ -421,7 +403,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.5" + "version": "3.10.14" }, "rise": { "autolaunch": true, diff --git a/chapter_06_convolutional-neural-networks/1_padding-and-strides.ipynb b/chapter_06_convolutional-neural-networks/1_padding-and-strides.ipynb index af7486a..e6a7e9e 100644 --- a/chapter_06_convolutional-neural-networks/1_padding-and-strides.ipynb +++ b/chapter_06_convolutional-neural-networks/1_padding-and-strides.ipynb @@ -23,6 +23,21 @@ ] }, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[WARNING] CORE(345059,ffff87713640,python):2025-12-14-23:29:31.782.531 [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:500: 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:500: 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" + ] + }, { "data": { "text/plain": [ @@ -35,7 +50,7 @@ } ], "source": [ - "from mindspore import nn, ops\n", + "from mindspore import nn, mint\n", "\n", "def comp_conv2d(conv2d, X):\n", " X = X.reshape((1, 1) + X.shape)\n", @@ -43,7 +58,7 @@ " return Y.reshape(Y.shape[2:])\n", "\n", "conv2d = nn.Conv2d(1, 1, kernel_size=3, padding=1, pad_mode='pad')\n", - "X = ops.randn(8, 8)\n", + "X = mint.randn(8, 8)\n", "comp_conv2d(conv2d, X).shape" ] }, @@ -162,9 +177,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": { @@ -176,7 +191,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.5" + "version": "3.10.14" }, "rise": { "autolaunch": true, diff --git a/chapter_06_convolutional-neural-networks/2_channels.ipynb b/chapter_06_convolutional-neural-networks/2_channels.ipynb index e9cfb0a..8df55e1 100644 --- a/chapter_06_convolutional-neural-networks/2_channels.ipynb +++ b/chapter_06_convolutional-neural-networks/2_channels.ipynb @@ -32,7 +32,23 @@ "pytorch" ] }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[WARNING] CORE(346116,ffffbb048640,python):2025-12-14-23:31:22.937.692 [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:500: 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:500: 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", "\n", @@ -65,10 +81,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "[WARNING] KERNEL(4100470,7f5f2f443740,python):2021-11-08-12:57:24.272.112 [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(4100470,7f5f2f443740,python):2021-11-08-12:57:24.272.239 [mindspore/ccsrc/backend/optimizer/gpu/reduce_precision_fusion.cc:83] Run] Reduce precision for [TensorScatterUpdate] input 1\n", - "[WARNING] KERNEL(4100470,7f5f2f443740,python):2021-11-08-12:57:24.278.648 [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(4100470,7f5f2f443740,python):2021-11-08-12:57:24.278.726 [mindspore/ccsrc/backend/optimizer/gpu/reduce_precision_fusion.cc:83] Run] Reduce precision for [TensorScatterUpdate] input 1\n" + "[WARNING] DEVICE(346116,ffffbb048640,python):2025-12-14-23:31:29.110.347 [mindspore/ccsrc/plugin/ascend/res_manager/mem_manager/ascend_memory_adapter.cc:127] Initialize] Free memory size is less than half of total memory size.Device 0 Device MOC total size:31675383808 Device MOC free size:1905336320 may be other processes occupying this card, check as: ps -ef|grep python\n" ] }, { @@ -185,18 +198,7 @@ "pytorch" ] }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[WARNING] KERNEL(4100470,7f5f2f443740,python):2021-11-08-12:57:24.494.096 [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(4100470,7f5f2f443740,python):2021-11-08-12:57:24.494.178 [mindspore/ccsrc/backend/optimizer/gpu/reduce_precision_fusion.cc:83] Run] Reduce precision for [TensorScatterUpdate] input 1\n", - "[WARNING] KERNEL(4100470,7f5f2f443740,python):2021-11-08-12:57:24.499.155 [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(4100470,7f5f2f443740,python):2021-11-08-12:57:24.499.231 [mindspore/ccsrc/backend/optimizer/gpu/reduce_precision_fusion.cc:83] Run] Reduce precision for [TensorScatterUpdate] input 1\n" - ] - } - ], + "outputs": [], "source": [ "def corr2d_multi_in_out_1x1(X, K):\n", " c_i, h, w = X.shape\n", @@ -219,9 +221,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": { @@ -233,7 +235,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.5" + "version": "3.10.14" }, "rise": { "autolaunch": true, diff --git a/chapter_06_convolutional-neural-networks/3_pooling.ipynb b/chapter_06_convolutional-neural-networks/3_pooling.ipynb index 754bb4f..25d325e 100644 --- a/chapter_06_convolutional-neural-networks/3_pooling.ipynb +++ b/chapter_06_convolutional-neural-networks/3_pooling.ipynb @@ -15,7 +15,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 26, "metadata": {}, "outputs": [], "source": [ @@ -25,7 +25,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 27, "metadata": { "origin_pos": 3, "tab": [ @@ -62,7 +62,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 28, "metadata": { "origin_pos": 6, "tab": [ @@ -74,10 +74,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "[WARNING] KERNEL(4101928,7f78fa72d740,python):2021-11-08-14:12:16.741.122 [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(4101928,7f78fa72d740,python):2021-11-08-14:12:16.741.188 [mindspore/ccsrc/backend/optimizer/gpu/reduce_precision_fusion.cc:83] Run] Reduce precision for [TensorScatterUpdate] input 1\n", - "[WARNING] KERNEL(4101928,7f78fa72d740,python):2021-11-08-14:12:16.745.871 [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(4101928,7f78fa72d740,python):2021-11-08-14:12:16.745.923 [mindspore/ccsrc/backend/optimizer/gpu/reduce_precision_fusion.cc:83] Run] Reduce precision for [TensorScatterUpdate] input 1\n" + "[WARNING] ME(20028:281473054376160,MainProcess):2025-12-09-01:25:44.658.000 [mindspore/context.py:1418] For 'context.set_context', the parameter 'device_target' will be deprecated and removed in a future version. Please use the api mindspore.set_device() instead.\n" ] }, { @@ -88,12 +85,14 @@ " [ 7.00000000e+00, 8.00000000e+00]])" ] }, - "execution_count": 3, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ + "import mindspore as ms\n", + "ms.set_context(mode=ms.PYNATIVE_MODE, device_target=\"CPU\") #!改成CPU形式代码可运行!\n", "X = d2l.tensor([[0.0, 1.0, 2.0], [3.0, 4.0, 5.0], [6.0, 7.0, 8.0]])\n", "pool2d(X, (2, 2))" ] @@ -111,7 +110,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 29, "metadata": { "origin_pos": 8, "tab": [ @@ -127,7 +126,7 @@ " [ 5.00000000e+00, 6.00000000e+00]])" ] }, - "execution_count": 4, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -149,7 +148,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 30, "metadata": { "origin_pos": 11, "tab": [ @@ -167,7 +166,7 @@ " [ 1.20000000e+01, 1.30000000e+01, 1.40000000e+01, 1.50000000e+01]]]])" ] }, - "execution_count": 5, + "execution_count": 30, "metadata": {}, "output_type": "execute_result" } @@ -190,7 +189,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 31, "metadata": { "origin_pos": 15, "tab": [ @@ -205,7 +204,7 @@ "[[[[ 1.00000000e+01]]]])" ] }, - "execution_count": 6, + "execution_count": 31, "metadata": {}, "output_type": "execute_result" } @@ -228,7 +227,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 32, "metadata": { "origin_pos": 19, "tab": [ @@ -244,7 +243,7 @@ " [ 1.30000000e+01, 1.50000000e+01]]]])" ] }, - "execution_count": 7, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } @@ -267,7 +266,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 33, "metadata": { "origin_pos": 25, "tab": [ @@ -283,7 +282,7 @@ " [ 1.30000000e+01, 1.50000000e+01]]]])" ] }, - "execution_count": 8, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" } @@ -306,7 +305,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 34, "metadata": { "origin_pos": 29, "tab": [ @@ -328,7 +327,7 @@ " [ 1.30000000e+01, 1.40000000e+01, 1.50000000e+01, 1.60000000e+01]]]])" ] }, - "execution_count": 9, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } @@ -340,7 +339,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 35, "metadata": { "origin_pos": 33, "tab": [ @@ -358,7 +357,7 @@ " [ 1.40000000e+01, 1.60000000e+01]]]])" ] }, - "execution_count": 10, + "execution_count": 35, "metadata": {}, "output_type": "execute_result" } @@ -372,9 +371,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": { @@ -386,7 +385,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.5" + "version": "3.10.14" }, "rise": { "autolaunch": true, diff --git a/chapter_06_convolutional-neural-networks/4_lenet.ipynb b/chapter_06_convolutional-neural-networks/4_lenet.ipynb index 146eaf0..4315f00 100644 --- a/chapter_06_convolutional-neural-networks/4_lenet.ipynb +++ b/chapter_06_convolutional-neural-networks/4_lenet.ipynb @@ -33,12 +33,28 @@ "pytorch" ] }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[WARNING] CORE(350979,ffff9c881640,python):2025-12-14-23:36:45.862.137 [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:500: 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:500: 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", - "from mindspore import nn, ops, value_and_grad\n", + "from mindspore import nn, value_and_grad, ops\n", "from mindspore.common.initializer import initializer, XavierUniform, Uniform, _calculate_fan_in_and_fan_out\n", - "\n", + "import mindspore.mint as mint\n", "net = nn.SequentialCell([\n", " nn.Conv2d(1, 6, kernel_size=5, padding=2, pad_mode='pad', has_bias=True), nn.Sigmoid(),\n", " nn.AvgPool2d(kernel_size=2, stride=2),\n", @@ -75,26 +91,54 @@ "name": "stdout", "output_type": "stream", "text": [ - "Conv2d output shape: \t (1, 6, 28, 28)\n", - "Sigmoid output shape: \t (1, 6, 28, 28)\n", - "AvgPool2d output shape: \t (1, 6, 14, 14)\n", - "Conv2d output shape: \t (1, 16, 10, 10)\n", - "Sigmoid output shape: \t (1, 16, 10, 10)\n", - "AvgPool2d output shape: \t (1, 16, 5, 5)\n", - "Flatten output shape: \t (1, 400)\n", - "Dense output shape: \t (1, 120)\n", - "Sigmoid output shape: \t (1, 120)\n", - "Dense output shape: \t (1, 84)\n", - "Sigmoid output shape: \t (1, 84)\n", - "Dense output shape: \t (1, 10)\n" + "Conv2d output shape:\t (1, 6, 28, 28)\n", + "Sigmoid output shape:\t (1, 6, 28, 28)\n", + "AvgPool2d output shape:\t (1, 6, 14, 14)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/Ascend/ascend-toolkit/8.2.RC1/opp/built-in/op_impl/ai_core/tbe/impl/util/util_conv2d_dynamic.py:133: UserWarning: conv2d fmap ori_range changed from [[1, 1], [6, 6], [16, 63], [16, 63]] to [[1, 1], [6, 6], [16, 63], (16, 63)].\n", + " warnings.warn(to_print)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Conv2d output shape:\t (1, 16, 10, 10)\n", + "Sigmoid output shape:\t (1, 16, 10, 10)\n", + "AvgPool2d output shape:\t (1, 16, 5, 5)\n", + "Flatten output shape:\t (1, 400)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/Ascend/ascend-toolkit/8.2.RC1/opp/built-in/op_impl/ai_core/tbe/impl/util/util_conv2d_dynamic.py:133: UserWarning: conv2d fmap ori_range changed from [[1, 1], [16, 16], [4, 15], [4, 15]] to [[1, 1], [16, 16], [4, 15], (4, 15)].\n", + " warnings.warn(to_print)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Dense output shape:\t (1, 120)\n", + "Sigmoid output shape:\t (1, 120)\n", + "Dense output shape:\t (1, 84)\n", + "Sigmoid output shape:\t (1, 84)\n", + "Dense output shape:\t (1, 10)\n" ] } ], "source": [ - "X = ops.randn(1, 1, 28, 28)\n", + "X = mint.randn(1, 1, 28, 28)\n", "for layer in net:\n", " X = layer(X)\n", - " print(layer.__class__.__name__,'output shape:\\t',X.shape)" + " print(layer.__class__.__name__,'output shape:\\t',X.shape)\n" ] }, { @@ -166,6 +210,7 @@ }, "outputs": [], "source": [ + "import math\n", "def train_ch6(net, train_dataset, test_dataset, num_epochs, lr):\n", " \"\"\"用GPU训练模型(在第六章定义)。\"\"\"\n", " for _, cell in net.cells_and_names():\n", @@ -240,20 +285,946 @@ "name": "stdout", "output_type": "stream", "text": [ - "loss 0.470, train acc 0.837, test acc 0.819\n", - "52451.5 examples/sec\n" + "loss 0.466, train acc 0.825, test acc 0.824\n", + "5846.6 examples/sec\n" ] }, { "data": { - "image/svg+xml": "\n\n\n \n \n \n \n 2021-11-10T00:46:57.172951\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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2025-12-14T23:39:44.437610\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.7.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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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" } ], @@ -266,9 +1237,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": { @@ -280,7 +1251,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.5" + "version": "3.10.14" }, "rise": { "autolaunch": true,