Introduktion till RNN i Keras

Återkommande neurala nätverk (RNN) för språkmodellering med Keras

David Cecchini

Data Scientist

Vad är Keras?

  • Högnivå-API

  • Körs ovanpå TensorFlow 2

  • Enkelt att installera och använda

$pip install tensorflow

Snabb experimentering:

from tensorflow import keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense
Återkommande neurala nätverk (RNN) för språkmodellering med Keras

keras.models

keras.models.Sequential

Visar en övergripande representation av klassen Sequential i keras-modeller. Varje lager läggs till i sekvens från indata till utdata.

keras.models.Model

Visar en övergripande representation av klassen Model i keras-modeller. Klassen kan ha flera indata och flera utdata, vilket möjliggör mer komplexa arkitekturer.

Återkommande neurala nätverk (RNN) för språkmodellering med Keras

keras.layers

  1. LSTM
  2. GRU
  3. Dense
  4. Dropout
  5. Embedding
  6. Bidirectional
Återkommande neurala nätverk (RNN) för språkmodellering med Keras

keras.preprocessing

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

Exempel på utfyllnad av texter. Om texten har färre ord än utfyllnadsstorleken läggs en "0"-token till i början av texten. Har texten fler ord trunkeras de sista orden.

Återkommande neurala nätverk (RNN) för språkmodellering med Keras

keras.datasets

Många användbara datamängder

  • IMDB-filmrecensioner
  • Reuters nyhetsflöde

Och mer!

För en fullständig lista och användningsexempel, se keras-dokumentationen

Återkommande neurala nätverk (RNN) för språkmodellering med Keras

Skapa en modell

# 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'])
Återkommande neurala nätverk (RNN) för språkmodellering med Keras

Träna modellen

Metoden .fit() tränar modellen på träningsdatan

model.fit(X_train, y_train, epochs=10, batch_size=32)
  1. epochs anger hur många viktuppdateringar som görs på modellen
  2. batch_size storleken på datan i varje steg
Återkommande neurala nätverk (RNN) för språkmodellering med Keras

Modellutvärdering och användning

Utvärdera modellen:

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

Gör prediktioner på ny data:

model.predict(new_data)
array([[0.91483957],[0.47130653]], dtype=float32)
Återkommande neurala nätverk (RNN) för språkmodellering med Keras

Fullständigt exempel: IMDB-sentimentklassificering

# 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)
Återkommande neurala nätverk (RNN) för språkmodellering med Keras

Nu kör vi en övning!

Återkommande neurala nätverk (RNN) för språkmodellering med Keras

Preparing Video For Download...