当前位置: 首页 > news >正文

[自然语言处理]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&#xff1a;input_size 每个词的词向量维度&#xff08;输入层神经元的个数&#xff09;参数2&#xff1a;hidden_size 隐藏层神经元的个数参数3&#xff1a…...

MySQL(B站CodeWithMosh)——2024.10.11(14)

ZZZZZZ目的ZZZZZZ代码ZZZZZZ重点ZZZZZZ操作&#xff08;非代码&#xff0c;需要自己手动&#xff09; 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语言中实现单例模式&#xff0c;通常需要确保一个类只有一个实例&#xff0c;并且提供一个全局访问点。Go语言本身没有类的概念&#xff0c;但可以通过结构体和函数来模拟这种行为。下面是一个简单的手撕单例模式的实现示例&#xff1a; 懒汉式&#xff08;延迟初始化&…...

UE4 材质学习笔记06(布料着色器/体积冰着色器)

一.布料着色器 要编写一个着色器首先是看一些参考图片&#xff0c;我们需要找出一些布料特有的特征&#xff0c;下面是一个棉织物&#xff0c;可以看到布料边缘的纤维可以捕捉光线使得边缘看起来更亮 下面是缎子和丝绸的图片&#xff0c;与棉织物有几乎相反的效果&#xff0c;…...

人工智能学习框架

人工智能学习框架是指用于开发和训练机器学习和深度学习模型的软件库和工具集。这些框架帮助开发者更高效地构建、训练和部署模型&#xff0c;加速人工智能应用的开发进程。 常见的人工智能学习框架 TensorFlow 由Google开发&#xff0c;是一个开源的深度学习框架&#xff0c;…...

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.修改编码方式&#xff0c;防止 Tomcat 控制台出现乱码。4.启动 Tmocat5.打开浏览器&#xff0c;地址栏输入 http://localhost:8080 &#xff0c;如果看…...

物联网5G模块WIFI模块调式记录(Pico)

调试环境 MCU&#xff1a;Pico1&#xff08;无wifi版&#xff09;5G模块&#xff1a;EC800K&#xff08;iot专用4g卡&#xff09;WIFI模块&#xff1a;ESP01s&#xff08;Esp8266芯片&#xff09;、DX-WF24开发环境&#xff1a;MacBook Pro Sonoma 14.5开发工具&#xff1a;Th…...

中国平安蝉联2024“金融业先锋30”第一名 获金融业ESG最高五星评级

2024年10月15日&#xff0c;中央广播电视总台正式对外发布《金融业ESG行动报告&#xff08;2024&#xff09;》&#xff08;以下简称"《报告》"&#xff09;&#xff0c;并公布了"中国ESG上市公司金融业先锋30"榜单。中国平安凭借在绿色金融、普惠金融、养…...

[图解]题目解析:财务人员最有可能成为业务执行者的是

1 00:00:00,420 --> 00:00:04,760 接下来&#xff0c;是第3章自测题第1部分的第8题 2 00:00:05,090 --> 00:00:08,120 单选&#xff0c;针对以下研究对象 3 00:00:08,900 --> 00:00:11,530 财务人员最有可能成为业务执行者的是 4 00:00:12,800 --> 00:00:15,280…...

零基础学大模型——大模型技术学习过程梳理

“学习是一个从围观到宏观&#xff0c;从宏观到微观的一个过程” 学习大模型技术也有几个月的时间了&#xff0c;之前的学习一直是东一榔头&#xff0c;西一棒槌&#xff0c;这学一点那学一点&#xff0c;虽然弄的乱七八糟&#xff0c;但对大模型技术也算有了一个初步的认识。…...

匹配全国地址的正则表达式工具类

正则表达式&#xff0c;匹配全国五级地址工具类&#xff0c;可以直接放在项目中使用~ 1级&#xff1a;国 &#xff08;可忽略不填&#xff09; 2级&#xff1a;**省、**自治区、**直辖市、**特别行政区、&#xff08;四个直辖市可忽略不填&#xff09; 3级&#xff1a;**市、**…...

Notepad++ 使用技巧

notepad 高级“查找模式” 1&#xff09;两个换行换一行 选中为 “扩展&#xff08;\n, \r, \t, \0, \x…&#xff09;” &#xff0c;查找目标里面可以写上\r\n\r\n&#xff0c;替换为\r\n 2&#xff09;移除空行 查找目标&#xff1a;\r\n\r\n&#xff0c;替换为&#xf…...

《语音识别芯片选型全攻略》

《语音识别芯片选型全攻略》 一、语音识别芯片性能评估&#xff08;一&#xff09;主控芯片性能评估&#xff08;二&#xff09;接口需求分析&#xff08;三&#xff09;可靠性评估&#xff08;四&#xff09;生产工艺考量&#xff08;五&#xff09;湿敏等级判断 二、语音识别…...

【MySQL】VARCHAR和CHAR的区别?

