Tensores, capas y autoencoders

Introducción al Deep Learning con Keras

Miguel Esteban

Data Scientist & Founder

Acceder a capas en Keras

# Acceder a la primera capa de un modelo de Keras
first_layer = model.layers[0]

# Imprimir la capa y sus tensores de entrada, salida y pesos print(first_layer.input) print(first_layer.output) print(first_layer.weights)
<tf.Tensor 'dense_1_input:0' shape=(?, 3) dtype=float32>
<tf.Tensor 'dense_1/Relu:0' shape=(?, 2) dtype=float32>
[<tf.Variable 'dense_1/kernel:0' shape=(3, 2) dtype=float32_ref>,
 <tf.Variable 'dense_1/bias:0' shape=(2,) dtype=float32_ref>]
Introducción al Deep Learning con Keras

¿Qué son los tensores?

# Definir un tensor de rango 2 (2 dimensiones)
T2 = [[1,2,3],
      [4,5,6],
      [7,8,9]]

# Definir un tensor de rango 3 (3 dimensiones) T3 = [[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]]
Introducción al Deep Learning con Keras
# Importar el backend de Keras
import tensorflow.keras.backend as K

# Obtener los tensores de entrada y salida de una capa inp = model.layers[0].input out = model.layers[0].output
# Función que mapea entradas de la capa a salidas inp_to_out = K.function([inp], [out])
# Pasamos una entrada y obtenemos la salida de esa primera capa print(inp_to_out([X_train])
# Salidas de la primera capa por muestra en X_train
[array([[0.7, 0],...,[0.1, 0.3]])]
Introducción al Deep Learning con Keras

Introducción al Deep Learning con Keras

¡Autoencoders!

Introducción al Deep Learning con Keras

¡Autoencoders!

Introducción al Deep Learning con Keras

Casos de uso de autoencoders

  • Reducción de dimensionalidad:
    • Representación de menor dimensión de las entradas.
  • Eliminación de ruido:
    • Si se entrena con datos limpios, el ruido irrelevante se filtra al reconstruir.
  • Detección de anomalías:
    • Se reconstruye mal cuando el modelo recibe entradas no vistas.
  • ...

Introducción al Deep Learning con Keras

Crear un autoencoder sencillo

# Instanciar un modelo secuencial
autoencoder = Sequential()

# Añadir una capa oculta de 4 neuronas y una capa de entrada de 100 autoencoder.add(Dense(4, input_shape=(100,), activation='relu'))
# Añadir una capa de salida de 100 neuronas autoencoder.add(Dense(100, activation='sigmoid'))
# Compila el modelo con la pérdida adecuada autoencoder.compile(optimizer='adam', loss='binary_crossentropy')
Introducción al Deep Learning con Keras

Dividirlo en un encoder

# Construir un modelo aparte para codificar entradas
encoder = Sequential()
encoder.add(autoencoder.layers[0])

# Predict devuelve las salidas de las 4 neuronas ocultas encoder.predict(X_test)
# Cuatro números por observación en X_test
array([10.0234375, 5.833543, 18.90444, 9.20348],...)
Introducción al Deep Learning con Keras

¡Vamos a experimentar!

Introducción al Deep Learning con Keras

Preparing Video For Download...