【NLP251】NLP RNN 系列网络
NLP251 系列主要记录从NLP基础网络结构到知识图谱的学习
1.原理及网络结构
1.1RNN
在Yoshua Bengio论文中( http://proceedings.mlr.press/v28/pascanu13.pdf )证明了梯度求导的一部分环节是一个指数模型,当n<1时,就会出现“梯度消失"问题,而当η> 1时,“梯度爆炸”也就产生了。
1.2 双向-RNN
两个方向RNN的区别在于输入数据的不同,反向RNN数据是对正向RNN数据的反转
1.3深度双向-RNN
1.4LSTM
LSTM(长短期记忆网络)相较于RNN(循环神经网络)的主要优势如下:
1. 解决长期依赖问题
-
RNN在处理长序列数据时,容易出现梯度消失或梯度爆炸的问题,导致难以捕捉到序列中相隔较远的依赖关系。
-
LSTM通过引入“记忆单元”(Cell State)和门控机制(遗忘门、输入门、输出门),能够有效地学习和保持长期依赖关系。遗忘门可以有选择性地丢弃不再重要的信息,输入门可以添加新的重要信息,输出门则控制信息的输出,从而确保信息在长序列中能够稳定传递。
2. 缓解梯度消失问题
-
RNN在反向传播时,梯度可能会随着序列长度增加而迅速衰减或增大,导致训练困难。
-
LSTM通过门控机制,使得梯度可以直接通过记忆单元流动,减少了梯度在传播过程中的衰减,从而缓解了梯度消失问题。
LSTM怎么控制“细胞状态”?

LSTM变种
变种1 增加“peephole connections”层 ,让门层也接受细胞状态的输入
1.5GRU

总结:RNN与GRU细胞状态信息与输出信息相同,而GRU细胞状态信息可能与输出信息不同 。
2.API接口实现
2.1RNN API调用讲解
RNN返回值为两部分,第一部分是蓝框所示所有时刻 最后一个隐藏层的输出特征向量;
第二分是红色圈所示最后时刻 所有一个隐藏层的输出特征向量;
我们可以通过rnn.named_parameters()来查看详细的中间过程状态shape
rnn = nn.RNN(4, 8, num_layers=2, batch_first=True, bidirectional=True)
for name, param in rnn.named_parameters():print(name, param.shape)
RNN无法保持长时依赖(代码验证):
2.2 LSTM API调用讲解
从网络结构图和代码中不难发现LSTM中ht与output输出相同
中间过程中的32从何而来?
weight_ih_l0 torch.Size([32, 4]) weight_hh_l0 torch.Size([32, 8]) bias_ih_l0 torch.Size([32]) bias_hh_l0 torch.Size([32])
附LSTM代码:
lstm = nn.LSTM(input_size=4, # 每个样本每个时刻输入的向量维度大小hidden_size=16, # 每个样本每个时刻输出的向量维度大小num_layers=1, # RNN的层数,默认为1bias=True, # 内部的线性转换是否添加bias,True表示添加,默认为Truebatch_first=True, # 输入&输出数据的第一维是不是批次样本,True表示是,也就是输出的格式为:[N,T,E]; 默认为False,表示shape格式为[T,N,E]dropout=0, # 针对输出的特征向量中,部分值重新为0的概率/可能性bidirectional=False, # 是否构建双向的RNN,True表示构建,False表示不构建反向RNN;默认为Falseproj_size=0 # 是否针对每个时刻输出的hi进行一个线性转换,0表示不进行转换;>0的值表示会将hi映射(全连接)为proj_size大小的向量
)x = torch.randn(2, 3, 4) # 2个样本,每个样本3个token,每个token对应的向量维度大小为4
# batch_first = True
# output: 所有样本、所有时刻对应的输出特征向量值,shape为: [N,T,?]
# ? = hidden_size * (2 if bidirectional else 1) if proj_size <=0 else proj_size
# ct: 最后一个时刻的状态信息/细胞信息, shape为: [1 * num_layers * (2 if bidirectional else 1), N, hidden_size]
# ht: 最后一个时刻的状态信息/细胞信息, shape为: [1 * num_layers * (2 if bidirectional else 1), N, hidden_size]
output, (ht, ct) = lstm(x)
print(type(output), output.shape)
print(type(ht), ht.shape)
print(type(ct), ct.shape)print(output[:, -1, :])
print(ht)
print(ct)rnn = nn.LSTM(4, 8, batch_first=True, bidirectional=False, num_layers=1)
for name, param in rnn.named_parameters():print(name, param.shape)
2.3 GRU API调用讲解
lstm = nn.GRU(input_size=4, # 每个样本每个时刻输入的向量维度大小hidden_size=16, # 每个样本每个时刻输出的向量维度大小num_layers=1, # RNN的层数,默认为1bias=True, # 内部的线性转换是否添加bias,True表示添加,默认为Truebatch_first=True, # 输入&输出数据的第一维是不是批次样本,True表示是,也就是输出的格式为:[N,T,E]; 默认为False,表示shape格式为[T,N,E]dropout=0, # 针对输出的特征向量中,部分值重新为0的概率/可能性bidirectional=False # 是否构建双向的RNN,True表示构建,False表示不构建反向RNN;默认为False
)# 2个样本,每个样本3个token,每个token对应的向量维度大小为4
x = torch.randn(2, 3, 4)
# batch_first = True
# output: 所有样本、所有时刻对应的输出特征向量值,shape为: [N,T,?]
# **** ? = hidden_size * (2 if bidirectional else 1)
# : 最后一个时刻的状态信息/细胞信息, shape为: [1 * num_layers * (2 if bidirectional else 1), N, hidden_size]
# ct/ht: 最后一个时刻的状态信息/细胞信息, shape为: [1 * num_layers * (2 if bidirectional else 1), N, hidden_size]
output, ct = lstm(x)
print(type(output), output.shape)
print(type(ct), ct.shape)rnn = nn.GRU(4, 8, batch_first=True, bidirectional=False, num_layers=1)
for name, param in rnn.named_parameters():print(name, param.shape)
相关文章:

【NLP251】NLP RNN 系列网络
NLP251 系列主要记录从NLP基础网络结构到知识图谱的学习 1.原理及网络结构 1.1RNN 在Yoshua Bengio论文中( http://proceedings.mlr.press/v28/pascanu13.pdf )证明了梯度求导的一部分环节是一个指数模型…...

【漫话机器学习系列】067.希腊字母(greek letters)-写法、名称、读法和常见用途
希腊字母(Greek Letters) 希腊字母在数学、科学、工程学和编程中广泛使用,常用于表示变量、常量、参数、角度等。以下是希腊字母的完整列表及其常见用途。 大写与小写希腊字母表 大写小写名称(英文)名称(…...
2.文件IO
2.文件IO **1. 文件I/O概述****2. 文件I/O函数接口****3. 文件定位****4. 文件描述符与文件流指针的转换****5. 文件I/O与标准I/O的比较****6. 练习与作业****7. 文件I/O与标准I/O的对应关系****8. 其他注意事项****9. 总结** 1. 文件I/O概述 文件I/O:操作系统为了…...

毕业设计--具有车流量检测功能的智能交通灯设计
摘要: 随着21世纪机动车保有量的持续增加,城市交通拥堵已成为一个日益严重的问题。传统的固定绿灯时长方案导致了大量的时间浪费和交通拥堵。为解决这一问题,本文设计了一款智能交通灯系统,利用车流量检测功能和先进的算法实现了…...

【SpringBoot教程】Spring Boot + MySQL + HikariCP 连接池整合教程
🙋大家好!我是毛毛张! 🌈个人首页: 神马都会亿点点的毛毛张 在前面一篇文章中毛毛张介绍了SpringBoot中数据源与数据库连接池相关概念,今天毛毛张要分享的是关于SpringBoot整合HicariCP连接池相关知识点以及底层源码…...

设计模式的艺术-策略模式
行为型模式的名称、定义、学习难度和使用频率如下表所示: 1.如何理解策略模式 在策略模式中,可以定义一些独立的类来封装不同的算法,每个类封装一种具体的算法。在这里,每个封装算法的类都可以称之为一种策略(Strategy…...

【memgpt】letta 课程1/2:从头实现一个自我编辑、记忆和多步骤推理的代理
llms-as-operating-systems-agent-memory llms-as-operating-systems-agent-memory内存 操作系统的内存管理...
动态规划DP 最长上升子序列模型 合唱队形(题目分析+C++完整代码)
概览检索 动态规划DP 最长上升子序列模型 合唱队形 原题链接 AcWiing 482. 合唱队形 题目描述 N位同学站成一排,音乐老师要请其中的 (N−K)位同学出列,使得剩下的 K位同学排成合唱队形。 合唱队形是指这样的一种队形:设 K位同学从左到右…...
【踩坑】解决Hugging-face下载问题
解决Hugging-face下载问题 问题1:couldnt connect to https://huggingface.co问题2:HTTPSConnectionPool(hostcdn-lfs-us-1.hf-mirror.com, port443)设置hf_transfer加快速度 问题3:requests.exceptions.ChunkedEncodingError: (Connection b…...

Spring AI 在微服务中的应用:支持分布式 AI 推理
1. 引言 在现代企业中,微服务架构 已成为开发复杂系统的主流方式,而 AI 模型推理 也越来越多地被集成到业务流程中。如何在分布式微服务架构下高效地集成 Spring AI,使多个服务可以协同完成 AI 任务,并支持分布式 AI 推理&#x…...

5.3.2 软件设计原则
文章目录 抽象模块化信息隐蔽与独立性衡量 软件设计原则:抽象、模块化、信息隐蔽。 抽象 抽象是抽出事物本质的共同特性。过程抽象是指将一个明确定义功能的操作当作单个实体看待。数据抽象是对数据的类型、操作、取值范围进行定义,然后通过这些操作对数…...

java求职学习day20
1 在线考试系统 1.1 软件开发的流程 需求分析文档、概要设计文档、详细设计文档、编码和测试、安装和调试、维护和升级 1.2 软件的需求分析 在线考试系统的主要功能分析如下: ( 1 )学员系统 (1.1)用户模块&…...

Python NumPy(8):NumPy 位运算、NumPy 字符串函数
1 NumPy 位运算 位运算是一种在二进制数字的位级别上进行操作的一类运算,它们直接操作二进制数字的各个位,而不考虑数字的整体值。NumPy 提供了一系列位运算函数,允许对数组中的元素进行逐位操作,这些操作与 Python 的位运算符类似…...
日志2025.1.30
日志2025.1.30 1.简略地做了一下交互系统 public class Interactable : MonoBehaviour { private MeshRenderer renderer; private Material defaultMaterial; public Material highlightMaterial; private void Awake() { renderer GetComponentInChildren<Me…...
实战:如何快速让新网站被百度收录?
本文来自:百万收录网 原文链接:https://www.baiwanshoulu.com/22.html 要让新网站快速被百度收录,可以采取以下实战策略: 一、网站基础优化 网站结构清晰:确保网站的结构简洁清晰,符合百度的抓取规则。主…...

PhotoShop中JSX编辑器安装
1.使用ExtendScript Tookit CC编辑 1.安装 打开CEP Resource链接: CEP-Resources/ExtendScript-Toolkit at master Adobe-CEP/CEP-Resources (github.com) 将文件clone到本地或者下载到本地 点击AdobeExtendScriptToolKit_4_Ls22.exe安装,根据弹出的…...
01-时间与管理
时间与效率 一丶番茄时钟步骤好处 二丶86400s的财富利用时间的方法每天坚持写下一天计划 自我管理体系计划-行动-评价-回顾 一丶番茄时钟 一个计时器 一份任务清单,任务 步骤 每一个25分钟是一个番茄时钟 将工作时间划分为若干个25分钟的工作单元期间只专注于当前任务,遇到…...

MiniMax-01技术报告解读
刚刚MiniMax发布了MiniMax-01,简单测试了效果,感觉不错。于是又把它的技术报告看了一下。这种报告看多了,就会多一个毛病,越来越觉得自己也能搞一个。 这篇文章我觉得最有意思的一句是对数据质量的强调“低质量数据在训练超过两个…...
多头潜在注意力(MLA):让大模型“轻装上阵”的技术革新——从DeepSeek看下一代语言模型的高效之路
多头潜在注意力(MLA):让大模型“轻装上阵”的技术革新 ——从DeepSeek看下一代语言模型的高效之路 大模型的“内存焦虑” 当ChatGPT等大语言模型(LLM)惊艳世界时,很少有人意识到它们背后隐藏的“内存焦虑”…...
哈希表实现
目录 1. 哈希概念 1.1 直接定址法 1.2 哈希冲突 1.3 负载因子 1.4 将关键字转为整型 1.5 哈希函数 1.5.1 除法散列法/除留余数法 1.5.2 乘法散列法 1.5.3 全域散列法 1.5.4 其他方法 1.6 处理哈希冲突 1.6.1 开放定址法 1.6.1.1 线性探测 1.6.1.2 二次探测 1.6.…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...

Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...

LabVIEW双光子成像系统技术
双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...
Caliper 配置文件解析:fisco-bcos.json
config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...