IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> Deep-RNN-深度循环神经网络(RNN循环神经网络) -> 正文阅读

[人工智能]Deep-RNN-深度循环神经网络(RNN循环神经网络)

深度循环神经网络

现在,我们来学习深度循环神经网络(Deep-RNN)

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

下图描述了描述了一个具有 L L L个隐藏层的深度循环神经网络,每个隐状态都连续地传递到当前层的下一个时间步和下一层的当前时间步

在这里插入图片描述

函数的依赖关系

我们可以将深度架构中的函数依赖关系形式化,这个架构是由上图中描述了 L L L个隐藏层构成。后续的讨论主要集中在经典的循环神经网络模型上,但是这些讨论也适应于其他序列模型。

假设在时间步 t t t有一个小批量的输入数据 X t \mathbf{X}_t Xt? 。同时,将 l t h l^\mathrm{th} lth隐藏层( l = 1 , … , L l=1,\ldots,L l=1,,L)的隐状态设为 H t ( l ) \mathbf{H}_t^{(l)} Ht(l)?
输出层变量设为 O t \mathbf{O}_t Ot?
设置 H t ( 0 ) = X t \mathbf{H}_t^{(0)} = \mathbf{X}_t Ht(0)?=Xt?
l l l个隐藏层的隐状态使用激活函数 ? l \phi_{l} ?l?,则:

H t = ? l ( H t ( l ? 1 ) W x h ( l ) + H t ? 1 ( l ) W h h ( l ) + b h l ) , H_{t} = \phi_l(H_{t}^{(l-1)}W_{xh}^{(l)} + H_{t-1}^{(l)}W_{hh}^{(l)} + b_h^{l}), Ht?=?l?(Ht(l?1)?Wxh(l)?+Ht?1(l)?Whh(l)?+bhl?),

其中,权重 W x h ( l ) \mathbf{W}_{xh}^{(l)} Wxh(l)? W h h ( l ) \mathbf{W}_{hh}^{(l)} Whh(l)?和偏置 b h ( l ) \mathbf{b}_h^{(l)} bh(l)? 都是第 l l l个隐藏层的模型参数。

细心的小伙伴们可能会发现,上面公式与普通的循环神经网络模型的差别就是将 X t X_{t} Xt? 替换成了 H t ( l ? 1 ) H_{t}^{(l-1)} Ht(l?1)?,这正是由于多层隐藏层的缘故。

最后,输出层的计算仅基于第 l l l个隐藏层最终的隐状态:

O t = H t ( L ) W h q + b q O_{t} = H_{t}^{(L)}W_{hq} + b_{q} Ot?=Ht(L)?Whq?+bq?

其中,权重 W h q \mathbf{W}_{hq} Whq? 和偏置 b q \mathbf{b}_q bq? 都是输出层的模型参数。

与多层感知机一样,隐藏层数目 L L L和隐藏单元数目 h h h都是超参数。也就是说,它们可以由我们调整的。所以我们也可以很容易地得到深度门控循环神经网络或深度长短期记忆神经网络。

简洁实现

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

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)

我们现在通过num_layers的值来设定隐藏层数。

vocab_size, num_hiddens, num_layers = len(vocab), 256, 2
num_inputs = vocab_size

device = d2l.try_gpu()

#定义LSTM隐藏层,层数为2
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, num_epochs, device)
perplexity 1.0, 3520.3 tokens/sec on cpu
time traveller with a slight accession ofcheerfulness really thi
travelleryou can show black is white by argument said filby

在这里插入图片描述

小结

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

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

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

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-10-22 21:15:35  更:2022-10-22 21:17:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 20:13:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码