1 写在前面

最近抽时间写文章,将自己以前学过的知识总结一下,通过文章记录下来,以后忘记了也可以随时翻阅。

本文主要介绍最基础的seq2seq模型,并尝试使用tensorflow实现。很多朋友都说pytorch很香,所以随后自己有时间也想入门pytorch,尝试写一个pytorch的版本seq2seq。

2 seq2seq模型

图1 seq2seq模型

结合图1,我们介绍下seq2seq模型。seq2seq模型可以分为Encoder和Decoder两部分。在seq2seq模型中,Encoder和Decoder模型用LSTM或者GRU实现。这里的Enconder将原句子编码成一个固定大小的有意义的向量 C,然后将向量C作为Decoder的输入,Decoder对向量C解码,最后输出目标句子。

2.1 Encoder

Encoder是一个LSTM。假设我们的输入是 how are you,输入句子中的每个单词

通过embedding layer (look up table)后得到一个向量
,其中
是词向量的维度。在我们的例子中,我们的输入句子是how are you,因此我们得到的输入向量是
。然后我们只需在这个向量序列上运行一个LSTM(在seq2seq的原始论文中,作者在实验中使用的是多层LSTM,他们发现,多层LSTM的效果会更好,可以参考图4),并存储LSTM输出的最后一个隐藏状态,最后一个隐藏状态就是我们的encoder编码形成的有意义向量C,在对应到图2中,LSTM的隐藏状态为
,所以C=
图2 Encoder部分模型结构

2.2 Decoder

图3 Decoder部分模型结构

Decoder是另一个LSTM。通过Encoder,我们获得了一个捕获了输入序列意义的 fix-size的向量C。然后我们将向量C作为Decoder的输入,一个字一个字地获取目标序列。对应到图3,我们将encoder representation C作为LSTM的hidden state

,一个特殊的标志符向量
作为输入
,其中<sos>表示(

tart of sentence)。随后LSTM计算下一个隐藏状态

。然后我们使用一个函数
,这里一般就是加一个全连接层作为函数
。然后得到
。随后将softmax应用到s1, 得到标准化的概率表示,即
,其中
。p1中的每个元素
表示选中每个单词的概率,如果法语单词“comment”的概率最大,这样我们就得到单词"comment"的index,然后将单词“comment"的向量
表示作为
,然后
, h1作为下一个LSTM单元的输入,如此进行下去,直到预测的单词是<eos>

seq2seq模型实际就是在给定原句子X的基础上对句子的下一个词的分布建模

下面这一点是Stanford nlp课程中的截图,大家可以看看。

3 tensorflow 实现

本节基于tensorflow实现图4的seq2seq模型,因为seq2seq原论文指出,使用多层LSTM可以达到更好的效果,并且在论文中指出,将原句子反转能获得更好的效果。

图4

4 tensorflow实现

tensorflow实现我写在下一篇文章中吧,不然一篇文章太长会让人看起来不舒服。下面链接是seq2seq的tensorflow实现。

爱罗月:seq2seq之rensorflow实现​zhuanlan.zhihu.com

5 参考文献

https://web.stanford.edu/class/cs224n/slides/cs224n-2019-lecture08-nmt.pdf​web.stanford.eduSeq2Seq with Attention and Beam Search​guillaumegenthial.github.io

写在最后:以上全是个人理解,肯定会有不正确或者不准确之处,大家看出来可以评论指正,我看到就会修改过来。

看到这篇文章的小伙伴,如果觉得对你有用,就为我点个赞吧!

注:本文可以任意转载,转载时请标明作者和出处。

