.. 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 :ref:`Go to the end ` 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 1118.942019966937 199 756.1189056001887 299 512.3342954198914 399 348.39422979567036 499 238.05166677725487 599 163.71678510307976 699 113.59274972286524 799 79.76174043399425 899 56.905187892025204 999 41.447516098143375 1099 30.982855992640406 1199 23.890945305608916 1299 19.07959380115159 1399 15.81187729239062 1499 13.590092677613795 1599 12.07776570441537 1699 11.047188727662363 1799 10.344100328414365 1899 9.863884086068648 1999 9.535514667832281 Result: y = -0.02116013723669262 + 0.8393866176952383 x + 0.0036504757795329367 x^2 + -0.09086190160242484 x^3 | .. code-block:: Python 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.236 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-jupyter :download:`Download Jupyter notebook: polynomial_numpy.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: polynomial_numpy.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: polynomial_numpy.zip ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_