NLP 单双向RNN+LSTM+池化

单项RNN 从左往右顺序

双向RNN

import torch.nn as nn

import torch

nn.RNN(3,3,1,batch_first=True,bidirectional=True)

双向单层RNN(Recurrent Neural Network)是一种特殊类型的循环神经网络,它能够在两个方向上处

理序列数据,即正向和反向。这使得网络在预测当前输出时,能够同时考虑到输入序列中当前元素之前

的信息和之后的信息。双向单层RNN由两个独立的单层RNN组成,一个负责处理正向序列(从开始到结

束),另一个负责处理反向序列(从结束到开始)。

每一层RNN由两个RNN构成 一个考虑输入一个考虑输出共同决定本层状态

. RNN的训练方法------BPTT

随时间反向传播

本质还是BP算法,只不

过RNN处理时间序列数据,所以要基于时间反向传播

RNN不善于处理远期依赖性任务 比如长句子

比较擅长 有序列的短句

LSTM 长短期记忆网络

神经网络中不是单纯的一个层+激活函数了

而是多层+多个激活函数互相作用

核心是门控机制

基于 pytorch API 代码实现

在 LSTM 网络中,初始化隐藏状态 ( h0 ) 和细胞状态 ( c0 ) 是一个重要的步骤,确保模型在处理序列数据时有一个合理的起始状态。

def demo1():

class Model(nn.Module):

def init(self,input_size,hidden_size,output_size):

super().init()

self.output_size=output_size

self.hidden_size=hidden_size

self.lstm=nn.LSTM(input_size=input_size,hidden_size=self.hidden_size,batch_first=True)

self.fc=nn.Linear(hidden_size,output_size)

def forward(self,x):

self.h0=torch.zeros(1,x.shape0,self.hidden_size)

self.c0=torch.zeros(1,x.shape0,self.hidden_size)

lstm 的返回值为 out 和 (hn, cn) 。 out为隐藏状态 hn是最后一次的隐藏状态 cn为最后一次的细胞状态 output batch_first=True,形状为 (batch, seq_len, num_directions * hidden_size)

x,_=self.lstm(x,(self.h0,self.c0))

x=self.fc(x-1-1.view(x.shape0,-1)) # 取最后一次的隐藏状态 当全连接的输出

return x

这里的假数据是词向量,不是序列下标 注意一下最后一个维度是input_size

model1=Model(3,16,10)

data=torch.rand(1,2,3)

res=model1(data)

print(res)

序列池化

在自然语言处理 (NLP) 中,序列池化(sequence pooling)是一种将变长序列转换为固定长度表示的方法。这个过程对于处理可变长度的输入(如句子或文档)特别有用,因为许多深度学习模型(如全连接层)需要固定长度的输入。

. 最大池化(Max Pooling):

一个批次中的每个字变为向量后 全部向量的对应维度 留下最大的那个

平均池化就是取平均值 nn.AdaptiveAvgPool1d

if name=="main":

demo1()

pass

相关推荐
一楼的猫16 小时前
网文AI辅助怎么过审?番茄200+维度检测与去AI味实战
人工智能·学习·机器学习·自然语言处理·ai写作
Tbisnic3 天前
23.大模型开发:深度学习----CNN 卷积神经网络 与 RNN 循环神经网络
人工智能·python·rnn·深度学习·cnn·ai大模型
执笔论英雄3 天前
【;Agent】SWEET-RL:在协同推理任务上训练多轮大语言模型智能体
人工智能·语言模型·自然语言处理
小李飞刀李寻欢4 天前
DeepSeek最新研究进展:从MoE架构到多模态突破
语言模型·自然语言处理·大模型·deepseek
技术小黑4 天前
RNN算法实战系列02 | 医疗成本预测(LSTM 回归)
人工智能·pytorch·rnn·深度学习·lstm
AI人工智能+4 天前
护照OCR识别技术,依托深度神经网络模型,实现了从像素到语义的端到端智能解析
深度学习·计算机视觉·自然语言处理·ocr·护照ocr识别
dozenyaoyida4 天前
LSTM 自编码器原理详解:从三门结构到 STM32 端侧异常检测落地
人工智能·stm32·lstm
沪漂阿龙5 天前
什么是大语言模型?和传统 NLP 模型有什么区别?
人工智能·语言模型·自然语言处理
龙腾亚太5 天前
当大语言模型遇上USV集群:大模型驱动的自适应路径规划方法
人工智能·语言模型·自然语言处理
DogDaoDao6 天前
LLM:用一条命令统一所有大语言模型的 CLI 工具
人工智能·语言模型·自然语言处理·llm·github