Creare un’animazione di discesa gradiente in Python |  di Luis Medina |  Novembre 2023

 | Intelligenza-Artificiale

Come tracciare la traiettoria di un punto su una superficie complessa

fotografato da Todd Diemer SU Unsplash

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.

Animazione di due punti diversi che scendono da una superficie a sella.
Animazione di discesa gradiente creata in Python. Immagine dell’autore.

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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *