diff --git a/tutorials/source_en/beginner/autograd.md b/tutorials/source_en/beginner/autograd.md index b75dac525d3088d23e2b5c6813b6dfab02e53ff6..c1ed3df5a36b779d0b90cc0fc9ebaf9c64388aa0 100644 --- a/tutorials/source_en/beginner/autograd.md +++ b/tutorials/source_en/beginner/autograd.md @@ -11,9 +11,7 @@ MindSpore uses the design philosophy of functional auto-differentiation to provi ```python import numpy as np import mindspore -from mindspore import nn -from mindspore import ops -from mindspore import Tensor, Parameter +from mindspore import ops, nn, Tensor, Parameter ``` ## Functions and Computing Graphs @@ -25,6 +23,7 @@ Computing graphs are a way to represent mathematical functions in a graph-theore In this model, $x$ is the input, $y$ is the correct value, and $w$ and $b$ are the parameters we need to optimize. ```python +np.random.seed(42) x = ops.ones(5, mindspore.float32) # input tensor y = ops.zeros(3, mindspore.float32) # expected output w = Parameter(Tensor(np.random.randn(5, 3), mindspore.float32), name='w') # weight @@ -51,7 +50,7 @@ print(loss) ``` ```text -0.914285 +1.342315 ``` ## Differential Functions and Gradient Computing @@ -80,12 +79,12 @@ print(grads) ```text (Tensor(shape=[5, 3], dtype=Float32, value= - [[ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01], - [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01], - [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01], - [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01], - [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01]]), - Tensor(shape=[3], dtype=Float32, value= [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01])) + [[ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02], + [ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02], + [ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02], + [ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02], + [ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02]]), + Tensor(shape=[3], dtype=Float32, value= [ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02])) ``` ## Stop Gradient @@ -134,12 +133,12 @@ print(grads) ```text (Tensor(shape=[5, 3], dtype=Float32, value= - [[ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01], - [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01], - [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01], - [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01], - [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01]]), - Tensor(shape=[3], dtype=Float32, value= [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01])) + [[ 1.32618928e+00, 1.01589143e+00, 1.04216456e+00], + [ 1.32618928e+00, 1.01589143e+00, 1.04216456e+00], + [ 1.32618928e+00, 1.01589143e+00, 1.04216456e+00], + [ 1.32618928e+00, 1.01589143e+00, 1.04216456e+00], + [ 1.32618928e+00, 1.01589143e+00, 1.04216456e+00]]), + Tensor(shape=[3], dtype=Float32, value= [ 1.32618928e+00, 1.01589143e+00, 1.04216456e+00])) ``` It can be seen that the gradient values corresponding to $w$ and $b$ are the same as the gradient values found by the initial `function`. @@ -162,14 +161,14 @@ print(grads, z) ``` ```text -((Tensor(shape=[5, 3], dtype=Float32, value= - [[ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01], - [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01], - [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01], - [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01], - [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01]]), - Tensor(shape=[3], dtype=Float32, value= [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01])), - Tensor(shape=[3], dtype=Float32, value= [-1.40476596e+00, -1.64932394e+00, 2.24711204e+00])) +(Tensor(shape=[5, 3], dtype=Float32, value= + [[ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02], + [ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02], + [ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02], + [ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02], + [ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02]]), + Tensor(shape=[3], dtype=Float32, value= [ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02])) +[ 3.8211915 -2.994512 -1.932323 ] ``` ## Calculating Neural Network Gradient @@ -225,12 +224,12 @@ print(grads) ```text (Tensor(shape=[5, 3], dtype=Float32, value= - [[ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01], - [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01], - [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01], - [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01], - [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01]]), - Tensor(shape=[3], dtype=Float32, value= [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01])) + [[ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02], + [ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02], + [ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02], + [ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02], + [ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02]]), + Tensor(shape=[3], dtype=Float32, value= [ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02])) ``` Executing the differentiation function, and we can see that the gradient value is the same as the gradient value obtained from the previous `function`. diff --git a/tutorials/source_zh_cn/beginner/autograd.ipynb b/tutorials/source_zh_cn/beginner/autograd.ipynb index 3fb096cb262988631c111dee8a5f6f5d17b33d82..8c952b9d4d346b1616cb63af82a1ffba357e07b1 100644 --- a/tutorials/source_zh_cn/beginner/autograd.ipynb +++ b/tutorials/source_zh_cn/beginner/autograd.ipynb @@ -28,9 +28,7 @@ "source": [ "import numpy as np\n", "import mindspore\n", - "from mindspore import nn\n", - "from mindspore import ops\n", - "from mindspore import Tensor, Parameter" + "from mindspore import ops, nn, Tensor, Parameter" ] }, { @@ -57,6 +55,7 @@ "metadata": {}, "outputs": [], "source": [ + "np.random.seed(42)\n", "x = ops.ones(5, mindspore.float32) # input tensor\n", "y = ops.zeros(3, mindspore.float32) # expected output\n", "w = Parameter(Tensor(np.random.randn(5, 3), mindspore.float32), name='w') # weight\n", @@ -96,14 +95,11 @@ "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "0.914285" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "1.3423151\n" + ] } ], "source": [ @@ -156,20 +152,16 @@ "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "(Tensor(shape=[5, 3], dtype=Float32, value=\n", - " [[ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01],\n", - " [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01],\n", - " [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01],\n", - " [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01],\n", - " [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01]]),\n", - " Tensor(shape=[3], dtype=Float32, value= [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01]))" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "(Tensor(shape=[5, 3], dtype=Float32, value=\n", + "[[ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02],\n", + " [ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02],\n", + " [ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02],\n", + " [ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02],\n", + " [ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02]]), Tensor(shape=[3], dtype=Float32, value= [ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02]))\n" + ] } ], "source": [ @@ -211,20 +203,16 @@ "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "(Tensor(shape=[5, 3], dtype=Float32, value=\n", - " [[ 1.06568694e+00, 1.05373347e+00, 1.30146706e+00],\n", - " [ 1.06568694e+00, 1.05373347e+00, 1.30146706e+00],\n", - " [ 1.06568694e+00, 1.05373347e+00, 1.30146706e+00],\n", - " [ 1.06568694e+00, 1.05373347e+00, 1.30146706e+00],\n", - " [ 1.06568694e+00, 1.05373347e+00, 1.30146706e+00]]),\n", - " Tensor(shape=[3], dtype=Float32, value= [ 1.06568694e+00, 1.05373347e+00, 1.30146706e+00]))" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "(Tensor(shape=[5, 3], dtype=Float32, value=\n", + "[[ 1.32618928e+00, 1.01589143e+00, 1.04216456e+00],\n", + " [ 1.32618928e+00, 1.01589143e+00, 1.04216456e+00],\n", + " [ 1.32618928e+00, 1.01589143e+00, 1.04216456e+00],\n", + " [ 1.32618928e+00, 1.01589143e+00, 1.04216456e+00],\n", + " [ 1.32618928e+00, 1.01589143e+00, 1.04216456e+00]]), Tensor(shape=[3], dtype=Float32, value= [ 1.32618928e+00, 1.01589143e+00, 1.04216456e+00]))\n" + ] } ], "source": [ @@ -258,20 +246,16 @@ "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "(Tensor(shape=[5, 3], dtype=Float32, value=\n", - " [[ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01],\n", - " [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01],\n", - " [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01],\n", - " [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01],\n", - " [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01]]),\n", - " Tensor(shape=[3], dtype=Float32, value= [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01]))" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "(Tensor(shape=[5, 3], dtype=Float32, value=\n", + "[[ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02],\n", + " [ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02],\n", + " [ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02],\n", + " [ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02],\n", + " [ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02]]), Tensor(shape=[3], dtype=Float32, value= [ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02]))\n" + ] } ], "source": [ @@ -315,21 +299,16 @@ "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "((Tensor(shape=[5, 3], dtype=Float32, value=\n", - " [[ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01],\n", - " [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01],\n", - " [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01],\n", - " [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01],\n", - " [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01]]),\n", - " Tensor(shape=[3], dtype=Float32, value= [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01])),\n", - " Tensor(shape=[3], dtype=Float32, value= [-1.40476596e+00, -1.64932394e+00, 2.24711204e+00]))" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "(Tensor(shape=[5, 3], dtype=Float32, value=\n", + "[[ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02],\n", + " [ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02],\n", + " [ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02],\n", + " [ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02],\n", + " [ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02]]), Tensor(shape=[3], dtype=Float32, value= [ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02])) [ 3.8211915 -2.994512 -1.932323 ]\n" + ] } ], "source": [ @@ -441,20 +420,16 @@ "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "(Tensor(shape=[5, 3], dtype=Float32, value=\n", - " [[ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01],\n", - " [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01],\n", - " [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01],\n", - " [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01],\n", - " [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01]]),\n", - " Tensor(shape=[3], dtype=Float32, value= [ 6.56869709e-02, 5.37334494e-02, 3.01467031e-01]))" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "(Tensor(shape=[5, 3], dtype=Float32, value=\n", + "[[ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02],\n", + " [ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02],\n", + " [ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02],\n", + " [ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02],\n", + " [ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02]]), Tensor(shape=[3], dtype=Float32, value= [ 3.26189250e-01, 1.58914644e-02, 4.21645455e-02]))\n" + ] } ], "source": [ @@ -472,9 +447,9 @@ ], "metadata": { "kernelspec": { - "display_name": "MindSpore", + "display_name": "ms25-kernel", "language": "python", - "name": "mindspore" + "name": "ms25-kernel" }, "language_info": { "codemirror_mode": { @@ -486,7 +461,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.5" + "version": "3.9.21" }, "vscode": { "interpreter": {