Professional Documents
Culture Documents
Đề kiểm tra Cuối kỳ NLP
Đề kiểm tra Cuối kỳ NLP
a) b)
Trong đó là hàm sigmoid xt có là vector có chiều dài là dx , ht là vector có chiều dài
là dh. Wi(z), Ui(z), Wi(r), Ui(r), Wi, và Ui là các ma trận trọng số ở lớp i, trong đó ht có chiều
i
dài vector là dh .
a. Anh/chị viết công thức tính đó h2t dựa theo hình a).
~2
ht =( z t ∘h t−1 + ( 1−z t ) ∘ ht )
2
b. Anh/chị hãy tính kích thước của ma trận W2(z), U2(z), W2(r), U2(r), W2, và U2.
x t có độ dài là d x ( x t shape :1∗d x ) W có shape là d x∗1
Câu 2: (3.0 điểm)
Cho bài toán phân loại văn bản với 8 lớp. Tập dữ liệu đã được tiền xử lý. Kích thước từ điển
được tạo ra từ tập dữ liệu là 92547 từ. Cho chiều dài câu dài nhất là 100. Anh/chị hãy:
a. Viết đoạn code sử dụng kỹ thuật word embedding để tạo với kích thước vector từ là
100.
Embedding(input_dim=92547, output_dim = 100,input_length = 100)
b. Viết đoạn code xây dựng kiến trúc mô hình bao gồm 2 lớp tích chập với 128 kernel,
kích thước (5x5), hàm kích hoạt Relu ,1 lớp LSTM gồm 128 cell và 1 lớp GRU gồm
64 cell.
model = Sequential()
model.add(Embedding(92547,100, 100))
model.add(Conv1D(filters=2, kernel_size=128, activation='relu', in
put_shape=(5, 5)))
model.add(LSTM(128, return_sequences=True))
model.add(GRU(64))
model.add(Dense(8, activation='softmax'))
Mẫu: 1a_ĐTTL
model.summary()
b. Giả sử kích thước từ điển được tạo ra là 6749 từ. Chiều dài dài nhất của câu hỏi là 50
từ, Chiều dài dài nhất của câu trả lời là 100 từ. Sử dụng word embedding với kích
thước chiều dài từ là 300. Anh/chị hãy viết đoạn code xây dựng mô hình sequence-to -
sequence cho mô hình trên với encoder có 2 lớp LSTM gồm 128 cell, decoder có 1 lớp
BiLSTM có 64 cell.
class Decoder(tf.keras.Layer):
def __init__(self):
super().__init__()
self.bi_lstm = tf.keras.layers.Bidirectional(tf.keras.laye
rs.LSTM(64, return_sequences = True), merge_mode='concat')
def call(self, emb, enc_output):
x = self.bi_lstm(emb)
x = tf.concat([x, enc_output], axis=1)
return x
class Encoder(tf.keras.Layer):
def __init__(self):
super().__init__()
self.lstm_1 = tf.keras.layers.LSTM(128, return_sequences=T
rue)
self.lstm_2 = tf.keras.layers.LSTM(128, return_sequences=T
rue)
def call(self, emb):
x = self.lstm_1(emb)
x = self.lstm_2(x)
return x
class Seq2seq(tf.keras.Model):
def __init__(self):
super().__int__()
self.ebedding = tf.keras.layers.Embedding(6749, 300)
self.encoder = Encoder()
self.decoder = Decoder()
self.flatten = tf.keras.layers.Flatten()
self.fc = tf.keras.layers.Dense(6749, activation = 'softma
x')
def call(self, x, y):
Mẫu: 1a_ĐTTL
x = self.embedding(x)
y = self.embedding(y)
enc_output = self.encoder(x)
dec_output = self.flatten(y, enc_output)
out = self.flatten(dec_output)
out = self.fc(out)
return out