tensorflow lstm 预测_解析seq2seq原理+tensorflow实现相关推荐

  1. tensorflow lstm 预测_图卷积神经网络GCN与递归结构RNN相结合的时间序列预测

    时间序列预测任务可以按照不同的方法执行.最经典的是基于统计和自回归的方法.更准确的是基于增强和集成的算法,我们必须使用滚动周期生成大量有用的手工特性.另一方面,我们可以使用在开发过程中提供更多自由的神 ...

  2. tensorflow图形检测_社交距离检测器——Tensorflow检测模型设计

    在隔离期间,我花时间在github上探索Tensorflow的大量预训练模型.这样做时,我偶然发现了一个包含25 个带有性能和速度指标的预训练对象检测模型的存储库.拥有一些计算机视觉知识并给出了实际的 ...

  3. seq2seq模型_使用Tensorflow搭建一个简单的Seq2Seq翻译模型

    1.背景 首先,这篇博文整理自谷歌开源的神经机器翻译项目Neural Machine Translation (seq2seq) Tutorial.如果你直接克隆这个项目按照Tutorial中的说明操 ...

  4. 利用tensorflow构建LSTM预测单词

    1 导入库 import os import io import re import requests import string import collections import random i ...

  5. tensorflow 多人_使用TensorFlow2.x进行实时多人2D姿势估计

    tensorflow 多人 介绍 (Introduction) As described by Zhe Cao in his 2017 Paper, Realtime multi-person 2D ...

  6. tensorflow LSTM + CTC实现端到端OCR

    最近在做OCR相关的东西,关于OCR真的是有悠久了历史了,最开始用tesseract然而效果总是不理想,其中字符分割真的是个博大精深的问题,那么多年那么多算法,然而应用到实际总是有诸多问题.比如说非等 ...

  7. 时间序列多步预测_使用LSTM深度学习模型进行温度的时间序列单步和多步预测...

    本文的目的是提供代码示例,并解释使用python和TensorFlow建模时间序列数据的思路. 本文展示了如何进行多步预测并在模型中使用多个特征. 本文的简单版本是,使用过去48小时的数据和对未来1小 ...

  8. 用lstm模型做预测_使用LSTM深度学习模型进行温度的时间序列单步和多步预测

    本文的目的是提供代码示例,并解释使用python和TensorFlow建模时间序列数据的思路. 本文展示了如何进行多步预测并在模型中使用多个特征. 本文的简单版本是,使用过去48小时的数据和对未来1小 ...

  9. lstm预测股票_股票相关性与lstm预测误差

    lstm预测股票 When trying to look at examples of LSTMs in Keras, I've found a lot that focus on using the ...

最新文章

  1. ServiceProcessInstaller 类
  2. 用远线程实现文件自删除
  3. 【深度学习】Keras和Tensorflow框架使用区别辨析
  4. RocketMQ的核心概念讲解
  5. android 字符串反转,Golang之字符串操作(反转中英文字符串)
  6. Redis之简单动态字符串sds
  7. msflexgrid允许大选择_特大型矿井提升机结构和布置方式的选择
  8. c语言常用算法分析 微盘,C语言常用算法归纳.pdf
  9. 运用计算机计算电力系统潮流分布时,电力系统【第四章:复杂电力系统潮流分布的计算机算法】...
  10. Python错误重试逼疯多少人?解决办法来了
  11. linux下select/poll/epoll机制的比较
  12. python:random.randint 和 numpy.random.uniform
  13. Linux 知识地图
  14. 通过HTML和CSS制作二级菜单栏
  15. 雷军:《我十年的程序员生涯》系列之一:我的程序人生路
  16. java web 上传图片漏洞_Web安全:文件上传漏洞
  17. 使用Hbuilder封装APP(含配置证书)详细图文教程
  18. 成都榆熙电子商务有限公司:拼多多商家如何剖析用户数据?
  19. java init方法
  20. WinAPI入门: 第一个标准Win32窗口程序 [改进详细注释版]

热门文章

  1. 内容生态变现价值凸显,“长期主义者”触宝驶入快车道
  2. 时代天使点燃口腔赛道,瑞尔集团离下一只“牙茅”还有多远?
  3. 智能家居迈向体验型市场,Aqara如何做到先行一步?
  4. js rsa验签_js rsa sign使用笔记(加密,解密,签名,验签)
  5. ajax 下拉框 保留,Ajax生成select级联下拉框和清空多余选项
  6. centos8更换yum源_基于yum进行linux系统升级--从Centos7升级到Centos8
  7. 计算机学校都有哪些怎么联系方式,计算机应用专业学校联系方式推荐
  8. java sqlserver 2000_谁能救救我啊,关于JAVA连接SQLserver2000
  9. mysql mtq_MySQL基础知识 - osc_r3mtqivi的个人空间 - OSCHINA - 中文开源技术交流社区
  10. python函数的两种嵌套方法