การเปรียบเทียบจำนวนพารามิเตอร์
การแทนค่าแบบ one-hot ไม่ใช่วิธีที่เหมาะสมสำหรับการแทนคำ เนื่องจากเวกเตอร์ที่ได้มีความหนาแน่นต่ำมาก (sparse) ในขณะที่การใช้ layer Embedding จะสร้างการแทนค่าที่หนาแน่นกว่า (dense) แต่ต้องการพารามิเตอร์จำนวนมากในการเรียนรู้
ในแบบฝึกหัดนี้ จะเปรียบเทียบจำนวนพารามิเตอร์ระหว่างโมเดลสองแบบ ได้แก่ แบบที่ใช้ embeddings และแบบที่ใช้ one-hot encoding เพื่อดูความแตกต่าง
โมเดล model_onehot ถูกโหลดไว้ในสภาพแวดล้อมแล้ว พร้อมกับ Sequential, Dense และ GRU จาก keras และพารามิเตอร์ vocabulary_size=80000 กับ sentence_len=200 ก็ถูกโหลดไว้เรียบร้อยแล้วเช่นกัน
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Recurrent Neural Networks (RNNs) สำหรับ Language Modeling ด้วย Keras
คำแนะนำการฝึกหัด
- Import
Embeddinglayer จากkeras.layers - ใน embedding layer ให้ใช้ vocabulary size บวกหนึ่งเป็น input dimension และใช้ sentence size เป็น input length
- Compile โมเดล
- แสดง summary ของโมเดลที่ใช้ embedding
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Import the embedding layer
from tensorflow.keras.layers import ____
# Create a model with embeddings
model = Sequential(name="emb_model")
model.add(Embedding(input_dim=____, output_dim=wordvec_dim, input_length=____, trainable=True))
model.add(GRU(128))
model.add(Dense(1))
model.____(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Print the summaries of the one-hot model
model_onehot.summary()
# Print the summaries of the model with embeddings
model.____