Muestra las diferencias entre dos versiones de la página.
Próxima revisión | Revisión previa | ||
clase:iabd:pia:2eval:tema07-codigo [2024/10/12 12:31] admin creado |
clase:iabd:pia:2eval:tema07-codigo [2024/12/23 10:23] (actual) admin |
||
---|---|---|---|
Línea 1: | Línea 1: | ||
- | ====== 7.h Código ====== | + | ====== 7.c Código ====== |
Durante el tema hemos visto los gráficos que explican el descenso de gradiente. Veamos ahora como se pueden hacer dichos gráficos en Python. | Durante el tema hemos visto los gráficos que explican el descenso de gradiente. Veamos ahora como se pueden hacer dichos gráficos en Python. | ||
Línea 102: | Línea 102: | ||
Vemos la siguiente gráfica donde se muestran los puntos que hemos obtenido de la función '' | Vemos la siguiente gráfica donde se muestran los puntos que hemos obtenido de la función '' | ||
- | {{ : | + | {{ : |
Línea 112: | Línea 112: | ||
- | ==== Optimizadores de Keras ==== | ||
- | | ||
- | |||
- | <sxh python> | ||
- | def loss_tf(w_0, | ||
- | return | ||
- | |||
- | def get_puntos_descenso_gradiente_optimizer(epochs, | ||
- | |||
- | puntos_descenso_gradiente=np.array([[w_0_init, | ||
- | |||
- | w_0=w_0_init | ||
- | w_1=w_1_init | ||
- | for epoch in range(epochs): | ||
- | var_w_0=tf.Variable(w_0) | ||
- | var_w_1=tf.Variable(w_1) | ||
- | |||
- | optimizer_function.minimize(lambda: | ||
- | optimizer_function.minimize(lambda: | ||
- | |||
- | w_0=var_w_0.numpy() | ||
- | w_1=var_w_1.numpy() | ||
- | |||
- | puntos_descenso_gradiente=np.append(puntos_descenso_gradiente, | ||
- | |||
- | return puntos_descenso_gradiente | ||
- | </ | ||
- | |||
- | Lo que ha cambiado principalmente es la función '' | ||
- | |||
- | |||
- | Si usamos '' | ||
- | <sxh python> | ||
- | get_puntos_descenso_gradiente_optimizer(5, | ||
- | </ | ||
- | <sxh base> | ||
- | array([[-0.35 | ||
- | | ||
- | | ||
- | [ 0.06544246, -1.06462073], | ||
- | [ 0.24086528, -1.40752137], | ||
- | [ 0.26578248, -1.59573841]]) | ||
- | </ | ||
- | Vamos que el resultado es prácticamente el mismo que cuando lo hicimos manualmente. | ||
- | |||
- | Y podemos generar de la misma forma el gráfico: | ||
- | <sxh python> | ||
- | figure=plt.figure(figsize=(16, | ||
- | axes = figure.add_subplot() | ||
- | plot_loss_function(axes) | ||
- | |||
- | plot_descenso_gradiente(axes, | ||
- | </ | ||
- | |||
- | |||
- | {{ : | ||
- | |||
- | Y obviamente el resultado es el mismo | ||