当前位置: 首页 > news >正文

网站集约化建设的通知wordpress json api auth

网站集约化建设的通知,wordpress json api auth,seo搜索引擎优化排名哪家更专业,硬件开发是程序员吗系列文章目录 文章目录 系列文章目录长短期记忆网络#xff08;LSTM#xff09;门控记忆元输入门、忘记门和输出门候选记忆元 (相当于RNN中计算 H t H_t Ht​)记忆元隐状态 从零开始实现初始化模型参数定义模型训练和预测 简洁实现小结练习 长短期记忆网络#xff08;LSTMLSTM门控记忆元输入门、忘记门和输出门候选记忆元 (相当于RNN中计算 H t H_t Ht​)记忆元隐状态 从零开始实现初始化模型参数定义模型训练和预测 简洁实现小结练习 长短期记忆网络LSTM 长期以来隐变量模型存在着长期信息保存和短期输入缺失的问题。 解决这一问题的最早方法之一是长短期存储器long short-term memoryLSTM它有许多与门控循环单元GRU一样的属性。有趣的是长短期记忆网络的设计比门控循环单元稍微复杂一些却比门控循环单元早诞生了近20年。 门控记忆元 可以说长短期记忆网络的设计灵感来自于计算机的逻辑门。 长短期记忆网络引入了记忆元memory cell或简称为单元cell。 有些文献认为记忆元是隐状态的一种特殊类型它们与隐状态具有相同的形状其设计目的是用于记录附加的信息。 为了控制记忆元我们需要许多门。 其中一个门用来从单元中输出条目我们将其称为输出门output gate。 另外一个门用来决定何时将数据读入单元我们将其称为输入门input gate。 我们还需要一种机制来重置单元的内容由遗忘门forget gate来管理这种设计的动机与门控循环单元相同能够通过专用机制决定什么时候记忆或忽略隐状态中的输入。让我们看看这在实践中是如何运作的。 输入门、忘记门和输出门 就如在门控循环单元中一样当前时间步的输入和前一个时间步的隐状态作为数据送入长短期记忆网络的门中如下图所示。它们由三个具有sigmoid激活函数的全连接层处理以计算输入门、遗忘门和输出门的值。 因此这三个门的值都在 ( 0 , 1 ) (0, 1) (0,1)的范围内。 label:lstm_0 我们来细化一下长短期记忆网络的数学表达。 假设有 h h h个隐藏单元批量大小为 n n n输入数为 d d d。 因此输入为 X t ∈ R n × d \mathbf{X}_t \in \mathbb{R}^{n \times d} Xt​∈Rn×d前一时间步的隐状态为 H t − 1 ∈ R n × h \mathbf{H}_{t-1} \in \mathbb{R}^{n \times h} Ht−1​∈Rn×h。 相应地时间步 t t t的门被定义如下 输入门是 I t ∈ R n × h \mathbf{I}_t \in \mathbb{R}^{n \times h} It​∈Rn×h 遗忘门是 F t ∈ R n × h \mathbf{F}_t \in \mathbb{R}^{n \times h} Ft​∈Rn×h 输出门是 O t ∈ R n × h \mathbf{O}_t \in \mathbb{R}^{n \times h} Ot​∈Rn×h。 它们的计算方法如下 I t σ ( X t W x i H t − 1 W h i b i ) , F t σ ( X t W x f H t − 1 W h f b f ) , O t σ ( X t W x o H t − 1 W h o b o ) , \begin{aligned} \mathbf{I}_t \sigma(\mathbf{X}_t \mathbf{W}_{xi} \mathbf{H}_{t-1} \mathbf{W}_{hi} \mathbf{b}_i),\\ \mathbf{F}_t \sigma(\mathbf{X}_t \mathbf{W}_{xf} \mathbf{H}_{t-1} \mathbf{W}_{hf} \mathbf{b}_f),\\ \mathbf{O}_t \sigma(\mathbf{X}_t \mathbf{W}_{xo} \mathbf{H}_{t-1} \mathbf{W}_{ho} \mathbf{b}_o), \end{aligned} It​Ft​Ot​​σ(Xt​Wxi​Ht−1​Whi​bi​),σ(Xt​Wxf​Ht−1​Whf​bf​),σ(Xt​Wxo​Ht−1​Who​bo​),​ 其中 W x i , W x f , W x o ∈ R d × h \mathbf{W}_{xi}, \mathbf{W}_{xf}, \mathbf{W}_{xo} \in \mathbb{R}^{d \times h} Wxi​,Wxf​,Wxo​∈Rd×h和 W h i , W h f , W h o ∈ R h × h \mathbf{W}_{hi}, \mathbf{W}_{hf}, \mathbf{W}_{ho} \in \mathbb{R}^{h \times h} Whi​,Whf​,Who​∈Rh×h是权重参数 b i , b f , b o ∈ R 1 × h \mathbf{b}_i, \mathbf{b}_f, \mathbf{b}_o \in \mathbb{R}^{1 \times h} bi​,bf​,bo​∈R1×h是偏置参数。 候选记忆元 (相当于RNN中计算 H t H_t Ht​) 由于还没有指定各种门的操作所以先介绍候选记忆元candidate memory cell C ~ t ∈ R n × h \tilde{\mathbf{C}}_t \in \mathbb{R}^{n \times h} C~t​∈Rn×h。 它的计算与上面描述的三个门的计算类似但是使用 tanh ⁡ \tanh tanh函数作为激活函数函数的值范围为 ( − 1 , 1 ) (-1, 1) (−1,1)。 下面导出在时间步 t t t处的方程 C ~ t tanh ( X t W x c H t − 1 W h c b c ) , \tilde{\mathbf{C}}_t \text{tanh}(\mathbf{X}_t \mathbf{W}_{xc} \mathbf{H}_{t-1} \mathbf{W}_{hc} \mathbf{b}_c), C~t​tanh(Xt​Wxc​Ht−1​Whc​bc​), 其中 W x c ∈ R d × h \mathbf{W}_{xc} \in \mathbb{R}^{d \times h} Wxc​∈Rd×h和 W h c ∈ R h × h \mathbf{W}_{hc} \in \mathbb{R}^{h \times h} Whc​∈Rh×h是权重参数 b c ∈ R 1 × h \mathbf{b}_c \in \mathbb{R}^{1 \times h} bc​∈R1×h是偏置参数。 候选记忆元的如下图 :numref:lstm_1所示。 label:lstm_1 记忆元 在门控循环单元中有一种机制来控制输入和遗忘或跳过。 类似地在长短期记忆网络中也有两个门用于这样的目的 输入门 I t \mathbf{I}_t It​控制采用多少来自 C ~ t \tilde{\mathbf{C}}_t C~t​的新数据而遗忘门 F t \mathbf{F}_t Ft​控制保留多少过去的记忆元 C t − 1 ∈ R n × h \mathbf{C}_{t-1} \in \mathbb{R}^{n \times h} Ct−1​∈Rn×h的内容。 使用按元素乘法得出 C t F t ⊙ C t − 1 I t ⊙ C ~ t . \mathbf{C}_t \mathbf{F}_t \odot \mathbf{C}_{t-1} \mathbf{I}_t \odot \tilde{\mathbf{C}}_t. Ct​Ft​⊙Ct−1​It​⊙C~t​. 如果遗忘门始终为 1 1 1且输入门始终为 0 0 0则过去的记忆元 C t − 1 \mathbf{C}_{t-1} Ct−1​将随时间被保存并传递到当前时间步。 引入这种设计是为了缓解梯度消失问题并更好地捕获序列中的长距离依赖关系。 这样我们就得到了计算记忆元的流程图如 :numref:lstm_2。 label:lstm_2 隐状态 最后我们需要定义如何计算隐状态 H t ∈ R n × h \mathbf{H}_t \in \mathbb{R}^{n \times h} Ht​∈Rn×h这就是输出门发挥作用的地方。 在长短期记忆网络中它仅仅是记忆元的 tanh ⁡ \tanh tanh的门控版本。 这就确保了 H t \mathbf{H}_t Ht​的值始终在区间 ( − 1 , 1 ) (-1, 1) (−1,1)内 H t O t ⊙ tanh ⁡ ( C t ) . \mathbf{H}_t \mathbf{O}_t \odot \tanh(\mathbf{C}_t). Ht​Ot​⊙tanh(Ct​). 只要输出门接近 1 1 1我们就能够有效地将所有记忆信息传递给预测部分而对于输出门接近 0 0 0我们只保留记忆元内的所有信息而不需要更新隐状态相当于重置隐状态。 下图 :numref:lstm_3提供了数据流的图形化演示。 label:lstm_3 从零开始实现 现在我们从零开始实现长短期记忆网络。我们首先加载时光机器数据集。 import torch from torch import nn from d2l import torch as d2lbatch_size, num_steps 32, 35 train_iter, vocab d2l.load_data_time_machine(batch_size, num_steps)初始化模型参数 接下来我们需要定义和初始化模型参数。 如前所述超参数num_hiddens定义隐藏单元的数量。 我们按照标准差 0.01 0.01 0.01的高斯分布初始化权重并将偏置项设为 0 0 0。 def get_lstm_params(vocab_size, num_hiddens, device):num_inputs num_outputs vocab_sizedef normal(shape):return torch.randn(sizeshape, devicedevice)*0.01def three():return (normal((num_inputs, num_hiddens)),normal((num_hiddens, num_hiddens)),torch.zeros(num_hiddens, devicedevice))W_xi, W_hi, b_i three() # 输入门参数W_xf, W_hf, b_f three() # 遗忘门参数W_xo, W_ho, b_o three() # 输出门参数W_xc, W_hc, b_c three() # 候选记忆元参数# 输出层参数W_hq normal((num_hiddens, num_outputs))b_q torch.zeros(num_outputs, devicedevice)# 附加梯度params [W_xi, W_hi, b_i, W_xf, W_hf, b_f, W_xo, W_ho, b_o, W_xc, W_hc,b_c, W_hq, b_q]for param in params:param.requires_grad_(True)return params定义模型 在[初始化函数]中长短期记忆网络的隐状态需要返回一个额外的记忆元单元的值为0形状为批量大小隐藏单元数。因此我们得到以下的状态初始化。 def init_lstm_state(batch_size, num_hiddens, device):return (torch.zeros((batch_size, num_hiddens), devicedevice),torch.zeros((batch_size, num_hiddens), devicedevice))[实际模型]的定义与我们前面讨论的一样 提供三个门和一个额外的记忆元。 请注意只有隐状态才会传递到输出层而记忆元 C t \mathbf{C}_t Ct​不直接参与输出计算。 def lstm(inputs, state, params):[W_xi, W_hi, b_i, W_xf, W_hf, b_f, W_xo, W_ho, b_o, W_xc, W_hc, b_c,W_hq, b_q] params(H, C) stateoutputs []for X in inputs:I torch.sigmoid((X W_xi) (H W_hi) b_i)F torch.sigmoid((X W_xf) (H W_hf) b_f)O torch.sigmoid((X W_xo) (H W_ho) b_o)C_tilda torch.tanh((X W_xc) (H W_hc) b_c)C F * C I * C_tildaH O * torch.tanh(C)Y (H W_hq) b_qoutputs.append(Y) #Y的shape是批量大小词表长度只有这里输出了批量大小的预测之后才能用来计算损失return torch.cat(outputs, dim0), (H, C)训练和预测 让我们通过实例化RNN从零实现中引入的RNNModelScratch类来训练一个长短期记忆网络就如我们在GRU中所做的一样。 vocab_size, num_hiddens, device len(vocab), 256, d2l.try_gpu() num_epochs, lr 500, 1 model d2l.RNNModelScratch(len(vocab), num_hiddens, device, get_lstm_params,init_lstm_state, lstm) d2l.train_ch8(model, train_iter, vocab, lr, num_epochs, device)perplexity 14.5, 27965.3 tokens/sec on cuda:0 time traveller te at at at at at at at at at at at at at at at a traveller te at at at at at at at at at at at at at at at aFigure size 350x250 with 1 Axes简洁实现 使用高级API我们可以直接实例化LSTM模型。 高级API封装了前文介绍的所有配置细节。 这段代码的运行速度要快得多因为它使用的是编译好的运算符而不是Python来处理之前阐述的许多细节。 num_inputs vocab_size lstm_layer nn.LSTM(num_inputs, num_hiddens) model d2l.RNNModel(lstm_layer, len(vocab)) model model.to(device) d2l.train_ch8(model, train_iter, vocab, lr, num_epochs, device)perplexity 11.2, 233619.5 tokens/sec on cuda:0 time traveller the the the the the the the the the the the the t traveller the the the the the the the the the the the the tFigure size 350x250 with 1 Axes长短期记忆网络是典型的具有重要状态控制的隐变量自回归模型。 多年来已经提出了其许多变体例如多层、残差连接、不同类型的正则化。 然而由于序列的长距离依赖性训练长短期记忆网络和其他序列模型例如门控循环单元的成本是相当高的。 在后面的内容中我们将讲述更高级的替代模型如Transformer。 小结 长短期记忆网络有三种类型的门输入门、遗忘门和输出门。长短期记忆网络的隐藏层输出包括“隐状态”和“记忆元”。只有隐状态会传递到输出层而记忆元完全属于内部信息。长短期记忆网络可以缓解梯度消失和梯度爆炸。 练习 调整和分析超参数对运行时间、困惑度和输出顺序的影响。如何更改模型以生成适当的单词而不是字符序列在给定隐藏层维度的情况下比较门控循环单元、长短期记忆网络和常规循环神经网络的计算成本。要特别注意训练和推断成本。既然候选记忆元通过使用 tanh ⁡ \tanh tanh函数来确保值范围在 ( − 1 , 1 ) (-1,1) (−1,1)之间那么为什么隐状态需要再次使用 tanh ⁡ \tanh tanh函数来确保输出值范围在 ( − 1 , 1 ) (-1,1) (−1,1)之间呢实现一个能够基于时间序列进行预测而不是基于字符序列进行预测的长短期记忆网络模型。
http://www.w-s-a.com/news/672542/

