gpt4 book ai didi

tensorflow - Keras 和带 dropout 的 LSTM 的 tensorflow 实现之间的区别

转载 作者:行者123 更新时间:2023-12-04 15:55:37 25 4
gpt4 key购买 nike

我正在查看 tensorflow 和 Keras 中 LSTM 单元的文档。特别是,我也想申请辍学。这是我在 Keras 中拥有的,并且想在 tensorflow 中应用相同的 LSTM 单元:

cell = LSTM(num_units_2, return_sequences=True, dropout=dropout, recurrent_dropout=dropout)(net)

因此,我知道我需要在 tensorflow 中使用 tf.nn.rnn_cell.LSTMCellnum_units = num_units_2。其次,我需要一个 DropoutWrapper 作为:

cell = tf.nn.rnn_cell.DropoutWrapper(cell)

现在,我想应用类似于 Keras 代码的 dropoutrecurrent_dropout。因此,我发现 tensorflow 的 dropout 实现将在每个时间步应用不同的 dropout 掩码,除非 variational_recurrent 设置为 True(但我不确定 variational_recurrent 的详细工作原理)。

此外,我不确定 Keras 中的 LSTM 是否也在每个时间步应用不同的 Mask。

其次,我对 output_keep_probstate_keep_prob 之间的区别感到困惑,因为它们都提到了:

output_keep_prob:单位Tensor或0到1之间的 float ,输出保持概率;如果它是常量和 1,则不会添加输​​出丢失...

非常感谢任何帮助!!

最佳答案

变分dropout的作用

据我所知,variational dropout 的主要新颖之处在于对所有展开的步骤使用相同的 dropout mask(如您所说)。

output_keep_probstate_keep_prob 的区别

output_keep_prob 是应用于 LSTM 单元输出 (h) 的丢弃率,其中 state_keep_prob 是应用于 LSTM 状态单元 (c) 的丢弃率.

Keras 中的 Dropout 选择

查看 LSTM source code 中的 _generate_dropout_mask 方法和 its use for the LSTMCell对于 Keras,我认为 Keras LSTM 仅对循环连接(即 self._recurrent_dropout_mask)使用变分循环丢失。但我对此不是 100% 有信心。

关于tensorflow - Keras 和带 dropout 的 LSTM 的 tensorflow 实现之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51824310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com