【发布时间】:2019-08-08 13:59:50
【问题描述】:
我无法理解tf.keras.layers API 中LSTM 层的一些参数。
我正在研究使用CuDNNLSTM 层而不是LSTM 层(以加快训练速度),但在我承诺使用CuDNN 层之前,我想全面了解我使用时丢失的参数CuDNNLSTM 而不是 LSTM 层。我已经阅读了这些文档,但他们似乎假设了我没有的 LSTMs 的一些先验知识。
我列出了CuDNNLSTM 没有(LSTM 有)的参数,并分别穿插了我对它们的问题。
activation-
recurrent_activation-
activation和recurrent_activation有什么区别?我假设它与单元格的激活与完整的LSTM层的激活有关,但我不确定。
-
-
use_bias- 如果
use_bias为 True,那么此偏差应用在哪里?
- 如果
dropout-
recurrent_dropout- 同样,
dropout和recurrent_dropout有什么区别?如果recurrent_dropout是 LSTM 单元之间的丢失,那对我来说没有意义,因为你会忽略之前的输出,我认为这会破坏使用 RNN 的目的。 - 可以在 LSTM 层之前/之后将这些 dropout 参数中的任何一个替换为 dropout 层(即
tf.keras.models.sequential([Input(...), LSTM(...), Dropout(0.5)])或tf.keras.models.sequential([Input(...), Dropout(0.5), LSTM(...)])而不是tf.keras.models.sequential([Input(...), LSTM(..., dropout=0.5)]))
- 同样,
-
implementation- 我理解为什么这个参数不在
CuDNN层中,因为它可能会使并行化变得更加困难。但是,在LSTMs 中,这会影响结果吗(即,使用相同的种子,implementation=1会收敛到与implementation=2相同或不同的结果)吗?
- 我理解为什么这个参数不在
unroll
我已经阅读了很多关于LSTMs 的内容,并且现在我已经决定开始训练,否则我不会吸收更多的假设性知识。我在建模方面也尝试了很多东西,但是我正在训练的网络非常简单,所以似乎没有任何影响结果。
【问题讨论】:
标签: tensorflow keras tf.keras