import torch
#简单RNN学习举例。
# RNN(循环神经网络)是把一个线性层重复使用,适合训练序列型的问题。单词是一个序列,序列的每个元素是字母。序列中的元素可以是任意维度的。实际训练中,
# 可以首先把序列中的元素变为合适的维度,再交给RNN层。
#学习 将hello 转为 ohlol。
dict=['e','h','l','o'] #字典。有4个字母
x_data=[1,0,2,2,3] #输入hello在字典中的引索
x_data=torch.LongTensor(x_data) #后面要用到把引索转化为高维向量的工具,那个工具要求输入是LongTensor而不是默认的floatTensor
y_data=torch.LongTensor([3,1,2,3,2]) #后面用到的交叉熵损失要求输入是一维longTensor。LongTensor的类型是长整型。
# 上边提到的把引索转为高维向量的工具,可以理解为编码器。引索是标量,编出的码可以是任意维度的矢量,在这个例子中
# 把从字典长度为4(只有4个不同的字母的字典)的字典中取出的5个字母hello构成一个序列,编码为5个(一个样本,这个样本有5个元素,也就是
# batch_size=1,seqlen(序列长度)=5,1*5=5)10维向量(bedding_size=10)。
# 然后通过RNN层,降维为5个8维向量(hidding_size=8)。RNN层的输入形状是样本数*序列长度*元素维度,(本例中是1*5*10)RNN的输入有两个,这里我们关心第一个输出
# 它的形状为样本数*序列长度*输出元素维度(本例中为1*5*8)。
# 然后把RNN层的输出视为(样本数*序列长度)*输出元素维度(本例:5*8)的向量交给全连接层降维为5*4。4是因为这是个多分类问题,输入的每个字母对应哪个分类。
# 这里输出分类类别只有4个。(num_class=4)
# 把得到5*4张量交给交叉熵损失计算预测与目标的损失。(后面的工作就是多分类的工作了)。
class rnnmodel(torch.nn.Module):
def __init__(self,dictionary_size,num_class):
super(rnnmodel, self).__init__()
self.hidden_size=8
self.bedding_size=10
self.dictionary_size=dictionary_size
self.num_class=num_class
self.embeddinger=torch.nn.Embedding(self.dictionary_size,self.bedding_size) #把5个引索转化为5个张量。并继承输入的维度。(本例中继承batch_size*seglen),
# 输出为batch_size*seglen*bedding_size
self.rnn=torch.nn.RNN(input_size=self.bedding_size,hidden_size=self.hidden_size,num_layers=1,batch_first=True)
# 指定batch_fisrt=True,则要求输入维度为batch_size*seglen*input_size,否则,要求输入为seglen*input_size。
# 指定batch_fisrt=True要求的输入形状更方便与构建数据集。数据集的原始维度就是这样的。
# batch_fisrt默认为false ,之所以为false,是因为seglen*input_size这样的形状更有利于RNN的实现。
self.linear=torch.nn.Linear(self.hidden_size,self.num_class) #10维降为4维。
def forward(self,x): #x 的形状为(样本数,序列长度)
h0=torch.zeros(1,x.size(0),self.hidden_size) #RNN要有两个输入,x为数据,h为序列中上一个元素计算的结果。由于第一个元素没有
#上一个元素,所以要指定一个初始值。如果没有先验数据,一般设置为全0。它的形状为num_layer*batch_size*hidden_size。num_layers是什么,本人很懒不想画图,其他博客对这个的解释
#非常清晰。
x=self.embeddinger(x)
x,_=self.rnn(x,h0) #x的形状为(样本数,序列长度,每个单元的维度)
x=x.view(-1,self.hidden_size) #合并前两个维度,放入全连接层计算。如果需要,计算完之后再拆分。
x=self.linear(x)
return x
if __name__=='__main__':
model=rnnmodel(4,4)
criterion=torch.nn.CrossEntropyLoss()
optimizer=torch.optim.Adam(model.parameters(),lr=0.1)
x_data=x_data.view(-1,5)
y_data=y_data.view(-1)
for epoch in range(15):
y_hat=model(x_data)
_,index=torch.max(y_hat,1)
index=index.data.numpy()
loss=criterion(y_hat,y_data)
print(epoch,' loss:', loss.item(),'guess:',''.join([dict[x] for x in index]))
optimizer.zero_grad()
loss.backward()
optimizer.step()
相关推荐
RNN:循环神经的网络结构、特点及应用实例
RNN:循环神经的网络结构及其特点前言一、RNN?二、使用步骤1.引入库2.读入数据总结 前言 循环神经网络(Recurrent Neural Network, RNN)是用来建模序列化数据的一种主流深度学习模型。RNN将神经元串行起来,每个神经元能用它的内部变量保存之间输入的序列信息来把整个序列浓缩成抽象表示,并据此进行分类或生成新的序列,解决了传统前馈神经网络无法处理变长序列和难以捕捉序列中长距离的依赖关系的问题,基于此特点RNN在机器翻译、序列标注、图像标注、推荐系统、智能聊天机器人和自动作词作曲.
深度学习05-RNN循环神经网络
循环神经网络(Recurrent Neural Network,RNN)是一种具有循环连接的神经网络结构,被广泛应用于自然语言处理、语音识别、时序数据分析等任务中。相较于传统神经网络,RNN的主要特点在于它可以处理序列数据,能够捕捉到序列中的时序信息。RNN的基本单元是一个循环单元(Recurrent Unit),它接收一个输入和一个来自上一个时间步的隐藏状态,并输出当前时间步的隐藏状态。在传统的RNN中,循环单元通常使用tanh或ReLU等激活函数。
pytorch实现RNN循环神经网络
一、概述循环神经网络(Recurrent Neural Network, RNN)是一类以(sequence)数据为输入,在序列的演进方向进行(recursion)且所有节点(循环单元)按链式连接的(recursive neural network),通过网络的内部结构捕捉序列之间的模式特征,一般也是以序列形式输出。RNN(Recurrent Neural Network) 是带有循环的神经网络。假设我们有一组向量,通过假设函数$H$解释代表时间量,是非线性函数,相对应的是每次循环的输出。
【PyTorch】深度学习实践之 RNN基础篇——实现RNN
深度学习实践之 RNN基础篇——实现RNN,one-hot向量、LSTM,GRU
Pytorch 小记 第十一回:RNN循环神经网络模型代码
本次小记,提供了一份基于pytorch的RNN循环神经网络模型的代码。代码是基于RNN模型来完成对股票收盘价格的预测。除此之外,对代码中不容易理解的部分进行了讲解。 本代码的平台是PyCharm 2024.1.3,python版本3.11 numpy版本是1.26.4,pytorch版本2.0.0,d2l的版本是1.0.3
Pytorch之RNN实战
RNN原理 循环神经网络:处理序列模型,权值共享。 h[t] = fw(h[t-1], x[t]) #fw is some function with parameters W h[t] = tanh(W[h,h]*h[t-1] + W[x,h]*x[t]) #to be specific y[t] = W[h,y]*h[t] Sequence to Sequence 模型示意图...
Pytorch循环神经网络(RNN)快速入门与实战
0. 前言 很久没用过Pytorch,忘得差不多了,最近课题需要用,所以整理一下RNN的使用方法。记得去年学这部分一直很迷糊,所以希望这篇博客能对大家有所帮助。 1. 简单循环神经网络结构 先简单聊聊RNN的结构。最简单的一层RNN网络结构如下图所示,其中,每个箭头都表示一个权值,输入为向量X=[x1,x2,...,xT]X=[x_1,x_2,...,x_T]X=[x1,x2,...,xT],输出向量为Y=[y1,y2,...,yT]Y=[y1,y2,...,y_T]Y=[y1,y2,...,yT]
【深度学习的骨架与脉搏】循环神经网络模型 · RNN(呕心沥血版)
在人工智能领域,尤其是处理时间序列数据和序列信息时,传统的神经网络往往无法有效捕捉到数据之间的时序关系。而循环神经网络(RNN)则应运而生,成为了解决这类问题的强大工具。RNN的独特之处在于,它能够通过“记忆”之前的输入信息,利用这种记忆来影响后续的决策,这使得它在语音识别、自然语言处理、股票预测等领域得到了广泛应用。
PyTorch学习系列教程:循环神经网络【RNN】
注:RNN既用于表达循环神经网络这一类网络,也用于表达标准RNN模块。
时间序列预测:基于PyTorch框架的循环神经网络(RNN)实现销量预测
主要过程如下: 1、首先读取数据集csv文件,读取每天每个地区的销量数据,整理为按照地区分类的销量数据csv文件,并且将每天的销量数据合并为以周(星期)为单位的销量汇总数据。以下代码实现都是按照周进行预测的,比如说可以预测未来1周,2周,3周...等某地的销量数据。 2、数据整理好之后,执行train.py文件开始训练模型,模型生成的文件会保存至models文件夹下。 3、待训练完成之后执行predict.py文件,修改文件中的开始日期进行预测未来几周的销量数据。 4、观察模型训练效果,如果结构不理想
在Visual Studio中搭建Dynamo Python开发环境,效率飞一般的增长
在Visual Studio中搭建Dynamo Python开发环境,效率飞一般的增长
循环神经网络RNN完全解析:从基础理论到PyTorch实战
在本文中,我们深入探讨了循环神经网络(RNN)及其高级变体,包括长短时记忆网络(LSTM)、门控循环单元(GRU)和双向循环神经网络(Bi-RNN)。文章详细介绍了RNN的基本概念、工作原理和应用场景,同时提供了使用PyTorch构建、训练和评估RNN模型的完整代码指南。
银河麒麟服务器操作系统V10-SP1部署gitlab服务
银河麒麟高级服务器操作系统 V10 SP1 部署GitHub
Pytorch 第十一回:循环神经网络——RNN模型
本次开启深度学习第十一回,基于Pytorch的RNN循环神经网络模型。前面我们已经分享过线性神经网络、多层神经网络和卷积神经网络。接下来,开始学习循环神经网络。本回分享的第一个循环神经网络,叫做RNN模型。在本回中,设计通过RNN模型来对股票收盘价格进行预测。接下来给大家分享具体思路。 本次学习,借助的平台是PyCharm 2024.1.3,python版本3.11 numpy版本是1.26.4,pytorch版本2.0.0+cu118,d2l的版本是1.0.3
【项目实战-MATLAB】:基于机器学习的虹膜识别系统设计
虹膜识别主要包括虹膜定位、虹膜裁剪、极坐标变换、归一化、HOG特征提取、虹膜识别六个主要步骤。本系统采用MATLAB作为开发工具实现 主要算法:霍夫变换预处理 HOG特征提取 SVM进行识别
AMD MI355X与NVIDIA B200在GLM5.2大模型推理性能与成本对比分析
在 AI 推理硬件选型中,成本与性能的平衡一直是技术决策的核心难点。AMD 最新发布的 CDNA 4 架构 MI355X 加速卡与 NVIDIA Blackwell 架构的 B200 在 GLM5.2 这类千亿参数大模型上的表现,直接关系到企业部署私有化模型或提供推理服务的经济性。实际测试数据显示,在 32 tok/s/user 的交互性设定下,单张 MI355X 能够达到 1369 tok/s 的吞吐量,虽然略低于 B200 的 1756 tok/s,但每百万 token 成本仅为 0.30 美元,比 B
RNN(循环神经网络)
RNN(Recurrent Neural Network), 中文称作循环神经网络,它一般以序列数据为输入,通过网络内部的结构设计有效捕捉序列之间的关系特征,一般也是以序列形式进行输出.RNN的循环机制使模型隐层上一时间步产生的结果,能够作为当下时间步输入的一部分(当下时间步的输入除了正常的输入外还包括上一步的隐层输出)对当下时间步的输出产生影响.结构:三层,输入、输出、隐藏层(循环在隐藏层)图中sigma为sigmiod函数,将值压缩在0-1之间。
告别专业软件!用QGIS+GDAL免费搞定S-57电子海图,附全套符号库和样式文件
本文详细介绍了如何利用免费开源工具QGIS和GDAL处理S-57电子海图,包括数据转换、符号库配置和专业可视化方案。通过实战指南,用户无需依赖昂贵的商业软件,即可实现从S-57到SHP的转换及专业级海图制作,特别适合预算有限的个人和小型机构。
【NLP】RNN理解(Pytorch实现)
【参考:【循环神经网络】5分钟搞懂RNN,3D动画深入浅出_哔哩哔哩_bilibili】 参数理解 上面这张图最能表明RNN的运行原理 【参考:pytorch中RNN参数的详细解释_lwgkzl的博客-优快云博客】 自己的笔记 【参考:【PyTorch深度学习实践 | 刘二大人】B站视频教程笔记_myaijarvis的博客-优快云博客】 多层、双向RNN 【参考:循环神经网络的改进:多层RNN、双向RNN与预训练_DeepGeGe的博客-优快云博客】 ...
Windows下TensorRT+YOLOv11部署避坑指南:从CUDA配置到模型加密全流程
本文详细解析了在Windows平台部署YOLOv11与TensorRT的全流程,重点涵盖从CUDA环境配置、工程编译适配到模型加密保护的实战指南。基于wang-xinyu的tensorrtx仓库,提供了详细的版本选择、编译问题修复方案,并深入探讨了如何对TensorRT引擎进行加密,以实现高效且安全的端到端部署。
解放双手:用KUKA示教器白键一键触发复杂工艺,自定义你的快捷指令
本文详细介绍了如何利用KUKA示教器的工艺白键功能,通过自定义快捷指令一键触发复杂工艺,显著提升自动化产线效率。文章涵盖UserTech技术栈解析、KRL脚本封装、人机交互视觉工程及工业实战策略,帮助工程师实现机械臂操作的高阶优化。
学习笔记-PyTorch-RNN循环神经网络
循环神经网络(RNN)利用序列中前后元素的依赖关系,通过循环连接来传递信息,使得网络能够记忆前后的信息并用于后续的计算。
【人工智能】Warp 终端完整汉化方案(2026最新)
截至2026年5月,,仅完成了中文、日文、韩文等东亚语言的字符渲染支持,设置面板中无官方语言切换选项,相关中文UI功能需求仍在官方GitHub开源仓库的需求迭代队列中。
使用PyTorch实现简单的RNN
使用PyTorch实现简单的RNN 假设 Xt∈Rn×dX_t \in R^{n \times d}Xt∈Rn×d 是序列中时间步 ttt 的小批量输入,Ht∈Rn×hH_t \in R^{n \times h}Ht∈Rn×h 是该时间步输入的隐藏变量。计算过程如下:: Ht=ϕ(XtWdh+Ht−1Whh+bh) H_{t}=\phi(X_tW_{dh}+H_{t-1}W_{hh}+b_h) Ht=ϕ(XtWdh+Ht−1Whh+bh) 其中,隐藏层的权重 Wdh∈Rd×hW_{dh} \
RU DOS版、EFI版32bit/64bit BIOS常用工具
DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。
IEM模型,地表粗糙度模拟
利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟
pytorch- RNN循环神经网络
pytorch RNN循环神经网络
WINCC7.3破解文件
WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!
9373



被折叠的 条评论
为什么被折叠?



