前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >循环神经网络——下篇【深度学习】【PyTorch】【d2l】

循环神经网络——下篇【深度学习】【PyTorch】【d2l】

作者头像
来杯Sherry
发布2023-09-19 10:25:04
3810
发布2023-09-19 10:25:04
举报
文章被收录于专栏:第一专栏第一专栏

6、循环神经网络

6.7、深度循环神经网络

6.7.1、理论部分

设计多个隐藏层,目的是为了获取更多的非线性性。深度循环神经网络需要大量的调参(如学习率和修剪) 来确保合适的收敛,模型的初始化也需要谨慎。

在这里插入图片描述
在这里插入图片描述

6.7.2、代码实现

配置超参数

代码语言:javascript
复制
import torch
from torch import nn
from d2l import torch as d2l

batch_size, num_steps = 32, 35
train_iter, vocab = d2l.load_data_time_machine(batch_size, num_steps)
代码语言:javascript
复制
vocab_size, num_hiddens, num_layers = len(vocab), 256, 2
num_inputs = vocab_size
device = d2l.try_gpu()
lstm_layer = nn.LSTM(num_inputs, num_hiddens, num_layers)
model = d2l.RNNModel(lstm_layer, len(vocab))
model = model.to(device)

训练&预测

代码语言:javascript
复制
num_epochs, lr = 500, 2
d2l.train_ch8(model, train_iter, vocab, lr*1.0, num_epochs, device)

在这里插入图片描述
在这里插入图片描述

6.8、双向循环神经网络

6.8.1、理论部分

适合抽取特征,填空,如:填充缺失的单词、词元注释。

并不适合预测未来,它需要上下文,下文(未来)未知逻辑上讲不通的一个结构。

原理图

在这里插入图片描述
在这里插入图片描述

前向隐状态

H^→_t = Φ(X_tW_{xh}^{(f)}+H_{t-1}^→w_{hh}^{(f)}+b_{h}^{(f)})

反向隐状态

H_t^← = Φ(X_tW_{xh}^{(b)}+H_{t+1}^←w_{hh}^{(b)}+b_h^{(b)})

隐状态

两者连接后,得到

H_t

输出

O_t= H_tW_{hq} +b_q

6.8.2、代码实现

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

代码语言:javascript
复制
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.9、机器翻译

6.9.1、理论部分

将序列从一种语言自动翻译成另一种语言。

神经网络机器翻译方法,强调的是端到端的学习。机器翻译的数据集是由源语言和目标语言的文本序列对组成的。

(待补充。。。)

6.10、编码器解码器架构

6.10.1、理论部分

在这里插入图片描述
在这里插入图片描述

这个架构常用于编码器-解码器架构是一种常用于序列到序列(Seq2Seq)任务的深度学习架构。序列到序列的问题举例:NLP问题(机器翻译、问答系统和文本摘要)。

编码器(Encoder) 将输入形式编码成中间表达形式。 中间表示被称为“编码”或“特征”。 解码器(Decoder) 将中间表示解码成输出形式。 也会有额外的输入。为啥? 输入一些额外的信息来帮助解码器生成正确的输出序列。这些额外的信息可以是一些上下文信息,例如输入序列的长度、标点符号和语法结构等。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 6、循环神经网络
    • 6.7、深度循环神经网络
      • 6.7.1、理论部分
      • 6.7.2、代码实现
    • 6.8、双向循环神经网络
      • 6.8.1、理论部分
      • 6.8.2、代码实现
    • 6.9、机器翻译
      • 6.9.1、理论部分
    • 6.10、编码器解码器架构
      • 6.10.1、理论部分
相关产品与服务
机器翻译
机器翻译(Tencent Machine Translation,TMT)结合了神经机器翻译和统计机器翻译的优点,从大规模双语语料库自动学习翻译知识,实现从源语言文本到目标语言文本的自动翻译,目前可支持十余种语言的互译。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档