seq2seq顾名思义是指由序列生成序列,广泛用于机器翻译领域,其结构是由RNN组成一组编码器和一组解码器。

上图中的蓝色模块为编码器,其由一个embedding模块实现词到词向量的变换,再加一个GRU多层循环模块生成隐层向量,其结构如下,其是一个双层的GRU循环网络,其输入为单词的one-hot向量,在将全部的单词输入编码器后,将encoder的最终隐层向量输出给decoder模块。

encoder的网络结构由如下paddle代码可以描述:
#@save
class Seq2SeqEncoder(nn.Layer):
"""用于序列到序列学习的循环神经网络编码器"""
def __init__(self, vocab_size, embed_size, num_hiddens, num_layers,
dropout=0, **kwargs):
super(Seq2SeqEncoder, self).__init__(**kwargs)
weight_ih_attr = paddle.ParamAttr(initializer=nn.initializer.XavierUniform())
weight_hh_attr = paddle.ParamAttr(initializer=nn.initializer.XavierUniform())
# 嵌入层

seq2seq模型由编码器和解码器组成,常用于机器翻译。编码器使用GRU将输入序列转换为固定长度的向量,解码器则基于此向量生成目标序列。解码器还包含一个线性层用于输出。损失函数采用带mask的softmax交叉熵,处理不同长度的序列。
最低0.47元/天 解锁文章
647

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



