• 动手学深度学习 | 双向循环神经网络 | 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. 双向是否可以深度双向?

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

  • 相关阅读:
    SpringKafka——消息监听
    RabbitMQ(八)线程池消费
    RabbitMQ(七)延迟队列
    window计划任务 0x1
    获取网页URL地址及参数等的两种方法(js和C#)
    HttpWebRequest的偶尔请求超时问题
    用HTML、CSS、JS制作圆形进度条(无动画效果)
    批量关联update
    仅仅 IE8 有效的 CSS hack 写法
    SqlServer关闭与启用标识(自增长)列
  • 原文地址:https://www.cnblogs.com/Rowry/p/15376055.html
Copyright © 2020-2023  润新知