keras学习笔记(五):TimeDistributed详解+实战

版权声明:本文为博主原创文章,未经许可不得转载 https://blog.csdn.net/linxid/article/details/86316250

本文是对[2]的翻译和整理,对简单的部分进行了删减,难懂的部分进行了又一次的讲解。
RNN、LSTM、GRU模型是我们常用并且效果非常好的模型,在众多的NLP任务中都可以看到他的身影。但有一层TimeDistributed,使用起来有些难度,尤其对初学者而言。接下来,说明TimeDistributed包装器的原理以及如何使用。

内容概览:

  1. TimeDistributed层
  2. 序列学习Problem
  3. One-to-One的LSTM 用于序列预测
  4. Many-to-One LSTM 用于序列预测 (without TimeDistributed)
  5. Many-to-Many LSTM 用于序列预测 (with TimeDistributed)

1.TimeDistributed层:

  • 这一层是什么:
    这个封装器将一个层应用于输入的每个时间片。
  • 何时以及如何使用:
    对3维以上的tensor,在时间维度上应用全连接。

假设我们有一些文本数据,假设每条样本32个字,一共64条样本,那么这些数据维度是(64,32)。我们对每个字做Embedding后,每个字变成100维的向量,那么这些数据维度变成(64,32,100)。此时我们是没法直接对其应用全连接网络(Dense Net)的,我们可以在时间维度上,对每个时间切片应用全连接。比如说我们抽取每条样本的第一个字,将会得到维度为(64,100)的数据,这样我们就可以对其应用全连接了。接下来将通过实例来讲解。

2. 序列学习问题:

参考资料:

[1] Keras官网文档介绍
[2] How to Use the TimeDistributed Layer for Long Short-Term Memory Networks in Python

猜你喜欢

转载自blog.csdn.net/linxid/article/details/86316250