Introductie tot RNN in Keras

Recurrent Neural Networks (RNN's) voor taalmodellen met Keras

David Cecchini

Data Scientist

Wat is keras?

  • High-level API

  • Draait bovenop TensorFlow 2

  • Makkelijk te installeren en te gebruiken

$pip install tensorflow

Snel experimenteren:

from tensorflow import keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense
Recurrent Neural Networks (RNN's) voor taalmodellen met Keras

keras.models

keras.models.Sequential

Toont een macro-weergave van de Sequential-klasse van keras-modellen. Elke laag wordt opeenvolgend toegevoegd van input tot output.

keras.models.Model

Toont een macro-weergave van de Model-klasse van keras-modellen. Deze klasse kan meerdere inputs en outputs hebben, voor complexere architecturen.

Recurrent Neural Networks (RNN's) voor taalmodellen met Keras

keras.layers

  1. LSTM
  2. GRU
  3. Dense
  4. Dropout
  5. Embedding
  6. Bidirectional
Recurrent Neural Networks (RNN's) voor taalmodellen met Keras

keras.preprocessing

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

Voorbeeld van padding van teksten. Als een tekst minder woorden heeft dan de paddinggrootte, wordt een "0"-token aan het begin toegevoegd; heeft hij meer, dan worden de laatste woorden weggelaten.

Recurrent Neural Networks (RNN's) voor taalmodellen met Keras

keras.datasets

Veel handige datasets

  • IMDB-filmbesprekingen
  • Reuters-nieuwsdraden

En meer!

Voor de volledige lijst en voorbeelden: zie de keras-documentatie

Recurrent Neural Networks (RNN's) voor taalmodellen met Keras

Een model maken

# 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'])
Recurrent Neural Networks (RNN's) voor taalmodellen met Keras

Het model trainen

De methode .fit() traint het model op de trainingsset

model.fit(X_train, y_train, epochs=10, batch_size=32)
  1. epochs: hoe vaak de gewichten worden bijgewerkt
  2. batch_size: hoeveelheid data per stap
Recurrent Neural Networks (RNN's) voor taalmodellen met Keras

Model evalueren en gebruiken

Evalueer het model:

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

Voorspel op nieuwe data:

model.predict(new_data)
array([[0.91483957],[0.47130653]], dtype=float32)
Recurrent Neural Networks (RNN's) voor taalmodellen met Keras

Volledig voorbeeld: IMDB-sentimentclassificatie

# 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)
Recurrent Neural Networks (RNN's) voor taalmodellen met Keras

Laten we oefenen!

Recurrent Neural Networks (RNN's) voor taalmodellen met Keras

Preparing Video For Download...