赣州网站推广公司,玩具网站建设策划书,教育类网站配色,慈溪网站优化目前为止#xff0c;只讨论了具有一个单向隐藏层的循环神经网络#xff0c;其中隐变量和观测值域具体的函数形式的交互方式是相当随意的。只要交互类型建模具有足够的灵活性#xff0c;不是一个单问题。然而#xff0c;对一个单层来说#xff0c;可能具有相当的挑战性。之…
目前为止只讨论了具有一个单向隐藏层的循环神经网络其中隐变量和观测值域具体的函数形式的交互方式是相当随意的。只要交互类型建模具有足够的灵活性不是一个单问题。然而对一个单层来说可能具有相当的挑战性。之前的线性模型中我们通过添加更多的层来解决这个问题而在循环神经网络中我们首先需要确定如何添加更多的层以及在哪里添加额外的非线性层。事实上我们可以将多层循环神经网络堆叠在一起通过对几个简单层的组合产生一种灵活的机制特别是数据可能与不同层的堆叠有关例如我们可能希望保持有关金融市场状况的宏观数据可用而微观数据只记录较为短期的时间动态。图9-8展示了一个具有L个隐藏层的深度循环神经网络每个隐状态都连续的传递当前层的下一个时间步和下一层的当前时间步。9.3.1 函数依赖关系我们可以将深度架构中的函数依赖关系形势化这个架构由图9-8中展示的L个隐藏层构成后续的讨论主要集中在经典的循环神经网络模型上但是这些讨论也适应于其他序列模型假设在时间步t又一个小批量输入数据Xt属于Rnxd同时将第l个隐藏层输出层变量设为Ot属于Rnxq, 设置Ht Xt第l个隐藏层的隐状态使用激活函数Sigmal则。Ht Sigma (Ht Wxh Ht-1Whh Bh)权重Wxh属于RhxhWhh属于Rhh和偏置Bh属于Rlxh 都是第l个隐藏层的模型参数Ot HtWhq Bq其中权重Whq属于Rhxq和偏置Bq属于Rlxq都是输出层的模型参数与多层感知机一样隐藏层数L和隐藏单元数h都是超参数也就是说他们可以由我们调整用门控循环单元或者长短期记忆网络的隐状态来代替9.8中的隐状态进行计算可以很容易的得到深度门控循环神经网络或者深度长短期记忆神经网络。9.3.2 简洁实现实现多层循环神经网络所需的许多逻辑细节在高级API中都是现成的为简单起见我们仅仅示范使用此类内置函数的实现方式长短期记忆网络模型为例其实现代码与之前在9.2节中使用的代码非常相似实际上唯一的区别是我们指定了层的数量而不是使用单一层这个默认值像之前一样我们从加载数据集开始。import torchfrom torch import nnfrom d2l import torch as d2lbatch_size, num_steps 32,35train_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, 2num_inputs vocab_sizedevice d2l.try_gpu()lstm nn.LSTM(num_inputs, num_hiddens, num_layers)model d2l.RNNModel(lstm_layer, len(vocab))modelmodel.to(device)9.3.3 训练与预测使用了长短期记忆网络模型来实例化两个层因此训练速度大大降低了。num_epochs, lr 500, 2d2l.train_ch8(model, train_iter, vocab, lr, num_epochs, device)小结在深度循环神经网络中隐状态的信息被传递到当前层的下一个时间步和下一层的当前时间步有许多不同风格深度循环神经网络如长短期记忆网络门控循环单元或常规循环神经网络这些模型在深度学习框架的高级API中都有涵盖总体而言深度循环神经网络需要大量的调参来确保合适的收敛模型的初始化也需要谨慎