我正在研究 Keras,尝试深入研究深度学习。
据我所知,由于梯度消失问题,仅堆叠几个密集层就可以有效地阻止反向传播的工作。
我发现有一个预先训练的 VGG-16 神经网络,您可以下载并在其上构建。
这个网络有 16 层,所以我猜,这就是你遇到梯度消失问题的领域。
假设我想在 Keras 中自己训练网络。我该怎么做呢?我是否应该将这些层划分为集群并作为自动编码器独立训练它们,然后在其之上堆叠一个分类器并训练它? Keras 中有内置机制吗?
不,梯度消失问题并不像以前那么普遍,因为几乎所有网络(循环网络除外)都使用 ReLU 激活,而出现此问题的可能性要小得多。
您应该从头开始训练网络并看看它是如何工作的。不要尝试解决您还没有遇到的问题。
阅读有关跳过连接的内容。尽管是激活函数负责此操作,但跳过连接也会产生输入。
残差块中引入的跳过连接允许梯度回流并到达初始层。
我们不使用 Sigmoid 和 Tanh 作为激活函数,这会导致梯度消失问题。如今,我们大多使用基于 RELU 的激活函数来训练深度神经网络模型,以避免此类复杂情况并提高准确性。