84. 双向循环神经网络

news/2023/6/6 4:43:52

1. 未来很重要

在这里插入图片描述

  • 取决于过去和未来的上下文,可以填很不一样的词
  • 目前为止RNN只看过去
  • 在填空的时候,我们也可以看未来城

2. 双向RNN

两个隐状态层,并行计算隐状态,但是隐状态传播方向相反。

在这里插入图片描述
公式如下:

在这里插入图片描述

3. 推理

在这里插入图片描述

双向RNN不适合做推理,而是主要对一个句子做特征提取。比如做翻译的时候,给定一个句子去翻译下一个句子,那么给我的句子,我可以双向地去看它。

4. 总结

  • 双向循环神经网络通过反向更新的隐藏层来利用时间信息
  • 通常用来对序列抽取特征、填空,而不是预测未来

5. 双向循环神经网络的错误应用

由于双向循环神经网络使用了过去的和未来的数据, 所以我们不能盲目地将这一语言模型应用于任何预测任务。 尽管模型产出的困惑度是合理的, 该模型预测未来词元的能力却可能存在严重缺陷。 我们用下面的示例代码引以为戒,以防在错误的环境中使用它们。

使用双向RNN,只需要在nn.LSTM中加上一句bidirectional=True

import torch
from torch import nn
from d2l import torch as d2l# 加载数据
batch_size, num_steps, device = 32, 35, d2l.try_gpu()
train_iter, vocab = d2l.load_data_time_machine(batch_size, num_steps)
# 通过设置“bidirective=True”来定义双向LSTM模型
vocab_size, num_hiddens, num_layers = len(vocab), 256, 2
num_inputs = vocab_size
lstm_layer = nn.LSTM(num_inputs, num_hiddens, num_layers, bidirectional=True)
model = d2l.RNNModel(lstm_layer, len(vocab))
model = model.to(device)
# 训练模型
num_epochs, lr = 500, 1
d2l.train_ch8(model, train_iter, vocab, lr, num_epochs, device)

运行结果:

在这里插入图片描述

6. Q&A

Q1:双向RNN,反向的初始hidden state是什么?

A1:是0。从代码上来讲,反向和正向是一样的代码实现。

Q2:LSTM为什么要分C和H?

A2:H的取值是-1到+1,而C的取值比较大,没有数值限制,但是使用激活函数后可以把取值范围限制到-1和+1

Q3: 双向是否可以深度双向?

A3:可以的。并且双向的两个隐藏层是看成一组的,如果要弄得更深,就是弄更多这样的组。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-4558291.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

m3u8视频格式分析

“ 学习m3u8格式。” 一段时间之前,乘着某美女CEO的东风,学习了一个新的数据格式,即m3u8格式。 经过一段时间的沉淀,美女CEO的热潮大概已经褪去,今天才对这个格式进行分析,嘻嘻。 先介绍下来龙去脉&#xf…

软件工程与计算II-13-详细设计中的模块化与信息隐藏

13-详细设计中的模块化与信息隐藏 1. 内聚和耦合 概念重要 内聚:内聚表达的是一个模块内部的联系的紧密型:包括信息内聚、功能内聚、通信内聚、过程内聚、时间内聚、逻辑内聚和偶然内聚。 public class Rous{public static int findPattern(String te…

世界是数字的重点读书笔记(计算机科普知识)

《世界是数字的》是世界顶尖计算机科学家Brian W.Kernighan写的一本计算机科普类读物,简明扼要但又深入全面地解释了计算机和通信系统背后的秘密,适合计算机初学者和非计算机专业的人读。这真的是一本好书,借Google常务董事长的话&#xff1a…

那些你基本够用的 基础数据类型 和 fmt 用法 【说人话的 Golang 小白入门 - EP03】

根据官方教程 https://tour.golang.org/basics/11,Golang 支持以下基础数据类型 (Basic Types) boolstringint int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptrbyte // alias for uint8rune // alias for int32// repre…

FocusBI: 商业智能场景(原创)

关注微信公众号:FocusBI 查看更多文章;加QQ群:808774277 获取学习资料和一起探讨问题。 《商业智能教程》pdf下载地址 链接:https://pan.baidu.com/s/1f9VdZUXztwylkOdFLbcmWw 密码:2r4v 商业智能&#xff08…

js实现Luhn算法(模10算法、校验银行卡)

废话不多说 直接上代码 function testPaycard(payCard) {// 没有传银行卡if (!payCard) {return true;}// 非数字if (isNaN(payCard)) {return false}// 银行卡位数为16或19位if (String(payCard).length ! 16 && String(payCard).length ! 19) {return false}const e…

TF-IDF与余弦相似性的应用(三):自动摘要

有时候,很简单的数学方法,就可以完成很复杂的任务。 这个系列的前两部分就是很好的例子。仅仅依靠统计词频,就能找出关键词和相似文章。虽然它们算不上效果最好的方法,但肯定是最简便易行的方法。今天,依然继续这个主…

Java是如何制作月饼的——制作、下单和售卖

前言 📫作者简介:小明Java问道之路,专注于研究计算机底层/Java/Liunx 内核,就职于大型金融公司后端高级工程师,擅长交易领域的高安全/可用/并发/性能的架构设计📫 🏆 CSDN专家博主/内容合伙人/…