seq2seq模型构建过程 API

encoder步骤:Encoder:input_sequences ----> (RNN) ----> C(Cell State)

decoder步骤:Decoder:C + 结合时刻i的target ----> (RNN) ----> 预测时刻i+1的target

重点:训练过程decoder部分的输入是target

预测过程区别:decoder的输入是上一时刻的输出

 

chatbot模型流程:

因为是对话,每个词是离散的,所以需要将每个词embedding后,喂给模型,得到的decoder结果一般需要连接一个全连接层(Dense)+softmax来选择输出概率最大的词作为最终结果。只要对输入输出做一个embedding处理就好,源码还用了beam_search算法来解码,也就是先选择几个概率比较大的输出,接着他们解码最后看联合概率,选择输出序列。

还有处理不定长的情况,一般策略是选出最大长度,其他padding为0。

encoder构建

1.预处理

把所有文字存到字典(非常用的用<UNKNOW>表示,并添加<GO>,<EOS>,<PAD>用作启示休止填充符),并构建文字和编号的一一映射;假设问题最多10个词,如果某句话只有8个词,需要补2个<PAD>,答案前后需要添加<GO>和<EOS>指示,假设最多20个词。

拿一个batch(32)来说,inputs的维度是(32,10),targets为(32,20)

2. encoder构建

encoder比较简单,就是一个RNN构建,最后拿出来最后一个cell state作为decoder的初始cell state就行

3. decoder构建

对于decoder,需要分训练过程和预测过程考虑,处理细节上有一定区别。

decoder构建一般需要三个函数:

helper:帮助给decoder在training和inferring不同的过程总提供输入和初始化;

这里主要是训练过程需要的TrainingHelper和预测过程的GreedyEmbeddingHelper

BasicDecoder:实现decoder的一步训练过程

dynamic_decoder:实现整个过程

 


1.tf.contrib.seq2seq.TrainingHelperAPI

2. tf.contrib.seq2seq.BasicDecoder

3. tf.contrib.seq2seq.dynamic_decode

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值