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

2023-09-18 11:01:36

6、循环神经网络

6.7、深度循环神经网络

6.7.1、理论部分

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

在这里插入图片描述

6.7.2、代码实现

配置超参数

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)
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)

训练&预测

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 t W x h ( f ) + H t − 1 → w h h ( f ) + b h ( f ) ) H^→_t = Φ(X_tW_{xh}^{(f)}+H_{t-1}^→w_{hh}^{(f)}+b_{h}^{(f)}) Ht=Φ(XtWxh(f)+Ht1whh(f)+bh(f))

反向隐状态

H t ← = Φ ( X t W x h ( b ) + H t + 1 ← w h h ( b ) + b h ( b ) ) H_t^← = Φ(X_tW_{xh}^{(b)}+H_{t+1}^←w_{hh}^{(b)}+b_h^{(b)}) Ht=Φ(XtWxh(b)+Ht+1whh(b)+bh(b))

隐状态

两者连接后,得到 H t H_t Ht

输出

O t = H t W h q + b q O_t= H_tW_{hq} +b_q Ot=HtWhq+bq

6.8.2、代码实现

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

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)

将中间表示解码成输出形式。

也会有额外的输入。为啥?

输入一些额外的信息来帮助解码器生成正确的输出序列。这些额外的信息可以是一些上下文信息,例如输入序列的长度、标点符号和语法结构等。

更多推荐

2023年海南省职业院校技能大赛(高职组)信息安全管理与评估赛项规程

2023年海南省职业院校技能大赛(高职组)信息安全管理与评估赛项规程一、赛项名称赛项名称:信息安全管理与评估英文名称:InformationSecurityManagementandEvaluation赛项组别:高等职业教育赛项归属产业:电子与信息大类二、竞赛目标为全面贯彻落实国家网络强国战略,对接新一代信息技术产业,

java中mysql事务嵌套回滚

在Java开发中,MySQL事务嵌套回滚时经常会遇到。本文将介绍如何在Java中处理MySQL事务嵌套回滚的问题。在开始之前,我们需要先了解什么是事务嵌套回滚。当在一个事务中嵌套了其他事务并且其中一个事务回滚时,该事务及其所有嵌套的事务都会被回滚。这可以保持数据的一致性。但是,重要的是,要正确处理异常和回滚。下面是Ja

良好的测试环境应该怎么搭建?对软件产品起到什么作用?

为了确保软件产品的高质量,搭建一个良好的测试环境是至关重要的。在本文中,我们将从多个角度出发,详细描述良好的测试环境的搭建方法、注意事项以及对软件产品的作用。一、软件测试环境的搭建1、从硬件设备的选择与配置开始。对于大型软件产品的测试,建议使用高性能的服务器以及分布式测试平台。在选择服务器时,要考虑产品的特性、测试需求

【结构型】享元模式(Flyweight)

目录享元模式(Flyweight)适用场景享元模式实例代码(Java)享元模式(Flyweight)运用共享技术有效地支持大量细粒度的对象。(业务模型的对象进行细分得到科学合理的更多对象)适用场景一个应用程序使用了大量的对象。完全由于使用大量的对象,造成很大的存储开销。对象的大多数状态都可变为外部状态。如果删除对象的外

【2023集创赛】加速科技杯作品:高光响应的二硫化铼光电探测器

本文为2023年第七届全国大学生集成电路创新创业大赛(“集创赛”)加速科技杯西北赛区二等奖作品分享,参加极术社区的【有奖征集】分享你的2023集创赛作品,秀出作品风采,分享2023集创赛作品扩大影响力,更有丰富电子礼品等你来领!团队介绍参赛单位:西北工业大学队伍名称:噜啦噜啦咧指导老师:李伟参赛队员:程琳,韩笑,尹天乐

苹果手机怎么录屏?1分钟轻松搞定

虽然一直使用苹果手机,但是对它的录屏功能还不是很会使用。苹果手机怎么录屏?录屏可以录制声音吗?麻烦大家教教我!苹果手机为用户提供了十分便捷的内置录屏功能,可以让您随时随地录制手机上的内容。但是很多小伙伴在第一次使用苹果手机时,找不到苹果手机的录屏工具在哪,所以不知道该如何进行录屏。那么,苹果手机怎么录屏呢?下面将给大家

python+nodejs+php+springboot+vue 学生选课程作业提交教学辅助管理系统

二、项目设计目标与原则1、关于课程作业管理系统的基本要求(1)功能要求:可以管理首页、个人中心、公告信息管理、班级管理、学生管理、教师管理、课程类型管理、课程信息管理、学生选课管理、作业布置管理、作业提交管理、作业评分管理、课程评价管理、课程资源管理等功能模块。(2)性能:在不同操作系统上均能无差错实现在不同类型的用户

[答疑]角色和状态的区别

DDD领域驱动设计批评文集“软件方法建模师”不再考查基础题《软件方法》各章合集jeri2023-9-1013:09设备关联角色,设备也有子类(车辆/设备),按书中的解释,设备是一个抽象类,角色类名像是带了状态名的类,如在使用的设备/在维护的设备,设备和这几个角色是关联关系,而且是0.1的关系,潘老师的观点是泛化关系还是

Linux下的网络编程——网络基础、socket编程(一)

前言:前面我们学习了Linux的系统编程,从今天我们就要开始Linux网络编程的学习了,Linux网络编程中的知识点可能没有前面的Linux系统多一点,但是基础的网络知识我们还是需要了解的,并且网络编程中的socket编程的知识也是相当重要的,那么现在我们就开始Linux网络编程的学习吧。目录一、协议1.7层模型和4层

使用Oracle实现完美的不重复随机数(oracle不重复随机数

使用Oracle实现完美的不重复随机数Oracle是一个功能强大的关系型数据库管理系统,它可以实现各种数据库操作和管理。在许多应用程序中,生成随机数是一个非常常见的任务。然而,许多时候,我们需要生成不重复的随机数,以确保数据的完整性和准确性。下面我们将介绍如何使用Oracle实现完美的不重复随机数。生成不重复随机数的方

Linux系统编程——进程间通信的学习

学习参考博文:进程间的五种通信方式介绍Linux信号介绍Linux系统编程学习相关博文Linux系统编程——文件编程的学习Linux系统编程——进程的学习Linux系统编程——线程的学习Linux系统编程——网络编程的学习Linux系统编程——进程间通信的学习一、概述1.无名管道和有名管道的区别2.当打开一个FIFO时

热文推荐