Giới thiệu RNN trong Keras

Mạng nơ-ron hồi quy (RNN) cho Mô hình ngôn ngữ với Keras

David Cecchini

Data Scientist

Keras là gì?

  • API cấp cao

  • Chạy trên TensorFlow 2

  • Dễ cài đặt và dùng

$pip install tensorflow

Thử nghiệm nhanh:

from tensorflow import keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense
Mạng nơ-ron hồi quy (RNN) cho Mô hình ngôn ngữ với Keras

keras.models

keras.models.Sequential

Minh họa tổng quát lớp Sequential của mô hình keras. Mỗi layer được thêm tuần tự từ đầu vào đến đầu ra.

keras.models.Model

Minh họa tổng quát lớp Model của mô hình keras. Lớp này có thể có nhiều đầu vào và đầu ra, cho phép kiến trúc phức tạp hơn.

Mạng nơ-ron hồi quy (RNN) cho Mô hình ngôn ngữ với Keras

keras.layers

  1. LSTM
  2. GRU
  3. Dense
  4. Dropout
  5. Embedding
  6. Bidirectional
Mạng nơ-ron hồi quy (RNN) cho Mô hình ngôn ngữ với Keras

keras.preprocessing

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

Ví dụ padding văn bản. Nếu văn bản ít từ hơn kích thước padding, token "0" sẽ được thêm ở đầu; nếu nhiều hơn, các từ cuối sẽ bị cắt.

Mạng nơ-ron hồi quy (RNN) cho Mô hình ngôn ngữ với Keras

keras.datasets

Nhiều bộ dữ liệu hữu ích

  • Đánh giá phim IMDB
  • Tin tức Reuters

Và còn nữa!

Xem danh sách đầy đủ và ví dụ tại tài liệu keras

Mạng nơ-ron hồi quy (RNN) cho Mô hình ngôn ngữ với Keras

Tạo mô hình

# 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'])
Mạng nơ-ron hồi quy (RNN) cho Mô hình ngôn ngữ với Keras

Huấn luyện mô hình

Phương thức .fit() huấn luyện mô hình trên tập train

model.fit(X_train, y_train, epochs=10, batch_size=32)
  1. epochs: số lần cập nhật trọng số
  2. batch_size: kích thước dữ liệu mỗi bước
Mạng nơ-ron hồi quy (RNN) cho Mô hình ngôn ngữ với Keras

Đánh giá và sử dụng mô hình

Đánh giá mô hình:

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

Dự đoán trên dữ liệu mới:

model.predict(new_data)
array([[0.91483957],[0.47130653]], dtype=float32)
Mạng nơ-ron hồi quy (RNN) cho Mô hình ngôn ngữ với Keras

Ví dụ đầy đủ: Phân loại cảm xúc 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)
Mạng nơ-ron hồi quy (RNN) cho Mô hình ngôn ngữ với Keras

Đến lúc thực hành!

Mạng nơ-ron hồi quy (RNN) cho Mô hình ngôn ngữ với Keras

Preparing Video For Download...