Introduzione alle RNN in Keras

Reti Neurali Ricorrenti (RNN) per il Language Modeling con Keras

David Cecchini

Data Scientist

Che cos’è Keras?

  • API di alto livello

  • Funziona sopra TensorFlow 2

  • Facile da installare e usare

$pip install tensorflow

Sperimentazione rapida:

from tensorflow import keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense
Reti Neurali Ricorrenti (RNN) per il Language Modeling con Keras

keras.models

keras.models.Sequential

Mostra una rappresentazione a grandi linee della classe Sequential di Keras. Ogni layer è aggiunto in sequenza dall’input all’output.

keras.models.Model

Mostra una rappresentazione a grandi linee della classe Model di Keras. Questa classe può avere input e output multipli, permettendo architetture più complesse.

Reti Neurali Ricorrenti (RNN) per il Language Modeling con Keras

keras.layers

  1. LSTM
  2. GRU
  3. Dense
  4. Dropout
  5. Embedding
  6. Bidirectional
Reti Neurali Ricorrenti (RNN) per il Language Modeling con Keras

keras.preprocessing

keras.preprocessing.sequence.pad_sequences(texts, maxlen=3)

Esempio di padding di alcuni testi. Se il testo ha meno parole della dimensione di padding, viene aggiunto uno 0 all’inizio; se ne ha di più, le ultime parole vengono tagliate.

Reti Neurali Ricorrenti (RNN) per il Language Modeling con Keras

keras.datasets

Tanti dataset utili

  • Recensioni IMDB
  • Agenzia Reuters

E altro!

Per l’elenco completo e gli esempi, vedi la documentazione Keras

Reti Neurali Ricorrenti (RNN) per il Language Modeling con Keras

Creare un modello

# Import required modules
from tensorflow import keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
# Instantiate the model class
model = Sequential()
# Add the layers
model.add(Dense(64, activation='relu', input_dim=100))
model.add(Dense(1, activation='sigmoid'))
# Compile the model
model.compile(optimizer='adam', loss='mean_squared_error', metrics=['accuracy'])
Reti Neurali Ricorrenti (RNN) per il Language Modeling con Keras

Addestrare il modello

Il metodo .fit() addestra il modello sul training set

model.fit(X_train, y_train, epochs=10, batch_size=32)
  1. epochs: quante volte si aggiornano i pesi
  2. batch_size: dimensione del lotto a ogni step
Reti Neurali Ricorrenti (RNN) per il Language Modeling con Keras

Valutazione e uso del modello

Valuta il modello:

model.evaluate(X_test, y_test)
[0.3916562925338745, 0.89324]

Fai previsioni su nuovi dati:

model.predict(new_data)
array([[0.91483957],[0.47130653]], dtype=float32)
Reti Neurali Ricorrenti (RNN) per il Language Modeling con Keras

Esempio completo: sentiment IMDB

# Build and compile the model
model = Sequential()

model.add(Embedding(10000, 128)) model.add(LSTM(128, dropout=0.2)) model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Training
model.fit(x_train, y_train, epochs=5)
# Evaluation
score, acc = model.evaluate(x_test, y_test)
Reti Neurali Ricorrenti (RNN) per il Language Modeling con Keras

È il momento di esercitarsi!

Reti Neurali Ricorrenti (RNN) per il Language Modeling con Keras

Preparing Video For Download...