首页 > 其他分享 >机器学习——深度循环神经网络

机器学习——深度循环神经网络

时间:2023-11-14 15:58:04浏览次数:38  
标签:vocab num 神经网络 循环 d2l 深度 size

到目前为止,我们只讨论了具有一个单向隐藏层的循环神经网络。 其中,隐变量和观测值与具体的函数形式的交互方式是相当随意的。 只要交互类型建模具有足够的灵活性,这就不是一个大问题。 然而,对一个单层来说,这可能具有相当的挑战性。 之前在线性模型中,我们通过添加更多的层来解决这个问题。 而在循环神经网络中,我们首先需要确定如何添加更多的层, 以及在哪里添加额外的非线性,因此这个问题有点棘手。

事实上,我们可以将多层循环神经网络堆叠在一起, 通过对几个简单层的组合,产生了一个灵活的机制。 特别是,数据可能与不同层的堆叠有关。 例如,我们可能希望保持有关金融市场状况 (熊市或牛市)的宏观数据可用, 而微观数据只记录较短期的时间动态。

 

函数依赖关系 

 

简洁实现

实现多层循环神经网络所需的许多逻辑细节在高级API中都是现成的。 简单起见,我们仅示范使用此类内置函数的实现方式。 以长短期记忆网络模型为例, 该代码与之前在 9.2节中使用的代码非常相似, 实际上唯一的区别是我们指定了层的数量, 而不是使用单一层这个默认值。 像往常一样,我们从加载数据集开始。

import torch
from torch import nn
from d2l import torch as d2l

batch_size, num_steps = 32, 35
train_iter, vocab = d2l.load_data_time_machine(batch_size, num_steps)

 像选择超参数这类架构决策也跟 9.2节中的决策非常相似。 因为我们有不同的词元,所以输入和输出都选择相同数量,即vocab_size。 隐藏单元的数量仍然是256。 唯一的区别是,我们现在通过num_layers的值来设定隐藏层数。

vocab_size, num_hiddens, num_layers = len(vocab), 256, 2
num_inputs = vocab_size
device = d2l.try_gpu()
lstm_layer = nn.LSTM(num_inputs, num_hiddens, num_layers)
model = d2l.RNNModel(lstm_layer, len(vocab))
model = model.to(device)

 

由于使用了长短期记忆网络模型来实例化两个层,因此训练速度被大大降低了。

num_epochs, lr = 500, 2
d2l.train_ch8(model, train_iter, vocab, lr*1.0, num_epochs, device)

 

总结

  • 在深度循环神经网络中,隐状态的信息被传递到当前层的下一时间步和下一层的当前时间步。

  • 有许多不同风格的深度循环神经网络, 如长短期记忆网络、门控循环单元、或经典循环神经网络。 这些模型在深度学习框架的高级API中都有涵盖。

  • 总体而言,深度循环神经网络需要大量的调参(如学习率和修剪) 来确保合适的收敛,模型的初始化也需要谨慎。

 

标签:vocab,num,神经网络,循环,d2l,深度,size
From: https://www.cnblogs.com/yccy/p/17831785.html

相关文章

  • 浏览器事件循环Event Loop
    引言:事件循环不是浏览器独有的,从字面上看,“循环”可以简单地认为就是重复,比如for循环,就是重复地执行for循环体中的语句,所以事件循环,可以理解为重复地处理事件,那么下一个问题是,处理的是什么事件,事件的相关信息从哪里获取。因为我没有用nodejs做过什么项目,所以这里我暂且只关注浏......
  • 神经网络中间层特征图可视化(输入为音频)
    importlibrosaimportnumpyasnpimportutilsimporttorchimporttorch.nn.functionalasFfrommatplotlibimportpyplotaspltfromtorchvision.models.feature_extractionimportcreate_feature_extractordevice=torch.device("cuda:0"iftorch.......
  • 如何利用「深度上下文兴趣网络」提升点击率?
    美团到店广告平台在用户行为序列建模算法的迭代落地中,基于对业务实际场景中用户决策心智的观察,创新性地提出了深度上下文兴趣网络,精确建模了用户的兴趣,提升了CTR等线上业务指标。本文介绍了相应算法背后的动机、建模方法以及工程优化,希望能为从事相关工作的同学带来一些启发或帮助......
  • 深度分析:如何轻松掌握文件大小管理
    大家好,今天我要与大家分享一个实用至极的脚本。简单易用,但效果却让人惊艳。它可以在几秒钟内完成文件大小的统计,并生成一份统计信息。功能概览完整性分析:一次性告诉你不同大小区间的文件分布,让你一目了然。速度超快:忘掉繁琐的手动查找和统计,这款程序瞬间就能给出结果。直观的结果:从......
  • 机器学习——门控循环单元(GRU)
    在 8.7节中,我们讨论了如何在循环神经网络中计算梯度,以及矩阵连续乘积可以导致梯度消失或梯度爆炸的问题。下面我们简单思考一下这种梯度异常在实践中的意义:我们可能会遇到这样的情况:早期观测值对预测所有未来观测值具有非常重要的意义。考虑一个极端情况,其中第一个观测值......
  • 神经网络入门篇:详解向量化实现的解释(Justification for vectorized implementation)
    向量化实现的解释先对几个样本计算一下前向传播,看看有什么规律:公式1.16:\(z^{[1](1)}=W^{[1]}x^{(1)}+b^{[1]}\)\(z^{[1](2)}=W^{[1]}x^{(2)}+b^{[1]}\)\(z^{[1](3)}=W^{[1]}x^{(3)}+b^{[1]}\)这里,为了描述的简便,先忽略掉\(b^{[1]}\)后面将会看到利用Python的......
  • 深度剖析GadgetInspector执行逻辑(上)
    GadgetInspector该类是这个项目的主类首先就是配置日志格式这里是使用的log4j进行控制台日志的输出,分别设置了了布局格式/日志级别/激活配置等等操作之后在主类中就是进行GIConfig接口的实现类这里优先获取的是默认的反序列化规则,什么意思呢?我们跟进getConfig方法中......
  • 神经网络中的量化与蒸馏
    本文将深入研究深度学习中精简模型的技术:量化和蒸馏深度学习模型,特别是那些具有大量参数的模型,在资源受限环境中的部署几乎是不可能的。所以就出现了两种流行的技术,量化和蒸馏,它们都是可以使模型更加轻量级,而不会对性能造成太大影响。但是它们需要什么,它们又如何比较呢?量化:牺......
  • 螺旋方阵-运行超时:在最后一个数字,掉入死循环
    #include <stdio.h>#define MAX 13// all index starts from 1 not 0int a[MAX][MAX]={0};// x->line ; y->column// null right down left upint dx[5]={-99,0,1,0,-1};int dy[5]={-99,1,0,-1,0};int n;void init(){    for(int j=1;j<=n;......
  • 无涯教程-Dart - do…while 循环函数
    do…while循环与while循环类似,不同之处在于do...while循环在第一次执行循环时不会判断条件,但是,将为后续迭代判断条件。下图显示了do…while循环的流程图-以下是do-while循环的语法。do{Statement(s)tobeexecuted;}while(expression);注意-不要错过......