Wprowadzenie do RNN w Keras

Rekurencyjne sieci neuronowe (RNN) do modelowania języka w Keras

David Cecchini

Data Scientist

Czym jest Keras?

  • API wysokiego poziomu

  • Działa na bazie TensorFlow 2

  • Łatwa instalacja i użycie

$pip install tensorflow

Szybkie eksperymentowanie:

from tensorflow import keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense
Rekurencyjne sieci neuronowe (RNN) do modelowania języka w Keras

keras.models

keras.models.Sequential

Przedstawia ogólną strukturę klasy Sequential modeli Keras. Każda warstwa dodawana jest sekwencyjnie od wejścia do wyjścia.

keras.models.Model

Przedstawia ogólną strukturę klasy Model modeli Keras. Klasa ta obsługuje wiele wejść i wyjść, umożliwiając tworzenie bardziej złożonych architektur.

Rekurencyjne sieci neuronowe (RNN) do modelowania języka w Keras

keras.layers

  1. LSTM
  2. GRU
  3. Dense
  4. Dropout
  5. Embedding
  6. Bidirectional
Rekurencyjne sieci neuronowe (RNN) do modelowania języka w Keras

keras.preprocessing

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

Przykład dopełniania sekwencji tekstowych. Jeśli tekst ma mniej słów niż rozmiar dopełnienia, na początku dodawany jest token "0". Jeśli ma więcej słów, ostatnie wyrazy są odcinane.

Rekurencyjne sieci neuronowe (RNN) do modelowania języka w Keras

keras.datasets

Wiele przydatnych zbiorów danych

  • Recenzje filmów IMDB
  • Newswire Reutersa

I wiele więcej!

Pełna lista i przykłady użycia: dokumentacja keras

Rekurencyjne sieci neuronowe (RNN) do modelowania języka w Keras

Tworzenie 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'])
Rekurencyjne sieci neuronowe (RNN) do modelowania języka w Keras

Trenowanie modelu

Metoda .fit() trenuje model na zbiorze treningowym

model.fit(X_train, y_train, epochs=10, batch_size=32)
  1. epochs określa liczbę aktualizacji wag modelu
  2. batch_size rozmiar danych na każdym kroku
Rekurencyjne sieci neuronowe (RNN) do modelowania języka w Keras

Ewaluacja i użycie modelu

Ewaluacja modelu:

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

Predykcja na nowych danych:

model.predict(new_data)
array([[0.91483957],[0.47130653]], dtype=float32)
Rekurencyjne sieci neuronowe (RNN) do modelowania języka w Keras

Pełny przykład: klasyfikacja sentymentu 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)
Rekurencyjne sieci neuronowe (RNN) do modelowania języka w Keras

Czas na ćwiczenia!

Rekurencyjne sieci neuronowe (RNN) do modelowania języka w Keras

Preparing Video For Download...