首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Tensorflow sequence2sequence模型填充

Tensorflow sequence2sequence模型填充
EN

Stack Overflow用户
提问于 2016-02-22 18:57:59
回答 1查看 1.2K关注 0票数 1

在seq2seq模型中,使用垫子使桶中的所有序列具有相同的长度。除此之外,似乎没有对垫子进行特殊处理:

编码器对填充物进行编码,以及基本解码器w/o注意解码使用最后一种编码--编码解码器的填充--注意填充输入的隐藏状态--如果能澄清这一点将是非常有帮助的:实际上,这些填充仅仅是一个特殊的id/嵌入,而当前的seq2seq实现对待它们就像对待其他嵌入一样?并且不需要特殊的机制来忽略这些填充,例如,在编码包含填充的序列时;或者使用基于注意力的解码器解码包含填充的序列?所以在填充之后,对填充没有什么特别的处理,我们可以假装填充只是另一个嵌入(除了使用target_weights进行加权x熵之外)?

如果上述情况属实,那么在测试一个经过训练的模型时,是否需要填充(因为在测试时,每个句子都是单独解码的,而不是成批的)?-从代码看,在测试时,输入语句仍然是先插入后填充的吗?

EN

回答 1

Stack Overflow用户

发布于 2016-06-04 05:47:09

我认为你的基本前提是正确的:模型对填充符号的处理方式与任何其他符号没有区别。然而,当填充数据张量时,填充总是出现在“EOS”符号之后的解码器训练示例的末尾,以及编码器训练示例的开头(因为编码器序列被反转)。

据推测,这个模型将学习到编码器端的填充没有真正的语义信息,因为它不会与任何其他词相关.我想当注意力被考虑进去时,它可以传达一些关于序列长度的信息,但这并不是一件坏事。桶法是一种限制多余填充量的尝试。

在解码器端,模型将很快了解填充总是发生在'EOS‘符号之后,因此您忽略了'EOS’符号发出后的所有内容。

填充主要是有用的,因为当批量运行张量时,当测试一个时间的时候,所有的序列都必须是相同的size...so。但是,在测试大型验证集时,在batches...with填充中运行仍然是有用的。

(我本人对UNK符号还有更多的疑问和担忧。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35561665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档