Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
clase:iabd:pia:1eval:tema06 [2023/01/31 20:33] admin [Ejercicios] |
clase:iabd:pia:1eval:tema06 [2024/03/25 15:06] (actual) admin [Tipos de funciones de activación en la capa de salida] |
||
---|---|---|---|
Línea 46: | Línea 46: | ||
- | $$\vec{y}=\vec{w}^{ \, \intercal} \cdot \vec{x}+b$$ | + | $$y=\vec{w}^{ \, \intercal} \cdot \vec{x}+b$$ |
Línea 451: | Línea 451: | ||
np.random.seed(5) | np.random.seed(5) | ||
tf.random.set_seed(5) | tf.random.set_seed(5) | ||
+ | random.seed(5) | ||
model=Sequential() | model=Sequential() | ||
Línea 702: | Línea 702: | ||
* Uso en Keras: Sigmoide | * Uso en Keras: Sigmoide | ||
<sxh python> | <sxh python> | ||
- | model.add(Dense(3, input_dim=1, | + | model.add(Dense(3, |
- | model.add(Dense(3, input_dim=1, | + | model.add(Dense(3, |
</ | </ | ||
Línea 709: | Línea 710: | ||
<sxh python> | <sxh python> | ||
- | model.add(Dense(3, input_dim=1, | + | model.add(Dense(3, |
- | model.add(Dense(3, input_dim=1, | + | model.add(Dense(3, |
</ | </ | ||
Línea 753: | Línea 755: | ||
<sxh python> | <sxh python> | ||
- | model.add(Dense(3, input_dim=1, | + | model.add(Dense(3, |
- | model.add(Dense(3, input_dim=1, | + | model.add(Dense(3, |
- | model.add(Dense(3, input_dim=1, | + | model.add(Dense(3, |
</ | </ | ||
Línea 761: | Línea 763: | ||
<sxh python> | <sxh python> | ||
- | model.add(Dense(3, | + | model.add(Dense(3, |
- | model.add(Dense(3, input_dim=1, | + | model.add(Dense(3, activation=tf.keras.layers.LeakyReLU())) |
+ | model.add(Dense(3, | ||
</ | </ | ||
Línea 806: | Línea 809: | ||
<sxh python> | <sxh python> | ||
- | model.add(Dense(3, input_dim=1, | + | model.add(Dense(3, |
- | model.add(Dense(3, input_dim=1, | + | model.add(Dense(3, |
- | model.add(Dense(3, input_dim=1, | + | model.add(Dense(3, |
</ | </ | ||
Línea 814: | Línea 817: | ||
<sxh python> | <sxh python> | ||
- | model.add(Dense(3, input_dim=1, | + | model.add(Dense(3, |
- | model.add(Dense(3, input_dim=1, | + | model.add(Dense(3, |
</ | </ | ||
Línea 844: | Línea 847: | ||
* Deberíamos empezar siempre probando con '' | * Deberíamos empezar siempre probando con '' | ||
* Si '' | * Si '' | ||
- | * El último lugar probar con '' | + | * El último lugar probar con '' |
* Nunca deberíamos usar ni '' | * Nunca deberíamos usar ni '' | ||
Línea 872: | Línea 875: | ||
{{ : | {{ : | ||
+ | |||
+ | $$lineal(x)=x$$ | ||
La forma de usarla en keras es simplemente no diciendo nada sobre la función de activación en la capa de salida. | La forma de usarla en keras es simplemente no diciendo nada sobre la función de activación en la capa de salida. | ||
Línea 890: | Línea 895: | ||
==== Sigmoide ==== | ==== Sigmoide ==== | ||
Ya hemos visto la función de activación sigmoide | Ya hemos visto la función de activación sigmoide | ||
+ | |||
+ | |||
+ | |||
+ | {{ : | ||
+ | |||
+ | $$sigmoide(x)=\frac{1}{1+e^{-x}}$$ | ||
+ | |||
La función Sigmoide se usa en problemas de clasificación, | La función Sigmoide se usa en problemas de clasificación, | ||
Línea 898: | Línea 910: | ||
* La probabilidad de que haya que comprar mañana acciones de la empresa Y. | * La probabilidad de que haya que comprar mañana acciones de la empresa Y. | ||
* La probabilidad de que haya que comprar mañana acciones de la empresa Z. | * La probabilidad de que haya que comprar mañana acciones de la empresa Z. | ||
+ | |||
+ | Es decir se puede usar para clasificar entre 2 opciones pero también se puede usar cuando son más de dos opciones pero que no sean excluyentes entre ellas. | ||
<note tip> | <note tip> | ||
Línea 918: | Línea 932: | ||
En vez de aplicarse a una única neurona se aplica a todas las neuronas de una capa. Es similar a la sigmoide pero lo que hace es que la probabilidad de todas las salidas de la capa debe sumar 1. | En vez de aplicarse a una única neurona se aplica a todas las neuronas de una capa. Es similar a la sigmoide pero lo que hace es que la probabilidad de todas las salidas de la capa debe sumar 1. | ||
+ | |||
+ | $$ | ||
+ | softmax(x_i)=\frac{e^{x_i}}{\sum\limits_{j=0}^{n}e^{x_j}} | ||
+ | $$ | ||
+ | |||
+ | Siendo $x_i$ la entrada la la neurona // | ||
Ejemplos de ello: | Ejemplos de ello: | ||
Línea 945: | Línea 965: | ||
<sxh python> | <sxh python> | ||
+ | from sklearn.preprocessing import LabelBinarizer | ||
+ | |||
y=iris.target | y=iris.target | ||
label_binarizer = LabelBinarizer() | label_binarizer = LabelBinarizer() | ||
Línea 971: | Línea 993: | ||
+ | |||
+ | ===== Guardando modelos a disco ===== | ||
+ | Una vez tenemos la red neuronal entrenada, la podemos guardar a disco para poder usarla en otro programa. | ||
+ | |||
+ | |||
+ | * Para guardar la red | ||
+ | <sxh python> | ||
+ | |||
+ | model=Sequential() | ||
+ | model.add(Dense(10, | ||
+ | model.compile(loss=" | ||
+ | history=model.fit(x_train, | ||
+ | |||
+ | |||
+ | model.save(' | ||
+ | </ | ||
+ | |||
+ | * Para cargar la red en otro programa | ||
+ | |||
+ | <sxh python> | ||
+ | model=tf.keras.models.load_model(' | ||
+ | |||
+ | </ | ||
+ | |||
+ | * Si el modelo al crearse usó funciones personalizadas, | ||
+ | <sxh python> | ||
+ | model=tf.keras.models.load_model(' | ||
+ | </ | ||
+ | Más información: | ||
+ | * [[https:// | ||
===== Redes Neuronales Famosas ===== | ===== Redes Neuronales Famosas ===== | ||
Línea 1005: | Línea 1057: | ||
* [[https:// | * [[https:// | ||
* [[https:// | * [[https:// | ||
+ | |||
+ | |||
+ | ChatGPT forma parte de la familia de modelos basados en GPT-3 pero especializado en conversaciones como se puede ver en la siguiente imagen: | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Además ChatGPT no es de los modelos con más parámetros como podemos ver a continuación: | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Por último vemos el tamaño que tendrá GPT4: | ||
+ | |||
+ | {{ : | ||
Línea 1015: | Línea 1080: | ||
* [[https:// | * [[https:// | ||
* {{ : | * {{ : | ||
- | * | + | * ChatGPT |
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
Línea 1251: | Línea 1320: | ||
* El Nº de neuronas de la última capa | * El Nº de neuronas de la última capa | ||
+ | ==== Ejercicio 9.A ==== | ||
+ | Crea y entrena una red neuronal con los datos de las flores pero ahora ya deberás tener en cuenta los 3 tipos de flor. | ||
+ | |||
+ | Deberás: | ||
+ | * Probar con varias funciones de activación en las capas ocultas para ver cual es la mejor. | ||
+ | * Elegir adecuadamente la función de activación de la capa de salida | ||
+ | * ¿Cuantas neuronas tiene la última capa? | ||
+ | |||
+ | ==== Ejercicio 9.B ==== | ||
+ | Crea y entrena una red neuronal que averigüe el tipo de un vino. Los datos los obtendrás con la función '' | ||
- | ==== Ejercicio 10.A ==== | ||
- | Crea y entrena una red neuronal que averigüe la " | ||
<sxh python> | <sxh python> | ||
- | from sklearn.datasets import | + | from sklearn.datasets import |
</ | </ | ||
Línea 1262: | Línea 1339: | ||
* Probar con varias funciones de activación en las capas ocultas para ver cual es la mejor. | * Probar con varias funciones de activación en las capas ocultas para ver cual es la mejor. | ||
* Elegir adecuadamente la función de activación de la capa de salida | * Elegir adecuadamente la función de activación de la capa de salida | ||
+ | * ¿Cuantas neuronas tiene la última capa? | ||
- | ==== Ejercicio | + | ==== Ejercicio |
Crea y entrena una red neuronal que averigüe el dígito que ha escrito una persona. Los datos los obtendrás con la función '' | Crea y entrena una red neuronal que averigüe el dígito que ha escrito una persona. Los datos los obtendrás con la función '' | ||
Línea 1274: | Línea 1352: | ||
* Probar con varias funciones de activación en las capas ocultas para ver cual es la mejor. | * Probar con varias funciones de activación en las capas ocultas para ver cual es la mejor. | ||
* Elegir adecuadamente la función de activación de la capa de salida | * Elegir adecuadamente la función de activación de la capa de salida | ||
+ | * ¿Cuantas neuronas tiene la última capa? | ||
- | ==== Ejercicio 10.C ==== | ||
- | Crea y entrena una red neuronal que averigüe el tipo de un vino. Los datos los obtendrás con la función '' | ||
+ | |||
+ | ==== Ejercicio 9.D ==== | ||
+ | Crea y entrena una red neuronal que averigüe la " | ||
<sxh python> | <sxh python> | ||
- | from sklearn.datasets import | + | from sklearn.datasets import |
</ | </ | ||
Línea 1286: | Línea 1366: | ||
* Probar con varias funciones de activación en las capas ocultas para ver cual es la mejor. | * Probar con varias funciones de activación en las capas ocultas para ver cual es la mejor. | ||
* Elegir adecuadamente la función de activación de la capa de salida | * Elegir adecuadamente la función de activación de la capa de salida | ||
+ | * ¿Has conseguido que haya un error bajo? | ||
- | ==== Ejercicio 10.D ==== | ||
- | Crea y entrena una red neuronal que averigüe si una transacción es fraudulenta. Los datos los obtendrás de [[https:// | ||
- | Deberás: | ||
- | * Probar con varias funciones de activación en las capas ocultas para ver cual es la mejor. | ||
- | * Elegir adecuadamente la función de activación de la capa de salida | ||
- | ==== Ejercicio 10.E ==== | + | ==== Ejercicio 10 ==== |
- | Crea y entrena una red neuronal con los datos de las flores pero ahora ya deberás tener en cuenta los 3 tipos de flor. | + | Crea y entrena una red neuronal que averigüe |
- | + | ||
- | Deberás: | + | |
- | * Probar con varias funciones de activación en las capas ocultas para ver cual es la mejor. | + | |
- | * Elegir adecuadamente la función de activación de la capa de salida | + | |
- | + | ||
- | ==== Ejercicio 11 ==== | + | |
- | Crea y entrena una red neuronal que averigüe | + | |
<sxh python> | <sxh python> | ||
- | from sklearn.datasets import | + | from sklearn.datasets import |
</ | </ | ||
Línea 1315: | Línea 1384: | ||
^ Nº Neuronas en cada capa ^ | ^ Nº Neuronas en cada capa ^ | ||
- | | 2,4,2,1 | | + | | 2,4,3 | |
- | | 4,8,4,1 | | + | | 4,8,3 | |
- | | 8,16,8,1 | | + | | 8,16,8,3 | |
- | | 4,8,4,2,1 | | + | | 4,8,4,3 | |
- | | 8,16,8,4,1 | | + | | 8,16,8,3 | |
- | | 16,32,16,8,1 | | + | | 16,32,16,8,3 | |
- | | 32,64,32,8,1 | | + | | 32,64,32,8,3 | |
- | | 64, | + | | 64, |
- | | 8, | + | | 8, |
* La colocación de las distintas gráficas serán la siguiente: | * La colocación de las distintas gráficas serán la siguiente: | ||
* En cada columna estarán las gráficas de cada función de activación | * En cada columna estarán las gráficas de cada función de activación | ||
* En cada fila estarán las gráficas de cada arquitectura de red | * En cada fila estarán las gráficas de cada arquitectura de red |