关键词短语生成的无监督方法05——Encoder-Decoder分析

本文详细介绍了Decoder模型的构建过程,包括target数据处理、Decoder的构造,涉及Embedding、RNN单元、输出层的构建以及训练与预测Decoder的区别。通过对Decoder的深入理解,为后续的模型分析打下基础。
摘要由CSDN通过智能技术生成

2021SC@SDUSC


本周在上一周对Encoder-Decoder模型的数据集和Encoder的构建部分学习的基础上进一步对 Decoder的构建部分展开了学习,整理笔记和代码实操记录如下。

一、Decoder模型构建

在Decoder端,主要完成:

  1. 对target数据进行处理
  2. 构造Decoder

1.target数据处理

target数据有两个作用:

  • 在训练过程中,需要将target序列作为输入传给Decoder端RNN的每个阶段,而不是使用前一阶段预测输出,以此来提升模型的准确性。
  • 需要用target数据来计算模型的loss。

首先需要对target端的数据进行预处理。将target中的序列作为输入给Decoder端的RNN时,序列中的最后一个字母(或单词)实际上是无用的。
在这里插入图片描述

如图,右边的Decoder端,可以看到target序列是[< go >, W, X, Y, Z, < eos >],其中< go >,W,X,Y,Z是每个时间序列上输入给RNN的内容。在此处,< eos >并没有作为输入传递给RNN,因此需要将target中的最后一个字符去掉,同时还需要在前面添加< go >标识,告诉模型这代表一个句子的开始。

使用**tf.strided_slice()**来进行这一步处理。

def process_decoder_input(data, vocab_to_int, batch_size):
    '''
    补充<GO>并移除最后一个字符
    '''
    ending = tf.strided_slice(data,[0, 0],[batch_size, -1], [1, 1])
    decoder_input = tf.concat([tf.fill([batch_size, 1], vocab_to_int['<GO>']), ending], 1)

    return decoder_input

其中tf.fill(dims, v

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值