.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "beginner/examples_tensor/polynomial_numpy.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note Click :ref:`here ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_beginner_examples_tensor_polynomial_numpy.py: Warm-up: numpy -------------- A third order polynomial, trained to predict :math:`y=\sin(x)` from :math:`-\pi` to :math:`pi` by minimizing squared Euclidean distance. This implementation uses numpy to manually compute the forward pass, loss, and backward pass. A numpy array is a generic n-dimensional array; it does not know anything about deep learning or gradients or computational graphs, and is just a way to perform generic numeric computations. .. GENERATED FROM PYTHON SOURCE LINES 16-54 .. rst-class:: sphx-glr-script-out .. code-block:: none 99 1314.5233605892595 199 920.7899404155552 299 646.2350531527254 399 454.6360023944252 499 320.82946175059794 599 227.31728163862482 699 161.92100612152032 799 116.15751554567778 899 84.112973707987 999 61.6614652248286 1099 45.922305972995275 1199 34.88278103310294 1299 27.135653234785412 1399 21.696372122544016 1499 17.87567982823961 1599 15.190755279644566 1699 13.303191474101487 1799 11.97567116033004 1899 11.041682683805794 1999 10.384336902439395 Result: y = -0.04054381247397627 + 0.8470191878859463 x + 0.006994482303712554 x^2 + -0.09194756824704707 x^3 | .. code-block:: default import numpy as np import math # Create random input and output data x = np.linspace(-math.pi, math.pi, 2000) y = np.sin(x) # Randomly initialize weights a = np.random.randn() b = np.random.randn() c = np.random.randn() d = np.random.randn() learning_rate = 1e-6 for t in range(2000): # Forward pass: compute predicted y # y = a + b x + c x^2 + d x^3 y_pred = a + b * x + c * x ** 2 + d * x ** 3 # Compute and print loss loss = np.square(y_pred - y).sum() if t % 100 == 99: print(t, loss) # Backprop to compute gradients of a, b, c, d with respect to loss grad_y_pred = 2.0 * (y_pred - y) grad_a = grad_y_pred.sum() grad_b = (grad_y_pred * x).sum() grad_c = (grad_y_pred * x ** 2).sum() grad_d = (grad_y_pred * x ** 3).sum() # Update weights a -= learning_rate * grad_a b -= learning_rate * grad_b c -= learning_rate * grad_c d -= learning_rate * grad_d print(f'Result: y = {a} + {b} x + {c} x^2 + {d} x^3') .. rst-class:: sphx-glr-timing **Total running time of the script:** ( 0 minutes 0.555 seconds) .. _sphx_glr_download_beginner_examples_tensor_polynomial_numpy.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: polynomial_numpy.py ` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: polynomial_numpy.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_