การซ้อนเลเยอร์ RNN
โมเดล RNN เชิงลึกอาจมีหลายสิบถึงหลายร้อยเลเยอร์ เพื่อให้ได้ผลลัพธ์ที่ดีที่สุด
ในแบบฝึกหัดนี้ จะได้ลองสร้างโมเดล RNN เชิงลึกโดยซ้อนเลเยอร์ของเซลล์ LSTM ต่อกันทีละชั้น
โดยกำหนดอาร์กิวเมนต์ return_sequences เป็น True ในสองเลเยอร์แรก และเป็น False ในเลเยอร์ LSTM สุดท้าย
หากต้องการสร้างโมเดลที่มีเลเยอร์มากขึ้น สามารถเพิ่มเลเยอร์ต่อกันไปเรื่อย ๆ หรือสร้างฟังก์ชันที่ใช้เมธอด .add() ภายใน loop เพื่อเพิ่มหลายเลเยอร์ด้วยโค้ดเพียงไม่กี่บรรทัด
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Recurrent Neural Networks (RNNs) สำหรับ Language Modeling ด้วย Keras
คำแนะนำการฝึกหัด
- นำเข้าเลเยอร์
LSTM - กำหนดให้คืนค่า sequence ในสองเลเยอร์แรก และไม่คืนค่า sequence ในเลเยอร์
LSTMสุดท้าย - โหลดน้ำหนักที่ฝึกไว้ล่วงหน้า
- แสดงค่า loss และ accuracy ที่ได้
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Import the LSTM layer
from tensorflow.keras.layers import ____
# Build model
model = Sequential()
model.add(LSTM(units=128, input_shape=(None, 1), return_sequences=____))
model.add(LSTM(units=128, return_sequences=____))
model.add(LSTM(units=128, return_sequences=____))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Load pre-trained weights
model.____('lstm_stack_model_weights.h5')
____("Loss: %0.04f\nAccuracy: %0.04f" % tuple(model.evaluate(X_test, y_test, verbose=0)))