gpt4 book ai didi

tensorflow - 为什么 tensorflow 和 keras SimpleRNN 层的默认激活为 tanh

转载 作者:行者123 更新时间:2023-12-01 08:51:56 25 4
gpt4 key购买 nike

我想在我正在构建的 tensorflow 模型中为我的简单 RNN 使用 relu 激活。它位于深度卷积网络之上。我正在尝试对一系列图像进行分类。我注意到 keras 和 tensorflow 源代码中的默认激活是简单 RNN 的 tanh。是否有一个原因?使用relu有什么问题吗?似乎 relu 会更好地帮助消除梯度。
nn = tf.nn.rnn_cell.BasicRNNCell(1024, activation = tf.nn.relu)

最佳答案

RNN 可能会遇到梯度爆炸和梯度消失的问题。当要学习的序列很长时,这可能是一种非常微妙的平衡,很容易陷入其中。这两个问题都是由求幂引起的——每一层都乘以权重矩阵和激活的导数,所以如果矩阵大小或激活导数与 1.0 不同,就会有爆炸或消失的趋势。

ReLU 对梯度爆炸问题没有帮助。事实上,它们可能比在权重很大时自然受限的激活函数更糟糕,例如 sigmoid 或 tanh。

ReLU 确实有助于解决梯度消失问题。然而,LSTM 和 GRU 单元的设计也旨在解决相同的问题(处理从许多时间步之外的潜在弱信号中学习),并且这样做非常有效。

对于具有短时间序列的简单 RNN,使用 ReLU 激活应该没有问题。为了解决训练时梯度爆炸的可能性,您可以查看梯度裁剪(将允许范围之外的梯度视为该范围的最小值或最大值)。

关于tensorflow - 为什么 tensorflow 和 keras SimpleRNN 层的默认激活为 tanh,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39180685/

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