作业4主要是NMT任务。
(1)完成对不同长度的句子的填充操作,使其保持相同长度。(utils.py)文件
def pad_sents(sents, pad_token):
sents_padded = []
### YOUR CODE HERE (~6 Lines)
max_len = len(sents[0])
for sentence in sents[1:] :
flag = len(sentence)
if flag > max_len:
max_len = flag
for sentence in sents:
if len(sentence)< max_len:
for i in range(len(sentence),max_len):
sentence.append(pad_token)
sents_padded.append(sentence)
### END YOUR CODE
return sents_padded
由于它没有给测试,所以自己造个句子测试。
l = [['i','want','hate','you'],['i','think','you','are','bad'],['i','like','you']]
print(pad_sents(l,'0')) #sentence,pad_token
output:
[['i', 'want', 'hate', 'you', '0'], ['i', 'think', 'you', 'are', 'bad'], ['i', 'like', 'you', '0', '0']]
(2)利用nn.embedding结构初始化source和target(model_embeddings.py)文件
class ModelEmbeddings(nn.Module):
def __init__(self, embed_size, vocab):
super(ModelEmbeddings, self).__init__()
self.embed_size = embed_size
# default values
self.source = None
self.target = None
sr

本文详细介绍了一项神经机器翻译(NMT)任务的实现过程,包括句子填充、使用nn.Embedding进行词嵌入初始化、构建包含Bi-LSTM编码器与LSTM解码器的NMT网络结构,并引入了多头注意力机制提升翻译质量。
1万+

被折叠的 条评论
为什么被折叠?



