Conv1D (Convolution 1D) áp dụng bộ lọc trượt trên chuỗi embedding để trích xuất đặc trưng n-gram, rất hiệu quả cho phân loại văn bản.
Định nghĩa mô hình Conv1D
print("Định nghĩa hàm xây dựng Conv1D 1 chiều")
def create_model(vocab_size, num_labels):
model = tf.keras.Sequential([
layers.Embedding(vocab_size, 64, mask_zero=True),
layers.Conv1D(64, 5, padding="valid", activation="relu", strides=2),
layers.GlobalMaxPooling1D(),
layers.Dense(num_labels)
])
return model
Kết quả
Định nghĩa hàm xây dựng Conv1D 1 chiều
Giải thích kiến trúc
- Embedding(vocab_size, 64, mask_zero=True): Ánh xạ token index → vector 64-d.
mask_zero=Truebỏ qua padding (index 0) khi tính gradient. - Conv1D(64, 5, strides=2): 64 bộ lọc, kernel size 5 (n-gram 5 từ), stride 2 giảm chiều dài sequence 2 lần.
- GlobalMaxPooling1D(): Lấy giá trị max trên chiều thời gian cho mỗi filter → vector 64-d cố định.
- Dense(num_labels): Lớp phân loại cuối cùng, đầu ra logits cho 4 lớp (python, java, csharp, javascript).
- Sử dụng
Sequential APIđơn giản, dễ đọc, dễ mở rộng.