×

PyTorch教程之循环神经网络

消耗积分:0 | 格式:pdf | 大小:0.21 MB | 2023-06-05

分享资料个

第 9.3 节中,我们描述了马尔可夫模型和 n-grams 用于语言建模,其中 token 的条件概率xt在时间步t只取决于 n−1以前的令牌。如果我们想在时间步长之前合并标记的可能影响t−(n−1)xt, 我们需要增加n. 然而,模型参数的数量也会随之呈指数增长,因为我们需要存储 |V|n词汇集的数字 V. 因此,而不是建模 P(xt∣xt−1,…,xt−n+1)最好使用潜在变量模型:

(9.4.1)P(xt∣xt−1,…,x1)≈P(xt∣ht−1),

在哪里ht−1是一个隐藏状态,存储序列信息到时间步长t−1. 一般来说,任何时间步的隐藏状态t可以根据当前输入计算xt和之前的隐藏状态ht−1:

(9.4.2)ht=f(xt,ht−1).

为了足够强大的功能f(9.4.2)中,潜变量模型不是近似值。毕竟, ht可以简单地存储到目前为止观察到的所有数据。但是,它可能会使计算和存储都变得昂贵。

回想一下,我们在第 5 节中讨论了带有隐藏单元的隐藏层 值得注意的是,隐藏层和隐藏状态指的是两个截然不同的概念。如前所述,隐藏层是在从输入到输出的路径上从视图中隐藏的层。从技术上讲,隐藏状态是我们在给定步骤所做的任何事情的输入,它们只能通过查看先前时间步骤的数据来计算。

递归神经网络(RNN) 是具有隐藏状态的神经网络。在介绍 RNN 模型之前,我们首先重温一下5.1 节介绍的 MLP 模型

import torch
from d2l import torch as d2l
from mxnet import np, npx
from d2l import mxnet as d2l

npx.set_np()
import jax
from jax import numpy as jnp
from d2l import jax as d2l
No GPU/TPU found, falling back to CPU. (Set TF_CPP_MIN_LOG_LEVEL=0 and rerun for more info.)
import tensorflow as tf
from d2l import tensorflow as d2l

9.4.1. 没有隐藏状态的神经网络

让我们看一下具有单个隐藏层的 MLP。令隐藏层的激活函数为ϕ. 给定一小批示例X∈Rn×d批量大小 nd输入,隐藏层输出 H∈Rn×h计算为

(9.4.3)H=ϕ(XWxh+bh).

(9.4.3)中,我们有权重参数 Wxh∈Rd×h, 偏置参数 bh∈R1×h, 以及隐藏单元的数量h, 对于隐藏层。因此, 在求和期间应用广播(参见第 2.1.4 节)。接下来,隐藏层输出


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !