Herramientas de usuario

Herramientas del sitio


clase:iabd:pia:1eval:tema06

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
clase:iabd:pia:1eval:tema06 [2023/02/16 14:59]
admin [Redes Neuronales Famosas]
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 702: Línea 702:
   * Uso en Keras: Sigmoide   * Uso en Keras: Sigmoide
 <sxh python> <sxh python>
-model.add(Dense(3, input_dim=1,activation=tf.keras.activations.sigmoid)) +model.add(Dense(3, activation="sigmoid")) 
-model.add(Dense(3, input_dim=1,activation="sigmoid"))+model.add(Dense(3, activation=tf.keras.activations.sigmoid)) 
 </sxh> </sxh>
  
Línea 709: Línea 710:
  
 <sxh python> <sxh python>
-model.add(Dense(3, input_dim=1,activation=tf.keras.activations.tanh)) +model.add(Dense(3, activation="tanh")) 
-model.add(Dense(3, input_dim=1,activation="tanh"))+model.add(Dense(3, activation=tf.keras.activations.tanh)) 
 </sxh> </sxh>
  
Línea 753: Línea 755:
  
 <sxh python> <sxh python>
-model.add(Dense(3, input_dim=1,activation=tf.keras.activations.relu)) +model.add(Dense(3, activation="relu")) 
-model.add(Dense(3, input_dim=1,activation="relu")) +model.add(Dense(3, activation=tf.keras.activations.relu)) 
-model.add(Dense(3, input_dim=1,activation=tf.keras.layers.ReLU()))+model.add(Dense(3, activation=tf.keras.layers.ReLU()))
 </sxh> </sxh>
  
Línea 761: Línea 763:
  
 <sxh python> <sxh python>
-model.add(Dense(3, input_dim=1,activation=tf.keras.layers.LeakyReLU())) +model.add(Dense(3, activation="LeakyReLU")) 
-model.add(Dense(3, input_dim=1,activation=tf.keras.layers.LeakyReLU(alpha=0.2)))+model.add(Dense(3, activation=tf.keras.layers.LeakyReLU())) 
 +model.add(Dense(3, activation=tf.keras.layers.LeakyReLU(alpha=0.2)))
 </sxh> </sxh>
  
Línea 806: Línea 809:
  
 <sxh python> <sxh python>
-model.add(Dense(3, input_dim=1,activation=tf.keras.activations.elu)) +model.add(Dense(3, activation="elu")) 
-model.add(Dense(3, input_dim=1,activation="elu")) +model.add(Dense(3, activation=tf.keras.activations.elu)) 
-model.add(Dense(3, input_dim=1,activation=tf.keras.layers.ELU(alpha=0.2)))+model.add(Dense(3, activation=tf.keras.layers.ELU(alpha=0.2)))
 </sxh> </sxh>
  
Línea 814: Línea 817:
  
 <sxh python> <sxh python>
-model.add(Dense(3, input_dim=1,activation=tf.keras.activations.selu,kernel_initializer="lecun_normal")) +model.add(Dense(3, activation="selu")) 
-model.add(Dense(3, input_dim=1,activation="selu",kernel_initializer="lecun_normal"))+model.add(Dense(3, activation=tf.keras.activations.selu))
 </sxh> </sxh>
  
Línea 844: Línea 847:
   * Deberíamos empezar siempre probando con ''ReLU'' y ''Leaky ReLU'' ya que son las más rápidas y en general funcionan bien.   * Deberíamos empezar siempre probando con ''ReLU'' y ''Leaky ReLU'' ya que son las más rápidas y en general funcionan bien.
   * Si ''ReLU'' y ''Leaky ReLU'' no dan un resultado lo suficientemente bueno, probar con ''SELU'' o ''ELU''   * Si ''ReLU'' y ''Leaky ReLU'' no dan un resultado lo suficientemente bueno, probar con ''SELU'' o ''ELU''
-  * El último lugar probar con ''GELU''+  * El último lugar probar con ''swish''
   * Nunca deberíamos usar ni ''Sigmoide'' ni ''Tanh'' a menos que no nos quede mas remedio   * Nunca deberíamos usar ni ''Sigmoide'' ni ''Tanh'' a menos que no nos quede mas remedio
  
Línea 872: Línea 875:
  
 {{ :clase:iabd:pia:1eval:funciones_activacion_tipo_lineal.png?direct |}} {{ :clase:iabd:pia:1eval:funciones_activacion_tipo_lineal.png?direct |}}
 +
 +$$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 
 +
 +
 +
 +{{ :clase:iabd:pia:1eval:funciones_activacion_sigmoide.png?direct |}}
 +
 +$$sigmoide(x)=\frac{1}{1+e^{-x}}$$
 +
  
 La función Sigmoide se usa en problemas de clasificación, cuando la salida es una probabilidad entre 0 y 1. Ejemplos de ello: La función Sigmoide se usa en problemas de clasificación, cuando la salida es una probabilidad entre 0 y 1. Ejemplos de ello:
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 //i-esioma// y siendo $x_j$ todas las entradas a todas las neuronas de la capa habiendo $n$ neuronas en la capa. Por lo que $x_i$ corresponde con uno de los valores de $x_j$
  
 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, activation="sigmoid",input_dim=2))
 +model.compile(loss="mse")
 +history=model.fit(x_train,y_train,validation_data=(x_test,y_test),epochs=10,verbose=False)
 +
 +
 +model.save('my_red_neuronal.keras'
 +</sxh>
 +
 +  * Para cargar la red en otro programa
 +
 +<sxh python>
 +model=tf.keras.models.load_model('my_red_neuronal.keras')
 +
 +</sxh>
 +
 +  * Si el modelo al crearse usó funciones personalizadas, se debe usar el parámetro ''custom_objects''. Por ejemplo si se usó la función ''specificity'' se debe cargar:
 +<sxh python>
 +model=tf.keras.models.load_model('my_red_neuronal.keras',custom_objects={"specificity": specificity})
 +</sxh>
  
  
 +Más información:
 +  * [[https://www.tensorflow.org/api_docs/python/tf/keras/saving/save_model|tf.keras.saving.save_model]]
  
 ===== Redes Neuronales Famosas ===== ===== Redes Neuronales Famosas =====
clase/iabd/pia/1eval/tema06.1676555961.txt.gz · Última modificación: 2023/02/16 14:59 por admin