zoukankan      html  css  js  c++  java
  • 动手学深度学习 | 双向循环神经网络 | 59

    双向循环神经网络

    双向LSTM非常不适合做推理,基础是不能用在预测下一个词。

    Bi-RNN的作用主要是对一个句子做特征提取,比如做翻译, 给句子A翻译句子B,那么可以对句子A使用Bi-RNN去双向的看它。

    代码

    这里代码不会讲具体实现,但是其实很简单,前向的隐藏层就正常进行运算。反向的怎么实现呢?首先把reverse(input),然后输入到隐层得到一个输出,再讲这个输出reverse(), 最后将这个两个输出进行连接。

    # 可以直接指定RNN的单元和是否是双向的
    lstm_layer = nn.LSTM(num_inputs, num_hiddens, num_layers, bidirectional=True)
    model = d2l.RNNModel(lstm_layer, len(vocab))
    model = model.to(device)
    

    下面是一个错误的案例,就是要说明不能使用双向循环神经网络来做预测。

    QA

    1. 时间序列预测,也用双向的吗?这个能从后向前看吗?

    时间序列是不能使用双向的,只能做做完形填空、文本分类这种,可以看完一整段文本的。双向循环神经网络不适合做预测的任务。

    1. 双向循环神经网络,在正向和反向之间有权重关系吗?

    没有。因为他们正向和反向的权重是concat在一起的,而不是相加或者其他运算,所以是独立的。

    1. 隐藏层和隐马尔科夫有什么关系?

    理论上RNN训练是没有长度限制的,但是训练的时候我们把句子裁剪成了不要过长的子序列(比如35),这里就可以认为暗含使用了隐马尔科夫的假设。

    1. 双向是否可以深度双向?

    是的,两层是一组单元,可以进行叠加。

  • 相关阅读:
    tctip demo页面>
    tctip demo页面>
    tctip demo页面>
    tctip demo页面>
    tctip demo页面>
    tctip demo页面>
    tctip demo页面>
    tctip demo页面>
    tctip demo页面>
    sql 随笔
  • 原文地址:https://www.cnblogs.com/Rowry/p/15376055.html
Copyright © 2011-2022 走看看