Úvod do RNN v Kerasu

Rekurentní neuronové sítě (RNN) pro jazykové modelování s Keras

David Cecchini

Data Scientist

Co je keras?

  • Vysokoúrovňové API

  • Běží nad TensorFlow 2

  • Snadná instalace a použití

$pip install tensorflow

Rychlé experimentování:

from tensorflow import keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense
Rekurentní neuronové sítě (RNN) pro jazykové modelování s Keras

keras.models

keras.models.Sequential

Zobrazuje zjednodušenou reprezentaci třídy Sequential modelů Kerasu. Každá vrstva je přidávána postupně od vstupu k výstupu.

keras.models.Model

Zobrazuje zjednodušenou reprezentaci třídy Model modelů Kerasu. Tato třída může mít více vstupů i výstupů, což umožňuje komplexnější architektury.

Rekurentní neuronové sítě (RNN) pro jazykové modelování s Keras

keras.layers

  1. LSTM
  2. GRU
  3. Dense
  4. Dropout
  5. Embedding
  6. Bidirectional
Rekurentní neuronové sítě (RNN) pro jazykové modelování s Keras

keras.preprocessing

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

Příklad doplňování textů. Pokud má text méně slov než je velikost doplňování, přidá se na začátek token „0". Pokud má více slov, poslední slova jsou z věty vynechána.

Rekurentní neuronové sítě (RNN) pro jazykové modelování s Keras

keras.datasets

Mnoho užitečných datových sad

  • Recenze filmů IMDB
  • Zpravodajské příspěvky Reuters

A další!

Úplný seznam a příklady použití: dokumentace keras

Rekurentní neuronové sítě (RNN) pro jazykové modelování s Keras

Vytvoření modelu

# 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'])
Rekurentní neuronové sítě (RNN) pro jazykové modelování s Keras

Trénování modelu

Metoda .fit() trénuje model na trénovací sadě

model.fit(X_train, y_train, epochs=10, batch_size=32)
  1. epochs určuje počet aktualizací vah modelu
  2. batch_size velikost dat v každém kroku
Rekurentní neuronové sítě (RNN) pro jazykové modelování s Keras

Vyhodnocení a použití modelu

Vyhodnocení modelu:

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

Predikce na nových datech:

model.predict(new_data)
array([[0.91483957],[0.47130653]], dtype=float32)
Rekurentní neuronové sítě (RNN) pro jazykové modelování s Keras

Celý příklad: klasifikace sentimentu 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)
Rekurentní neuronové sítě (RNN) pro jazykové modelování s Keras

Čas na procvičení!

Rekurentní neuronové sítě (RNN) pro jazykové modelování s Keras

Preparing Video For Download...