PyTorch实现Seq2Seq模型详解

Seq2Seq模型介绍以及Pytorch版本代码详解

一、Seq2Seq模型的概述

Seq2Seq是一种循环神经网络的变种,是一种端到端的模型,包括 Encoder编码器和 Decoder解码器部分,在nlp任务中是一种重要的模型,在翻译,文本自动摘要生成和机器人自动问答以及一些回归预测任务上有着广泛的运用。

Seq2Seq其实就是
Encoder-Decoder
结构的网络,它的输入是一个序列,输出也是一个序列。在Encoder编码中,将序列转换成一个固定长度的向量,然后通过Decoder将该向量转换成我们想要的序列输出出来

Encoder和Decoder一般都是RNN,通常为LSTM或者GRU

二、Seq2Seq模型的结构

2.1 模型结构

针对目前

RNN网络

来说常见的任务来分,主要是有三种情况;

(1).

多对多, N vs N

,  包括N个输入和N个输出,输入和输出序列中长度是相等的,适用于词性标注任务和语言模型训练任务

(2).

一对多,   1 vs N,

包括1个输入和N个输出,一般的是输入X传给第一个神经元,或者是同样传递给所有的神经元,适用于,图像生成文字,小说、影视类型 生成相应的小说

(3).

多对一, N vs 1,

有 N 个输入
x
1,
x
2, …,
x
N,和一个
输出
y,适用于,序列分类任务,一段语言,一段文字,情感分析等

**常见的三种RNN结构,对于输入和输出都是有一定长度限制,但是在实际情况中,长度是不固定的,比如,机器翻译中,翻译前后的句子的长度是不一样的,对话系统中,问句和答案的长度也是不一致的,进而 一种新的 RNN结构  Seq2Seq的模型诞生了。包括两个部分,

Encoder**

用于编码序列的信息,将任意长度的序列信息编码到一个向量
c
里。而

Decoder

是解码器,解码器得到上下文信息向量
c
之后可以将信息解码,并输出为序列。Seq2Seq 模型结构有很多种,下面是几种比较常见的:

(1).

(2).

(3).

三种seq2seq的模型结构中的 Encoder 编码层都是一样的,主要的是 Decoder 不一样

2.2  编码器Encoder 和解码器 Decoder

1. 编码器Encoder

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值