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 [2022/04/08 09:33] admin [Recreando la red neuronal] |
clase:iabd:pia:1eval:tema06 [2024/05/15 23:13] (actual) admin [Guardando modelos a disco] |
||
---|---|---|---|
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:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
===== Redes Neuronales Famosas ===== | ===== Redes Neuronales Famosas ===== | ||
Línea 1005: | Línea 1059: | ||
* [[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 1082: | ||
* [[https:// | * [[https:// | ||
* {{ : | * {{ : | ||
- | * | + | * ChatGPT |
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
Línea 1184: | Línea 1255: | ||
Indica además que inicializador usarías con ella | Indica además que inicializador usarías con ella | ||
+ | |||
==== Ejercicio 5.F ==== | ==== Ejercicio 5.F ==== | ||
- | Con los datos de las flores y la configuración de neuronas '' | + | Con los datos de las flores y la configuración de neuronas '' |
- | * Usen la función de activación **Swish** indicando la función de activación como un '' | + | |
- | * Usen la función de activación **Swish** indicando la función de activación como una '' | + | |
- | + | ||
- | + | ||
- | + | ||
- | Indica además que inicializador usarías con ella | + | |
- | + | ||
- | ==== Ejercicio 5.G ==== | + | |
- | Con los datos de las flores y la configuración de neuronas '' | + | |
* Usen la función de activación **tangente hiperbólica** indicando la función de activación como un '' | * Usen la función de activación **tangente hiperbólica** indicando la función de activación como un '' | ||
- | * Usen la función de activación **tangente hiperbólica** indicando la función de activación como una '' | ||
- | * Usen la función de activación **ReLU** indicando la función de activación como un '' | ||
* Usen la función de activación **ReLU** indicando la función de activación como una '' | * Usen la función de activación **ReLU** indicando la función de activación como una '' | ||
- | | + | * Usen la función de activación **LeakyReLU con un valor de α=0.35** indicando la función de activación como una '' |
- | * Usen la función de activación **LeakyReLU** indicando la función de activación como una '' | + | |
- | | + | |
* Usen la función de activación **SELU** indicando la función de activación como un '' | * Usen la función de activación **SELU** indicando la función de activación como un '' | ||
- | | + | * Usen la función de activación **ELU con un valor de α=0.25** |
- | | + | |
- | * Usen la función de activación **Swish** indicando la función de activación como un '' | + | |
- | * Usen la función de activación **Swish** indicando la función de activación como una '' | + | |
- | + | ||
Indica además que inicializador usarías con ella | Indica además que inicializador usarías con ella | ||
Línea 1217: | Línea 1271: | ||
Con los datos del cáncer de mama crea una red neuronal de forma que | Con los datos del cáncer de mama crea una red neuronal de forma que | ||
- | * Tenga 9 capas ocultas y la capa central tenga 20 neuronas (antes y después habrá menos neuronas) | + | * Tenga las siguientes |
- | * Se entrenará durante | + | * Se entrenará durante |
- | * En las capas ocultas se usará la función de activación | + | * En las capas ocultas se usará la función de activación |
- | * Obtén el valor de '' | + | * Haz 3 gráficas con la función |
- | * '' | + | * '' |
* '' | * '' | ||
+ | * '' | ||
¿Que dice la teoría de cual se debería haber usado? ¿Ha habido alguna diferencia? | ¿Que dice la teoría de cual se debería haber usado? ¿Ha habido alguna diferencia? | ||
==== Ejercicio 6.B ==== | ==== Ejercicio 6.B ==== | ||
- | Con los datos del cáncer de mama crea una red neuronal de forma que: | + | Repita el ejercicio anterior pero ahora con las siguientes capas: |
- | * Tenga 30 capas ocultas y la capa central tenga 40 neuronas (antes y después habrá menos neuronas) | + | '' |
- | * Se entrenará durante | + | |
- | * En las capas ocultas se usará la función de activación ReLU | + | |
- | * Obtén el valor de '' | + | |
- | * '' | + | |
- | * '' | + | |
¿Que dice la teoría de cual se debería haber usado? ¿Ha habido alguna diferencia? | ¿Que dice la teoría de cual se debería haber usado? ¿Ha habido alguna diferencia? | ||
==== Ejercicio 7 ==== | ==== Ejercicio 7 ==== | ||
- | Con los datos del cáncer de mama crea una red neuronal variando cada vez la función de activación | + | Con los datos del cáncer de mama crea una red neuronal |
* sigmoid | * sigmoid | ||
Línea 1247: | Línea 1297: | ||
* ELU | * ELU | ||
* SELU | * SELU | ||
- | * GELU | ||
- | * Swish | ||
- | Deberás mostrar un subplot con el '' | + | Responde: |
- | * ¿Cuales convergen antes? | ||
* ¿Cuales son las que dan un mejor resultado? | * ¿Cuales son las que dan un mejor resultado? | ||
Línea 1274: | Línea 1321: | ||
* La función de activación que usarías en la última capa | * La función de activación que usarías en la última capa | ||
* El Nº de neuronas de la última capa | * El Nº de neuronas de la última capa | ||
- | * Crea dicha última capa en Keras | ||
==== Ejercicio 9.A ==== | ==== Ejercicio 9.A ==== | ||
- | Usando | + | 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. |
- | {{ :clase: | + | 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 ==== | ==== Ejercicio 9.B ==== | ||
- | Usando las funciones de activación | + | Crea y entrena una red neuronal |
- | {{ : | ||
- | |||
- | ==== Ejercicio 10.A ==== | ||
- | Crea y entrena una red neuronal que averigüe si un paciente tendrá diabetes. Los datos los obtendrás con la función '' | ||
<sxh python> | <sxh python> | ||
- | from sklearn.datasets import | + | from sklearn.datasets import |
</ | </ | ||
Línea 1296: | Línea 1341: | ||
* 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 1308: | Línea 1354: | ||
* 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 1320: | Línea 1368: | ||
* 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 | + | Crea y entrena una red neuronal |
- | + | ||
- | 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.F ==== | + | |
- | 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. La diferencia con el anterior ejercicio es que no vas a probar en todas las capas ocultas con la misma capa de activación. Sino que cda red tendrá mezcladas distintas funciones de activación. | + | |
- | * Elegir adecuadamente la función de activación de la capa de salida | + | |
- | + | ||
- | ==== Ejercicio 10.G ==== | + | |
- | Crea y entrena una red neuronal que averigüe si un paciente tendrá diabetes. Los datos los obtendrás con la función '' | + | |
<sxh python> | <sxh python> | ||
- | from sklearn.datasets import | + | from sklearn.datasets import |
</ | </ | ||
Línea 1356: | Línea 1386: | ||
^ 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 |