Código de Python - Vectores-Descenso de gradiente.

Imágen de perfil

Vectores-Descenso de gradiente.gráfica de visualizaciones


Python

Publicado el 27 de Septiembre del 2023 por Hilario (124 códigos)
303 visualizaciones desde el 27 de Septiembre del 2023
Vectores-27-Denso-Gradiente-AULA-G-86-SEP.py

Este código define una función cuadrática de ejemplo, inicia en un punto y realiza el descenso de gradiente para minimizar la función. Luego, grafica la superficie de la función y muestra la trayectoria del descenso de gradiente en 3D. A medida que el algoritmo de descenso de gradiente avanza, se acerca al mínimo de la función cuadrática.

Asegúrate de tener instaladas las bibliotecas NumPy y Matplotlib para ejecutar este código.

Requerimientos

Vectores-27-Denso-Gradiente-AULA-G-86-SEP.py
Ejecutado bajo consola Linux.
Ubuntu 20.04.6 LTS.
Deben estar instalados los módulos:
numpy, y matplotlib.
-----------------------------------
python3 Vectores-27-Denso-Gradiente-AULA-G-86-SEP.py

También se puede ejecutar con Google Colab.

V-0.

Publicado el 27 de Septiembre del 2023gráfica de visualizaciones de la versión: V-0.
304 visualizaciones desde el 27 de Septiembre del 2023
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

descarga
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
"""
Vectores-27-Denso-Gradiente-AULA-G-86-SEP.py
Ejecutado bajo consola Linux.
Ubuntu 20.04.6 LTS.
Deben estar instalados los módulos:
-----------------------------------
python3 Vectores-27-Denso-Gradiente-AULA-G-86-SEP.py.
numpy, y matplotlib.
También se puede ejecutar con Google Colab.
"""
import numpy as np
import matplotlib.pyplot as plt
 
# Definir la función cuadrática de ejemplo
def funcion_cuadratica(x, y, z):
    return x**2 + y**2 + z**2
 
# Inicializar el punto de inicio y la tasa de aprendizaje
inicio = np.array([3.0, -2.0, 4.0])
tasa_aprendizaje = 0.1
n_iteraciones = 50
 
# Listas para almacenar el historial de puntos y valores de la función
historial_puntos = [inicio]
historial_valores = [funcion_cuadratica(*inicio)]
 
# Descenso de gradiente
for i in range(n_iteraciones):
    # Calcular el gradiente de la función en el punto actual
    gradiente = np.array([2 * inicio[0], 2 * inicio[1], 2 * inicio[2]])
 
    # Actualizar el punto utilizando el descenso de gradiente
    inicio = inicio - tasa_aprendizaje * gradiente
 
    # Calcular el valor de la función en el nuevo punto
    valor = funcion_cuadratica(*inicio)
 
    # Registrar el punto y el valor en el historial
    historial_puntos.append(inicio)
    historial_valores.append(valor)
 
# Convertir las listas en arreglos numpy para facilitar la manipulación
historial_puntos = np.array(historial_puntos)
historial_valores = np.array(historial_valores)
 
# Graficar la función y el descenso de gradiente
fig = plt.figure(figsize=(12, 6))
 
# Superficie de la función
ax1 = fig.add_subplot(121, projection='3d')
x = np.linspace(-4, 4, 100)
y = np.linspace(-4, 4, 100)
X, Y = np.meshgrid(x, y)
Z = funcion_cuadratica(X, Y, 0)
ax1.plot_surface(X, Y, Z, cmap='viridis', alpha=0.8)
ax1.set_xlabel('X')
ax1.set_ylabel('Y')
ax1.set_zlabel('Valor de la Función')
ax1.set_title('Superficie de la Función Cuadrática')
 
# Descenso de gradiente
ax2 = fig.add_subplot(122, projection='3d')
ax2.plot(historial_puntos[:, 0], historial_puntos[:, 1], historial_valores, marker='o', linestyle='-', color='r')
ax2.set_xlabel('X')
ax2.set_ylabel('Y')
ax2.set_zlabel('Valor de la Función')
ax2.set_title('Descenso de Gradiente')
 
plt.show()



Comentarios sobre la versión: V-0. (0)


No hay comentarios
 

Comentar la versión: V-0.

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s7443