gpt4 book ai didi

python - 为什么不是所有的激活函数都相同?

转载 作者:行者123 更新时间:2023-12-01 00:47:05 24 4
gpt4 key购买 nike

这是我从互联网上的某个地方收集到的。这是一个非常简单的 GAN+CNN 建模代码,特别适用于描述符模型,用 keras python3.6 编写。它工作得很好,但我有一些不清楚的地方。

def __init__(self):
self.img_rows = 28
self.img_cols = 28
self.channels = 1

def build_discriminator(self):
img_shape = (self.img_rows, self.img_cols, self.channels)

model = Sequential()
model.add(Conv2D(64,5,5, strides=(2,2)
padding='same', input_shape=img_shape))
model.add(LeakyReLU(0.2))
model.add(Conv2D(128,5,5,strides=(2,2)))
model.add(LeakyReLU(0.2))
model.add(Flatten())
model.add(Dense(256))
model.add(LeakyReLU(0.2))
model.add(Dropout(0.5))
model.add(Dense(1))
model.add(Activation('sigmoid'))
return model

出现了一些激活函数,但为什么它们不完全相同?如果最后的输出是'sigmoid',我认为其余的也最好是相同的函数?中间为什么要用LeakyReLU?谢谢。

最佳答案

我猜他们没有在其余层中使用 sigmoid,因为使用 sigmoid 会带来深度网络中梯度消失的大问题。原因是,sigmoid 函数在零附近两侧“变平”,使得朝向输出层的层倾向于产生非常小的梯度,从而产生很小的学习率,因为宽松地说,更深层的梯度是作为推导链式法则的结果,下层梯度的乘积。因此,如果您只有几个 sigmoid 层,您可能会很幸运,但一旦您链接其中几个,它们就会产生梯度的不稳定。

它太复杂了,我无法在这里一篇文章中解释它,但如果你想更详细地了解它,你可以在 chapter of a online book 中阅读它。 。顺便提一句。这本书真的很棒。值得多读。如果您不知道反向传播是如何工作的,可能要理解这一章,您必须先阅读本书的第一章。

关于python - 为什么不是所有的激活函数都相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56885824/

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