目录 区别存储方式最大长度存取效率 使用场景参考 在MySQL中&#xff0c;VARCHAR和CHAR是两种常用的字符串数据类型&#xff0c;它们各自有不同的特点和适用场景。下面我将和大家一起了解这两种数据类型的区别及使用场景。 区别 存储方式 CHAR(N)&#xff1a;定长存储&#…...

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地理 方位角&#xff0c;正北作为0度基线&#xff0c;顺时针旋转。 /*** GIS方位角度&#xff0c;正北为0度&#xff0c;顺时针旋转** 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 …...

贵州网站建设提升可见性的策略

贵州网站建设提升可见性的策略 在数字化时代&#xff0c;网站的可见性对企业的成功至关重要。在贵州&#xff0c;随着互联网的发展&#xff0c;越来越多的企业意识到网站建设的重要性。那么&#xff0c;如何有效提升网站的可见性呢&#xff1f;以下是几个关键策略。 **1. 优化…...

SUGAR:用于皮层表面配准的球形超快图注意力框架|文献速递-基于深度学习的医学影像分类,分割与多模态应用

Title 题目 SUGAR: Spherical ultrafast graph attention framework for cortical surface registration SUGAR&#xff1a;用于皮层表面配准的球形超快图注意力框架 01 文献速递介绍 基于表面的分析在解剖和功能神经影像学研究中变得越来越受欢迎&#xff08;Coalson 等,…...

华为高频手撕冲刺

简单题 两数之和 方法一&#xff0c;暴力破解&#xff0c;时间复杂度O(n^2)&#xff0c;空间复杂度O(1) class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:nlen(nums)for i in range(n):for j in range(i1,n):if nums[i]nums[j]target:retur…...

如何优雅的通过Spring Boot+Redission对订单实现定时关闭

简介 在电子商务及支付相关平台中&#xff0c;常规流程是首先生成订单或支付请求&#xff0c;用户随后会在规定时间内完成支付。如果用户未能在预设时限内完成支付动作&#xff0c;系统通常会执行相应的过期处理机制&#xff0c;即自动取消未支付的订单。 此外&#xff0c;这…...

二、IPD 的定义与背景

IPD 的定义与背景 1. IPD的定义 集成产品开发(Integrated Product Development,简称IPD)是一种系统化的产品开发模式,强调市场需求导向和跨职能团队的紧密合作,通过并行工程缩短开发周期、降低开发风险和成本。其核心目标是提高产品的市场竞争力,确保产品在开发各阶段都…...

STM32CubeMX初始生成工程

STM32CubeMX初始生成工程 STM32CubeMX软件可以很容易的配置STM32 MCU&#xff0c;例如引脚配置(Pins)、时钟树(Clock Tree)、外设(Peripherals)、中间件(Middleware)等 使用STM32CubeMX软件可以快速配置STM32工程&#xff0c;生成Keil工程文件以及初始化生成统一风格的C代码&…...

STM32单片机(F03C8T6)-点灯(寄存器点灯和库函数点灯)

作者&#xff1a;Whappy 时间&#xff1a;2024.10.9 日志&#xff1a;本实验是我第一个32位单片机实验程序&#xff0c;如有不足请指点&#xff01; #include "stm32f10x.h" // Device headerint main(void) {//寄存器点灯RCC->APB2ENR 0x000…...

PCL 3D-SIFT关键点检测(曲率不变特征约束

PCL点云算法汇总及实战案例汇总的目录地址链接: PCL点云算法与项目实战案例汇总(长期更新) 一、概述 3D-SIFT(Scale-Invariant Feature Transform)关键点检测是用于点云分析的一种有效方法,具有尺度不变性和旋转不变性。在处理复杂场景和物体识别时,通过对点云…...

Android上的AES加密

基础算法说明 https://www.youtube.com/watch?vlnKPoWZnNNM 虽然这个视频讲的非常详细&#xff0c;但是涉及到具体底层算法&#xff0c;大致流程 1. 将数据转成HEX或者byte array 2.将数据分层一块块等大小的数据 3.将数据和key 进行一次混合&#xff0c;加密之后的输出&…...

安全测试的漏洞类型

目录 一、安全测试的定义 二、安全测试的分类 1、静态扫描 2、内存扫描 3、动态安全测试 三、安全测试主要关注哪些方面的漏洞 漏洞一&#xff1a;SQL注入 漏洞二&#xff1a;XSS 漏洞三&#xff1a;暴力破解 漏洞四&#xff1a;文件包含文件上传漏洞 漏洞五&#…...

51 | 适配器模式:代理、适配器、桥接、装饰,这四个模式有何区别?

前面几篇文章我们学习了代理模式、桥接模式、装饰器模式&#xff0c;今天&#xff0c;我们再来学习一个比较常用的结构型模式&#xff1a;适配器模式。这个模式相对来说还是比较简单、好理解的&#xff0c;应用场景也很具体&#xff0c;总体上来讲比较好掌握。 关于适配器模式…...