Введение в RNN в Keras

Рекуррентные нейронные сети (RNN) для языкового моделирования с Keras

David Cecchini

Data Scientist

Что такое Keras?

  • Высокоуровневый API

  • Работает поверх TensorFlow 2

  • Прост в установке и использовании

$pip install tensorflow

Быстрое прототипирование:

from tensorflow import keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense
Рекуррентные нейронные сети (RNN) для языкового моделирования с Keras

keras.models

keras.models.Sequential

Общее представление класса Sequential в keras. Слои добавляются последовательно от входа к выходу.

keras.models.Model

Общее представление класса Model в keras. Этот класс поддерживает несколько входов и выходов, что позволяет строить более сложные архитектуры.

Рекуррентные нейронные сети (RNN) для языкового моделирования с Keras

keras.layers

  1. LSTM
  2. GRU
  3. Dense
  4. Dropout
  5. Embedding
  6. Bidirectional
Рекуррентные нейронные сети (RNN) для языкового моделирования с Keras

keras.preprocessing

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

Пример дополнения текстов до заданной длины. Если текст короче заданного размера, в начало добавляется токен «0»; если длиннее — последние слова обрезаются.

Рекуррентные нейронные сети (RNN) для языкового моделирования с Keras

keras.datasets

Множество полезных наборов данных

  • Рецензии на фильмы IMDB
  • Новостная лента Reuters

И многое другое!

Полный список и примеры использования — в документации Keras

Рекуррентные нейронные сети (RNN) для языкового моделирования с Keras

Создание модели

# 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'])
Рекуррентные нейронные сети (RNN) для языкового моделирования с Keras

Обучение модели

Метод .fit() обучает модель на обучающей выборке

model.fit(X_train, y_train, epochs=10, batch_size=32)
  1. epochs — количество обновлений весов модели
  2. batch_size — размер пакета данных на каждом шаге
Рекуррентные нейронные сети (RNN) для языкового моделирования с Keras

Оценка и применение модели

Оценка модели:

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

Получение предсказаний на новых данных:

model.predict(new_data)
array([[0.91483957],[0.47130653]], dtype=float32)
Рекуррентные нейронные сети (RNN) для языкового моделирования с Keras

Полный пример: классификация тональности отзывов 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)
Рекуррентные нейронные сети (RNN) для языкового моделирования с Keras

Давайте потренируемся!

Рекуррентные нейронные сети (RNN) для языкового моделирования с Keras

Preparing Video For Download...