[自然语言处理]RNN
1 传统RNN模型与LSTM

import torch
import torch.nn as nntorch.manual_seed(6)# todo:基础RNN模型
def dem01():'''参数1:input_size 每个词的词向量维度(输入层神经元的个数)参数2:hidden_size 隐藏层神经元的个数参数3:hidden_layer 隐藏层的层数'''rnn = nn.RNN(5, 6, 1)'''参数1:sequence_length 每个样本的句子长度参数2:batch_size 每个批次的样本数量参数3:input_size 每个词的词向量维度(输入层神经元的个数)'''input = torch.randn(1, 3, 5)'''参数1:hidden_layer 隐藏层的层数参数2:batch_size 每个批次的样本数量参数3:hidden_size 隐藏层神经元的个数'''h0 = torch.randn(1, 3, 6)output, hn = rnn(input, h0)print(f'output {output}')print(f'hn {hn}')print(f'RNN模型 {rnn}')# todo:增加输入的sequence_length
def dem02():'''参数1:input_size 每个词的词向量维度(输入层神经元的个数)参数2:hidden_size 隐藏层神经元的个数参数3:hidden_layer 隐藏层的层数'''rnn = nn.RNN(5, 6, 1)'''参数1:sequence_length 每个样本的句子长度参数2:batch_size 每个批次的样本数量参数3:input_size 每个词的词向量维度(输入层神经元的个数)'''input = torch.randn(4, 3, 5)'''参数1:hidden_layer 隐藏层的层数参数2:batch_size 每个批次的样本数量参数3:hidden_size 隐藏层神经元的个数'''h0 = torch.randn(1, 3, 6)output, hn = rnn(input, h0)print(f'output {output}')print(f'hn {hn}')print(f'RNN模型 {rnn}')# todo:增加隐藏层的个数
def dem03():'''参数1:input_size 每个词的词向量维度(输入层神经元的个数)参数2:hidden_size 隐藏层神经元的个数参数3:hidden_layer 隐藏层的层数'''rnn = nn.RNN(5, 6, 2)'''参数1:sequence_length 每个样本的句子长度参数2:batch_size 每个批次的样本数量参数3:input_size 每个词的词向量维度(输入层神经元的个数)'''input = torch.randn(4, 3, 5)'''参数1:hidden_layer 隐藏层的层数参数2:batch_size 每个批次的样本数量参数3:hidden_size 隐藏层神经元的个数'''h0 = torch.randn(2, 3, 6)output, hn = rnn(input, h0)print(f'output {output}')print(f'hn {hn}')print(f'RNN模型 {rnn}')# todo:一个一个地向模型输入单词-全零初始化
def dem04_1():'''参数1:input_size 每个词的词向量维度(输入层神经元的个数)参数2:hidden_size 隐藏层神经元的个数参数3:hidden_layer 隐藏层的层数'''rnn = nn.RNN(5, 6, 1)'''参数1:sequence_length 每个样本的句子长度参数2:batch_size 每个批次的样本数量参数3:input_size 每个词的词向量维度(输入层神经元的个数)'''input = torch.randn(4, 1, 5)print(f'input {input}')'''参数1:hidden_layer 隐藏层的层数参数2:batch_size 每个批次的样本数量参数3:hidden_size 隐藏层神经元的个数'''# 每个样本一次性输入神经网络hn = torch.zeros(1, 1, 6)print(f'hn1 {hn}')output, hn = rnn(input, hn)print(f'output1 {output}')print(f'hn1 {hn}')print(f'RNN模型1 {rnn}')print('*' * 80)# 每个样本逐词送入神经网络hn = torch.zeros(1, 1, 6)print(f'hn2 {hn}')for i in range(4):tmp = input[i][0]print(f'tmp.shape {tmp.shape}')output, hn = rnn(tmp.unsqueeze(0).unsqueeze(0), hn)print(f'{i}-output {output}')print(f'{i}-hn {hn}')# todo:一个一个地向模型输入单词-全一初始化
def dem04_2():'''参数1:input_size 每个词的词向量维度(输入层神经元的个数)参数2:hidden_size 隐藏层神经元的个数参数3:hidden_layer 隐藏层的层数'''rnn = nn.RNN(5, 6, 1)'''参数1:sequence_length 每个样本的句子长度参数2:batch_size 每个批次的样本数量参数3:input_size 每个词的词向量维度(输入层神经元的个数)'''input = torch.randn(4, 1, 5)print(f'input {input}')'''参数1:hidden_layer 隐藏层的层数参数2:batch_size 每个批次的样本数量参数3:hidden_size 隐藏层神经元的个数'''# 每个样本一次性输入神经网络hn = torch.ones(1, 1, 6)print(f'hn1 {hn}')output, hn = rnn(input, hn)print(f'output1 {output}')print(f'hn1 {hn}')print(f'RNN模型1 {rnn}')print('*' * 80)# 每个样本逐词送入神经网络hn = torch.ones(1, 1, 6)print(f'hn2 {hn}')for i in range(4):tmp = input[i][0]print(f'tmp.shape {tmp.shape}')output, hn = rnn(tmp.unsqueeze(0).unsqueeze(0), hn)print(f'{i}-output {output}')print(f'{i}-hn {hn}')# todo:一个一个地向模型输入单词-随机初始化
def dem04_3():'''参数1:input_size 每个词的词向量维度(输入层神经元的个数)参数2:hidden_size 隐藏层神经元的个数参数3:hidden_layer 隐藏层的层数'''rnn = nn.RNN(5, 6, 1)'''参数1:sequence_length 每个样本的句子长度参数2:batch_size 每个批次的样本数量参数3:input_size 每个词的词向量维度(输入层神经元的个数)'''input = torch.randn(4, 1, 5)print(f'input {input}')'''参数1:hidden_layer 隐藏层的层数参数2:batch_size 每个批次的样本数量参数3:hidden_size 隐藏层神经元的个数'''# 每个样本一次性输入神经网络hn = torch.randn(1, 1, 6)print(f'hn1 {hn}')output, hn = rnn(input, hn)print(f'output1 {output}')print(f'hn1 {hn}')print(f'RNN模型1 {rnn}')print('*' * 80)# 每个样本逐词送入神经网络hn = torch.randn(1, 1, 6)print(f'hn2 {hn}')for i in range(4):tmp = input[i][0]print(f'tmp.shape {tmp.shape}')output, hn = rnn(tmp.unsqueeze(0).unsqueeze(0), hn)print(f'{i}-output {output}')print(f'{i}-hn {hn}')# todo:设置batch_first=True
def dem05():'''参数1:input_size 每个词的词向量维度(输入层神经元的个数)参数2:hidden_size 隐藏层神经元的个数参数3:hidden_layer 隐藏层的层数'''rnn = nn.RNN(5, 6, 1, batch_first=True)'''参数1:batch_size 每个批次的样本数量参数2:sequence_length 每个样本的句子长度参数3:input_size 每个词的词向量维度(输入层神经元的个数)'''input = torch.randn(3, 4, 5)'''参数1:hidden_layer 隐藏层的层数参数2:batch_size 每个批次的样本数量参数3:hidden_size 隐藏层神经元的个数'''h0 = torch.randn(1, 3, 6)output, hn = rnn(input, h0)print(f'output {output}')print(f'hn {hn}')print(f'RNN模型 {rnn}')# todo:基础LSTM模型
def dem06_1():'''参数1:input_size 每个词的词向量维度(输入层神经元的个数)参数2:hidden_size 隐藏层神经元的个数参数3:hidden_layer 隐藏层的层数'''rnn = nn.LSTM(5, 6, 2)'''参数1:batch_size 每个批次的样本数量参数2:sequence_length 每个样本的句子长度参数3:input_size 每个词的词向量维度(输入层神经元的个数)'''input = torch.randn(1, 3, 5)'''参数1:hidden_layer 隐藏层的层数参数2:batch_size 每个批次的样本数量参数3:hidden_size 隐藏层神经元的个数'''h0 = torch.randn(2, 3, 6)'''参数1:hidden_layer 隐藏层的层数参数2:batch_size 每个批次的样本数量参数3:hidden_size 隐藏层神经元的个数'''c0 = torch.randn(2, 3, 6)output, (hn, cn) = rnn(input, (h0, c0))print(f'output {output}')print(f'hn {hn}')print(f'cn {cn}')# todo:双向LSTM模型
def dem06_2():'''参数1:input_size 每个词的词向量维度(输入层神经元的个数)参数2:hidden_size 隐藏层神经元的个数参数3:hidden_layer 隐藏层的层数'''rnn = nn.LSTM(5, 6, 2,bidirectional=True)'''参数1:batch_size 每个批次的样本数量参数2:sequence_length 每个样本的句子长度参数3:input_size 每个词的词向量维度(输入层神经元的个数)'''input = torch.randn(1, 3, 5)'''参数1:hidden_layer 隐藏层的层数参数2:batch_size 每个批次的样本数量参数3:hidden_size 隐藏层神经元的个数'''h0 = torch.randn(4, 3, 6)'''参数1:hidden_layer 隐藏层的层数参数2:batch_size 每个批次的样本数量参数3:hidden_size 隐藏层神经元的个数'''c0 = torch.randn(4, 3, 6)output, (hn, cn) = rnn(input, (h0, c0))print(f'output {output}')print(f'hn {hn}')print(f'cn {cn}')if __name__ == '__main__':# dem01()# dem02()# dem03()# dem04_1()# dem04_2()# dem04_3()# dem05()# dem06_1()dem06_2()
D:\nlplearning\nlpbase\python.exe D:\nlpcoding\rnncode.py
output tensor([[[ 0.0207, -0.1121, -0.0706, 0.1167, -0.3322, -0.0686],[ 0.1256, 0.1328, 0.2361, 0.2237, -0.0203, -0.2709],[-0.2668, -0.2721, -0.2168, 0.4734, 0.2420, 0.0349]]],grad_fn=<MkldnnRnnLayerBackward0>)
hn tensor([[[ 0.1501, -0.2106, 0.0213, 0.1309, 0.3074, -0.2038],[ 0.3639, -0.0394, -0.1912, 0.1282, 0.0369, -0.1094],[ 0.1217, -0.0517, 0.1884, -0.1100, -0.5018, -0.4512]],[[ 0.0207, -0.1121, -0.0706, 0.1167, -0.3322, -0.0686],[ 0.1256, 0.1328, 0.2361, 0.2237, -0.0203, -0.2709],[-0.2668, -0.2721, -0.2168, 0.4734, 0.2420, 0.0349]]],grad_fn=<StackBackward0>)
cn tensor([[[ 0.2791, -0.7362, 0.0501, 0.2612, 0.4655, -0.2338],[ 0.7902, -0.0920, -0.4955, 0.3865, 0.0868, -0.1612],[ 0.2312, -0.3736, 0.4033, -0.1386, -1.0151, -0.5971]],[[ 0.0441, -0.2279, -0.1483, 0.3397, -0.5597, -0.4339],[ 0.2154, 0.4119, 0.4723, 0.4731, -0.0284, -1.1095],[-0.5016, -0.5146, -0.4286, 1.5299, 0.5992, 0.1224]]],grad_fn=<StackBackward0>)Process finished with exit code 0
2 GRU
import torch
import torch.nn as nn# todo:基础GRU
def dem01():gru = nn.GRU(5, 6, 1)input = torch.randn(4, 3, 5)h0 = torch.randn(1, 3, 6)output, hn = gru(input, h0)print(f'output {output}')print(f'hn {hn}')if __name__ == '__main__':dem01()
相关文章:
[自然语言处理]RNN
1 传统RNN模型与LSTM import torch import torch.nn as nntorch.manual_seed(6)# todo:基础RNN模型 def dem01():参数1:input_size 每个词的词向量维度(输入层神经元的个数)参数2:hidden_size 隐藏层神经元的个数参数3:…...
MySQL(B站CodeWithMosh)——2024.10.11(14)
ZZZZZZ目的ZZZZZZ代码ZZZZZZ重点ZZZZZZ操作(非代码,需要自己手动) 8- CASE运算符The CASE Operator_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1UE41147KC?p62&vd_sourceeaeec77dfceb13d96cce76cc299fdd08 在sql_store中&am…...
Transformer的预训练模型
Transformer的预训练模型有很多,其中一些在自然语言处理(NLP)和计算机视觉等领域取得了巨大成功。以下是一些主要的Transformer预训练模型: 1. BERT (Bidirectional Encoder Representations from Transformers) 简介: BERT 是谷歌推出的双向Transformer模型,专注于编码器…...
手撕单例模式
在Go语言中实现单例模式,通常需要确保一个类只有一个实例,并且提供一个全局访问点。Go语言本身没有类的概念,但可以通过结构体和函数来模拟这种行为。下面是一个简单的手撕单例模式的实现示例: 懒汉式(延迟初始化&…...
UE4 材质学习笔记06(布料着色器/体积冰着色器)
一.布料着色器 要编写一个着色器首先是看一些参考图片,我们需要找出一些布料特有的特征,下面是一个棉织物,可以看到布料边缘的纤维可以捕捉光线使得边缘看起来更亮 下面是缎子和丝绸的图片,与棉织物有几乎相反的效果,…...
人工智能学习框架
人工智能学习框架是指用于开发和训练机器学习和深度学习模型的软件库和工具集。这些框架帮助开发者更高效地构建、训练和部署模型,加速人工智能应用的开发进程。 常见的人工智能学习框架 TensorFlow 由Google开发,是一个开源的深度学习框架,…...
GEE 教程:Landsat TOA数据计算地表温度(LST)
目录 简介 函数 expression(expression, map) Arguments: Returns: Image reduceRegion(reducer, geometry, scale, crs, crsTransform, bestEffort, maxPixels, tileScale) Arguments: Returns: Dictionary 代码 结果 简介 地表温度(Land Surface Temperature,LS…...
Web编程---配置Tomcat
文章目录 一、目的二、原理三、过程1. 解压“apache-tomcat-10.0.27-windows-x64.zip”文件到指定文件夹。2. 配置环境变量3.修改编码方式,防止 Tomcat 控制台出现乱码。4.启动 Tmocat5.打开浏览器,地址栏输入 http://localhost:8080 ,如果看…...
物联网5G模块WIFI模块调式记录(Pico)
调试环境 MCU:Pico1(无wifi版)5G模块:EC800K(iot专用4g卡)WIFI模块:ESP01s(Esp8266芯片)、DX-WF24开发环境:MacBook Pro Sonoma 14.5开发工具:Th…...
中国平安蝉联2024“金融业先锋30”第一名 获金融业ESG最高五星评级
2024年10月15日,中央广播电视总台正式对外发布《金融业ESG行动报告(2024)》(以下简称"《报告》"),并公布了"中国ESG上市公司金融业先锋30"榜单。中国平安凭借在绿色金融、普惠金融、养…...
[图解]题目解析:财务人员最有可能成为业务执行者的是
1 00:00:00,420 --> 00:00:04,760 接下来,是第3章自测题第1部分的第8题 2 00:00:05,090 --> 00:00:08,120 单选,针对以下研究对象 3 00:00:08,900 --> 00:00:11,530 财务人员最有可能成为业务执行者的是 4 00:00:12,800 --> 00:00:15,280…...
零基础学大模型——大模型技术学习过程梳理
“学习是一个从围观到宏观,从宏观到微观的一个过程” 学习大模型技术也有几个月的时间了,之前的学习一直是东一榔头,西一棒槌,这学一点那学一点,虽然弄的乱七八糟,但对大模型技术也算有了一个初步的认识。…...
匹配全国地址的正则表达式工具类
正则表达式,匹配全国五级地址工具类,可以直接放在项目中使用~ 1级:国 (可忽略不填) 2级:**省、**自治区、**直辖市、**特别行政区、(四个直辖市可忽略不填) 3级:**市、**…...
Notepad++ 使用技巧
notepad 高级“查找模式” 1)两个换行换一行 选中为 “扩展(\n, \r, \t, \0, \x…)” ,查找目标里面可以写上\r\n\r\n,替换为\r\n 2)移除空行 查找目标:\r\n\r\n,替换为…...
《语音识别芯片选型全攻略》
《语音识别芯片选型全攻略》 一、语音识别芯片性能评估(一)主控芯片性能评估(二)接口需求分析(三)可靠性评估(四)生产工艺考量(五)湿敏等级判断 二、语音识别…...
【MySQL】VARCHAR和CHAR的区别?
目录 区别存储方式最大长度存取效率 使用场景参考 在MySQL中,VARCHAR和CHAR是两种常用的字符串数据类型,它们各自有不同的特点和适用场景。下面我将和大家一起了解这两种数据类型的区别及使用场景。 区别 存储方式 CHAR(N):定长存储&#…...
SQL Server日期查询常用语句
一、以下是SQL 日期截取 & SQL Server日期比较日期查询常用语句 select CONVERT(varchar, getdate(), 120 ) 2004-09-12 11:06:08 select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),-,), ,),:,) 20040912110608 select COUNVRT(varchar(12) , getdate…...
java地理方位角度计算
计算方位角度 从一个坐标到另一个坐标的方位角度. GIS地理 方位角,正北作为0度基线,顺时针旋转。 /*** GIS方位角度,正北为0度,顺时针旋转** param lat1 坐标1纬度* param lon1 坐标1经度* param lat2 坐标2纬度* param lon2 坐…...
RabbitMQ service is already present - only updating service parameters
Windows下卸载RabbitMQ之后,然后重新注册RabbitMQ服务的时候,报错以下信息: D:\software\rabbitmq-server-4.0.2\rabbitmq_server-4.0.2\sbin>D:\software\rabbitmq-server-4.0.2\rabbitmq_server-4.0.2\sbin\rabbitmq-service.bat install RabbitMQ service is already …...
贵州网站建设提升可见性的策略
贵州网站建设提升可见性的策略 在数字化时代,网站的可见性对企业的成功至关重要。在贵州,随着互联网的发展,越来越多的企业意识到网站建设的重要性。那么,如何有效提升网站的可见性呢?以下是几个关键策略。 **1. 优化…...
高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...
基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...
C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...
消息队列系统设计与实践全解析
文章目录 🚀 消息队列系统设计与实践全解析🔍 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡💡 权衡决策框架 1.3 运维复杂度评估🔧 运维成本降低策略 🏗️ 二、典型架构设计2.1 分布式事务最终一致…...
32位寻址与64位寻址
32位寻址与64位寻址 32位寻址是什么? 32位寻址是指计算机的CPU、内存或总线系统使用32位二进制数来标识和访问内存中的存储单元(地址),其核心含义与能力如下: 1. 核心定义 地址位宽:CPU或内存控制器用32位…...
算法刷题-回溯
今天给大家分享的还是一道关于dfs回溯的问题,对于这类问题大家还是要多刷和总结,总体难度还是偏大。 对于回溯问题有几个关键点: 1.首先对于这类回溯可以节点可以随机选择的问题,要做mian函数中循环调用dfs(i&#x…...
Linux入门(十五)安装java安装tomcat安装dotnet安装mysql
安装java yum install java-17-openjdk-devel查找安装地址 update-alternatives --config java设置环境变量 vi /etc/profile #在文档后面追加 JAVA_HOME"通过查找安装地址命令显示的路径" #注意一定要加$PATH不然路径就只剩下新加的路径了,系统很多命…...
