Introduction to RNN ใน Keras

Recurrent Neural Networks (RNNs) สำหรับ Language Modeling ด้วย 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
Recurrent Neural Networks (RNNs) สำหรับ Language Modeling ด้วย Keras

keras.models

keras.models.Sequential

แสดงภาพรวมของ Sequential class ใน keras ทุก layer จะถูกเพิ่มตามลำดับจาก input ไป output

keras.models.Model

แสดงภาพรวมของ Model class ใน keras ซึ่งรองรับหลาย input และหลาย output ทำให้สร้างสถาปัตยกรรมที่ซับซ้อนได้

Recurrent Neural Networks (RNNs) สำหรับ Language Modeling ด้วย Keras

keras.layers

  1. LSTM
  2. GRU
  3. Dense
  4. Dropout
  5. Embedding
  6. Bidirectional
Recurrent Neural Networks (RNNs) สำหรับ Language Modeling ด้วย Keras

keras.preprocessing

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

ตัวอย่างการ padding ข้อความ หากข้อความมีคำน้อยกว่าขนาด padding จะเติม token "0" ไว้ที่ต้นข้อความ และหากมีคำมากกว่า จะตัดคำท้ายออก

Recurrent Neural Networks (RNNs) สำหรับ Language Modeling ด้วย Keras

keras.datasets

ชุดข้อมูลที่มีประโยชน์หลายชุด

  • รีวิวภาพยนตร์ IMDB
  • ข่าว Reuters

และอื่นๆ อีกมาก!

ดูรายการทั้งหมดและตัวอย่างการใช้งานได้ที่ เอกสาร keras

Recurrent Neural Networks (RNNs) สำหรับ Language Modeling ด้วย 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'])
Recurrent Neural Networks (RNNs) สำหรับ Language Modeling ด้วย Keras

การฝึกโมเดล

เมธอด .fit() ใช้ฝึกโมเดลบนชุดข้อมูล training

model.fit(X_train, y_train, epochs=10, batch_size=32)
  1. epochs กำหนดจำนวนครั้งที่จะอัปเดต weight ของโมเดล
  2. batch_size ขนาดของข้อมูลในแต่ละ step
Recurrent Neural Networks (RNNs) สำหรับ Language Modeling ด้วย Keras

การประเมินและใช้งานโมเดล

ประเมินโมเดล:

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

ทำนายผลบนข้อมูลใหม่:

model.predict(new_data)
array([[0.91483957],[0.47130653]], dtype=float32)
Recurrent Neural Networks (RNNs) สำหรับ Language Modeling ด้วย 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)
Recurrent Neural Networks (RNNs) สำหรับ Language Modeling ด้วย Keras

มาฝึกกันเถอะ!

Recurrent Neural Networks (RNNs) สำหรับ Language Modeling ด้วย Keras

Preparing Video For Download...