![Creare un’animazione di discesa gradiente in Python | di Luis Medina | Novembre 2023
| Intelligenza-Artificiale Creare un’animazione di discesa gradiente in Python | di Luis Medina | Novembre 2023
| Intelligenza-Artificiale](https://intelligenza-artificiale.eu/wp-content/uploads/2023/11/Creare-unanimazione-di-discesa-gradiente-in-Python-di-Luis.jpeg)
Lascia che ti racconti come ho creato un’animazione di discesa del gradiente solo per illustrare un punto in un post sul blog. Ne è valsa la pena perché ho imparato di più Python facendolo e ho sbloccato una nuova abilità: creare trame animate.
Ti guiderò attraverso i passaggi del processo che ho seguito.
Un po’ di background
Pochi giorni fa ho pubblicato a post sul blog sulla discesa del gradiente come algoritmo di ottimizzazione utilizzato per l’addestramento delle reti neurali artificiali.
Volevo includere una figura animata per mostrare come la scelta di diversi punti di inizializzazione per un’ottimizzazione della discesa del gradiente possa produrre risultati diversi.
È stato allora che mi sono imbattuto in questi animazioni straordinarie creato da Alec Radford anni fa e condiviso su a Commento su Redditillustrando la differenza tra alcuni algoritmi avanzati di discesa del gradiente, come Dosaggio, Adadelta E Spina RMS.
Dato che mi sono spinto a farlo sostituire Matlab con PythonHo deciso di provarci e provare a codificare io stesso un’animazione simile, utilizzando un algoritmo di discesa del gradiente “vanilla” per cominciare.
Andiamo, passo dopo passo.
Traccia la superficie utilizzata per l’ottimizzazione
La prima cosa che facciamo è importare le librerie che ci serviranno e definire la funzione matematica che vorremo rappresentare.
Volevo utilizzare una superficie del punto di sella, quindi ho definito la seguente equazione:
Creiamo anche una griglia di punti per tracciare la nostra superficie. np.mgrid
è perfetto per questo. Il numero complesso 81j
passato come lunghezza del passo indica quanti punti creare tra i valori di inizio e fine (81 punti).
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt# Create a function to compute the surface
def f(theta):
x = theta(0)
y = theta(1)
return x**2 - y**2
# Make a grid of points for plotting
x, y = np.mgrid(-1:1:81j, -1:1:81j)
Fonte: towardsdatascience.com