首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连续几个FC层

连续几个FC层
EN

Stack Overflow用户
提问于 2019-09-13 17:19:49
回答 1查看 72关注 0票数 0

我有一个关于CNN最后一层中完全连接层的作用的问题。

1- FC层充当学习者分类器吗?

2-为什么我们首先使用线性激活函数,然后使用非线性激活函数(例如softmax)?

3-在网络顶部连续添加多个FC层的原因是什么?

代码语言:javascript
复制
M_L = KL.Dense(512, activation='relu')(M_L)
M_L = KL.Dropout(DROPOUT_PROB)(M_L)
M_L = KL.Dense(256, activation='relu')(M_L)
M_L = KL.Dropout(DROPOUT_PROB)(M_L)
M_L = KL.Dense(128, activation='relu')(M_L)
M_L = KL.Dropout(DROPOUT_PROB)(M_L)
M_L = KL.Dense(64, activation='relu')(M_L)
M_L = KL.Dropout(DROPOUT_PROB)(M_L)
M_L = KL.Dense(1, activation='Sigmoid')(M_L)

4-如果我们只这样做,会有什么不同:

代码语言:javascript
复制
M_L = KL.Dense(512, activation='relu')(M_L)
M_L = KL.Dropout(DROPOUT_PROB)(M_L)
M_L = KL.Dense(1, activation='Sigmoid')(M_L)

或者甚至是:

代码语言:javascript
复制
M_L = KL.Dense(1, activation='Sigmoid')(M_L)

我的直觉是,通过添加更多的FC层,我们有更多的可训练参数。因此,对于一个特定的任务,有一些特定的参数将有助于多任务网络。我说的对吗?

5-我们添加几个连续的FC层是否还有其他原因?平滑地减少特征是否有助于训练分类器?

EN

回答 1

Stack Overflow用户

发布于 2019-09-13 17:42:31

Universal Approximation Theorem指出,神经网络只需要一个具有非线性激活函数的隐藏层来对任何函数进行建模。这一单层可能需要有无限数量的过滤器才能完美地模拟函数--但我们可以通过选择足够多的过滤器来获得任意精度的近似值。

所以你是对的,原则上,你的第二个架构将能够近似你的功能。它不会像第一个那样做得很好,但它会做一些事情。

第三种架构非常弱,因为你没有隐藏层。您只有一个带有sigmoid激活函数的过滤器。假设你想要建模的函数被限制在0到1的范围内,这就是为什么你的所有架构中都有一个sigmoid输出层的原因。想必,您有很多输入。在您的第三个体系结构中将发生的所有事情是,您将获得输入的加权线性和,添加一个标量权重(偏差),然后获取结果的sigmoid。这不是很有表现力。在这种架构下,你不能任意接近一个任意函数。

现在,第一个“深度”架构有什么特别之处?通用近似定理说我们只需要一个隐藏层,第二个架构就有这个。所以我们可以把这个单一的隐藏层做得更宽,对吧?万能近似定理并不是说单个隐藏层是对函数建模的最佳方式。通常,我们发现过滤器数量逐渐减少的多层可以产生更好的结果。要获得与第一种体系结构类似的结果,您可能需要在隐藏层中使用10,000个过滤器。

在引入ReLU之前,深度架构的训练速度非常慢,或者被卡住了。现在这已经不是什么大问题了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57920748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档