相关文章:

  • 做像美团淘宝平台网站多少钱开发网站企业
  • 网站建设前期费用二手购物网站策划书
  • dede学校网站百度联盟是什么
  • 献县网站建设网站开发专业定制
  • 龙华做网站yihe kj安徽六安彩礼一般给多少
  • flash网站建设公司我的小程序在哪里找
  • 建网站需要数据库吗如何制作简单的网页链接
  • 杭州设计企业网站高端公司上虞做网站公司
  • 做网站能赚钱么用wordpress搭建知名网站
  • 阿里云服务器网站开发青岛做网站找哪家
  • 凡科做的网站为什么打不开织梦cms仿某作文网站整站源码(带采集)安装数据库
  • 免费h5模板网站模板汽车报价网址
  • 蔡甸网站建设烟台网站建设yt
  • 最流行的网站开发新开的网页游戏平台
  • 暴富建站wordpress 标签分类
  • 搞笑网站源码百度快照替代
  • 重庆网站建设哪家公司哪家好关键词是怎么排名的
  • 青县网站建设今天国际大事新闻
  • 深圳正规网站制作哪里好怎样优化网络
  • 米拓网站建设教程dw成品网站成品视频教学
  • 用jsp做的网站源代码天门网站网站建设
  • 百度如何把网站做链接地址有没有资源可以在线观看
  • 淮安做网站找哪家好电子商务网站建设规划书的内容
  • 开发网站建设用什么框架php黄页系统
  • 聊城制作网站全球十大电商平台排名
  • 用什么来网站开发好mega menu wordpress
  • 深圳制作网站有用吗wordpress的主题
  • 网站的规划与创建天津市南开区网站开发有限公司
  • 免备案网站主机建站哪个平台好
  • python做网站 不适合单页营销分享网站