Tensores, camadas e autoencoders

Introdução ao Deep Learning com Keras

Miguel Esteban

Data Scientist & Founder

Acessando camadas no Keras

# Acessando a primeira camada de um modelo Keras
first_layer = model.layers[0]

# Imprimindo a camada, sua entrada, saída e 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>]
Introdução ao Deep Learning com Keras

O que são tensores?

# Definindo um tensor de posto 2 (2 dimensões)
T2 = [[1,2,3],
      [4,5,6],
      [7,8,9]]

# Definindo um tensor de posto 3 (3 dimensões) 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]]
Introdução ao Deep Learning com Keras
# Importar o backend do Keras
import tensorflow.keras.backend as K

# Obter os tensores de entrada e saída de uma camada inp = model.layers[0].input out = model.layers[0].output
# Função que mapeia entradas da camada para saídas inp_to_out = K.function([inp], [out])
# Passamos uma entrada e obtemos a saída dessa primeira camada print(inp_to_out([X_train])
# Saídas da primeira camada por amostra em X_train
[array([[0.7, 0],...,[0.1, 0.3]])]
Introdução ao Deep Learning com Keras

Introdução ao Deep Learning com Keras

Autoencoders!

Introdução ao Deep Learning com Keras

Autoencoders!

Introdução ao Deep Learning com Keras

Casos de uso de autoencoder

  • Redução de dimensionalidade:
    • Representação de menor dimensão dos inputs.
  • Remoção de ruído:
    • Se treinado com dados limpos, ruídos irrelevantes são filtrados na reconstrução.
  • Detecção de anomalias:
    • Entradas desconhecidas tendem a ter reconstrução ruim.
  • ...

Introdução ao Deep Learning com Keras

Construindo um autoencoder simples

# Instanciar um modelo sequencial
autoencoder = Sequential()

# Adicionar uma camada oculta com 4 neurônios e entrada de 100 autoencoder.add(Dense(4, input_shape=(100,), activation='relu'))
# Adicionar uma camada de saída com 100 neurônios autoencoder.add(Dense(100, activation='sigmoid'))
# Compilar o modelo com a loss apropriada autoencoder.compile(optimizer='adam', loss='binary_crossentropy')
Introdução ao Deep Learning com Keras

Dividindo em um encoder

# Construindo um modelo separado para codificar entradas
encoder = Sequential()
encoder.add(autoencoder.layers[0])

# Predict retorna as saídas dos quatro neurônios da camada oculta encoder.predict(X_test)
# Quatro números para cada observação em X_test
array([10.0234375, 5.833543, 18.90444, 9.20348],...)
Introdução ao Deep Learning com Keras

Vamos experimentar!

Introdução ao Deep Learning com Keras

Preparing Video For Download...